JAVA/기본 (17) 썸네일형 리스트형 Stream 스트림 Stream 스트림 // 기본타입 stream : IntStream, LongStream, DoubleStream // 참조타입 stream : Stream List list = List.of("java", "spring", "css", "react"); // stream 알기 전 반복문 for(String item : list){ System.out.println(item); } // stream 사용 Stream stream = list.stream(); // 메소드 // 중간연산 : intermediate operation, 중간에 여러번 // 최종연산 : terminal operation, 마지막에 한번 // 특징 // 최종연산 후 stream 재사용 불가 stream.count(); stream.. Stack 스택(LIFO) / Queue 큐(FIFO) Stack 스택(LIFO) - 후입선출 (나중에 들어간게 먼저 나온다) // stack (LIFO: Last In First Out) // 주요 메소드 // push : 마지막에 아이템 추가 // pop : 마지막 아이템 꺼내기 // peek : 마지막 아이템 보기 // 인스턴스 생성 Stack stack = new Stack(); stack.push(9); stack.push(8); stack.push(3); // 크기 System.out.println(stack.size()); // 3 // stack.pop(); System.out.println("pop: " + stack.pop()); // 마지막에 push된 3 // pop 해서 2개 System.out.println(stack.size());.. 제네릭스 <> (Generic) 제네릭스 (Generic) public class C02generic { public static void main(String[] args) { //이렇게 인스턴스 생성할때 타입을 결정할 수 있음 //타입은 참조 타입만 가능 MyClass02 o1 = new MyClass02(); MyClass02 o2 = new MyClass02(); //이렇게 뒤에는 생략 가능 MyClass02 o3 = new MyClass02(); //기본타입은 안됨 MyClass02 o4 = new MyClass02(); } } //generic type // 아직 어떤 타입으로 받을지 결정을 못했을 때 로 우선 둔다. //는 타입 파라미터 (TypeParameter) 라고 한다. // 타입파라미터 작성 규칙 // 대문자 한글.. 람다식 (lambda expression) 추상 메소드가 하나인 인터페이스의 익명 클래스 객체를 만들 때 사용가능 public class C01lambda { public static void main(String[] args) { //람다식 MyInterface01 o1 = (x, y) -> { System.out.println(x + y + "람다"); }; //익명 클래스 MyInterface01 o2 = new MyInterface01() { @Override public void method1(int x, int y) { System.out.println(x + y); } }; } } //lambda expression(람다식) //추상 메소드가 하나인 인터페이스의 익명 클래스 객체를 만들 때 사용가능 //추상 메소드가 하나인 인터페이스.. 인터페이스(interface) implements 인터페이스는 static final 필드 public 추상 메소드 (몸통이 없는 instance 메소드) public default 메소드 (몸통이 있는 instance 메소드) private 메소드(몸통이 있는 instace 메소드) static public 메소드 static private 메소드 생성자x 또한 여러 인터페이스를 implements 가능하다(관련 내용은 아래에서) 인터페이스 멤버 변수는 public static final 로만 지정가능하며 생략 가능합니다 . 또한 멤버 함수는 public abstract final 로만 선언 가능합니다. 실제 변수를 int value = 0; 으로 선언하는 경우 public static final가 생략되어 있는 형태입니다. 상위 클래스에서 defau.. 추상 클래스 (abstract class) / 추상 메소드 (abstract method) 추상 클래스 (abstract class) 자식 클래스는 인스턴스 시키고 싶은데 부모껀 하기 싫다 *추상 클래스를 상속하면 자식도 추상 클래스 이기 때문에 인스턴스 생성이 안되고 인스턴스화 시키고 싶은 경우 재정의(override) 해야지만 가능하다. 추상 메소드 (abstract method) 추상 메소드 : 내용이 없고 형태만 있는 메소드 *추상 메소드를 가진 클래스는 무조건 추상 클래스가 되어야 한다. 추상 클래스는 인터페이스와 다르게 추상메소드를 구현 해야만 하진 않고 사용하고 싶거나 재정의하고 싶은 추상메소드를 골라서 구현 해야함 인터페이스는 무조건 부모가 가진 추상메소드를 모두 구현(재정의해서) 해야함 그래서 보통 abstract은 미완성된 설계도라고 보면되고 interface는 설계도가 완성.. 상속 Extends / 오버라이딩(overriding) / 오버로딩(Overloading) 상속 1. 부모 클래스의 자원을 자식 클래스에서 사용 가능 2. 두 클래스 관계를 설정하는 것 3. 물려주는 쪽이 부모 클래스가 되고 받는 쪽이 자식 클래스가 된다. 4. extends 키워드를 사용한다. 5. 부모 클래스 = super 클래스 = 기초클래스: 멤버를 물려준다. 자식클래스 = 하위 클래스 = sub클래스: 멤버를 물려 받는다. 6. 객체 생성시 찾아가는 생성자는 부모 생성자를 먼저 찾아간다. 7. 상속 받은 내용을 재정의할 수 있다. (오버라이딩) public class Car_Extends {//부모 클래스 String name; int speed, price; public void setOption(int speed, int price) { this.speed = speed; this.. 생성자(Constructor) 생성자 객체가 만들어 질 때 초기값을 위해 실행되는 (특별한)메소드 객체가 생성될 때 자동으로 호출되는 메소드 생성자 안에는 값을 초기화 하는 코드가 있다. 생성자 안에서 변수를 선언하지 않는다. 생성자의 이름은 반드시 클래스 이름과 동일해야 한다. 생성자는 메소드이므로 여러 개 작성 가능(오버로딩) 생성자는 new 연산자를 통해 객체를 만들 때 한 번만 호출된다. 생성자는 리턴타입이 없다. 매개변수(전달인수)와 실행코드가 없는 단순 생성자를 '기본 생성자'라 한다. 또는 디폴트 생성자라고도 한다. 기본 생성자는 조건에 따라 자동으로 생성되기도 하고 직접 입력 해줘야 한다. 자동생성: 생성자가 하나도 없을 때 컴파일러가 자동으로 생성한다. 생성자가 하나라도 있을 경우 기본 생성자는 자동으로 생성되지 않는.. 이전 1 2 3 다음