람다식이란 메서드를 하나의 식(Expression)으로 표현한 것 메서드의 이름과 반환값이 없어지므로 ‘익명함수’ 라고도 한다. (참고) 익명 클래스 클래스 선언과 객체 생성을 동시에 함 단 한번만 사용되며 오직 하나의 객체만 생성 new 조상클래스이름() { // 멤버 선언 } new 구현인터페이스이름(){ // 멤버 선언 } 생성자를 가질 수 없음. public class InnerEx6 { Object iv = new Object() { void method() { } }; static Object cv = new Object() { void method() { } }; void myMethod() { Object lv = new Object() { void method() { } }; } } 위 ..
제네릭 다양한 타입의 객체를 다루는 메서드나 클래스에 컴파일 시의 타입체크를 해주는 기능 컴파일러가 타입체크 해주기 때문에 type-safe한 프로그래밍 가능 e.g. List list = new ArrayList(); 로 선언하면 list에 integer가 들어가는 코드를 방지할 수 있음. 객체의 타입을 미리 명시해줌으로써 번거로운 형변환을 생략할 수 있음 제네릭 이전에는 다양한 종류의 타입을 다루는 메소드의 매개변수, 리턴타입으로 Object 타입의 참조변수를 사용한 뒤 형변환하는 방식을 활용. //제네릭 이전 class Box { Object item; void setItem(Object item) { this.item = item; } public Object getItem() { return i..
스트림 (Stream) / 버퍼 (Buffer) / 채널 (Channel) 기반의 I/O 스트림 데이터를 운반하는데 사용하는 연결통로 단방향 통신만 가능 입력, 출력을 동시에 하려면 입력스트림, 출력스트림 총 2개의 스트림이 필요 먼저 보낸 데이터를 먼저 받음 (First In First Out) 버퍼 스트림의 입출력 효율을 높이기 위해 사용 한 바이트씩 입출력하는 것보다 한 번에 여러 바이트를 입출력하는 것이 빠름 BufferedInputStream read() 호출 시 입력소스로부터 버퍼 크기만큼 데이터를 읽어다 자신 내부 버퍼에 저장. 외부 입력소스로부터 읽는 것보다 내부 버퍼로 부터 읽는 것이 훨씬 빠름 BufferedOutputStream write() 호출시 내부 버퍼에 출력할 내용을 저장. ..
애노테이션 프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것 주석과 마찬가지로 프로그래밍 언어에 영향을 미치지 않으면서도 다른 프로그램에게 유용한 정보 제공 표준 애노테이션 JDK에서 제공 주로 컴파일러를 위한 것 @Override 메서드 앞에만 붙일 수 있음 조상 클래스의 메소드를 오버라이딩한다는 것을 컴파일러에게 알려줌 오버라이딩 할 때 메소드 이름을 잘못 적는 휴먼폴트를 방지할 수 있음 @Deprecated 더 이상 사용되지 않는 필드나 메서드에 붙임 다른 것으로 대체되었으니 사용하지 않을 것을 권함 컴파일시 deprecated된 대상을 사용하고 있다고 에러메시지 띄움 @FunctionalInterface 함수형 인터페이스를 올바르게 선언했는지 즉, 추상메서드가..
enum 관련 있는 상수를 편리하게 선언하기 위한 것. 상수 정의할 때 유용 typesafe enum : 값이 같더라도 타입이 다르면 컴파일 에러 발생 enum 정의하는 방법 enum 열거형이름 { 상수명1, 상수명2, ... } 사용 방법 열거형이름.상수명 ‘==‘ 사용 가능 비교 연산자 사용불가. compareTo() 로 비교 switch문 조건식에 사용 가능 enum이 제공하는 메소드 (values()와 valueOf()) values() : 열거형의 모든 상수를 배열에 담아 반환 Direction[] directions = Direction.values(); for (Direction direction : directions) { System.out.printf("%s=%d%n", directio..
자바에서 예외 처리 방법 (try, catch, throw, throws, finally) 예외처리 목적 프로그램의 비정상적인 종료를 막고, 정상적인 실행상태 유지 try-catch try{ //예외 발생 가능한 코드 } catch (Exception1 e1) { //Exception1 발생시 처리 코드 } catch (Exception2 e2) { } catch (ExceptionN eN) { } public class ExceptionEx5 { public static void main(String[] args) { System.out.println(1); System.out.println(2); try { System.out.println(3); System.out.println(0 / 0); Sy..
인터페이스 일종의 추상 클래스 추상클래스와 달리 일반 메서드를 멤버로 가질 수 없음. -JDK1.8부터 등장한 static 메서드, default 메서드는 예외 인터페이스 정의하는 방법 interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메서드이름(파라미터목록); } 모든 멤버변수는 public static final 로 선언. (생략 가능) 모든 메서드는 public abstract 로 선언. (생략 가능) JDK1.8부터 등장한 static 메서드, default 메서드는 예외 인터페이스 구현하는 방법 인터페이스는 추상클래스와 마찬가지로 그 자체로 인스턴스를 생성할 수 없음 자신이 정의한 추상메서드의 body를 만들어주는 클래스를..
자바 상속의 특징 상속 기존 클래스를 재사용해서 새로운 클래스를 작성하는 것. extends : 조상 클래스를 “확장” 한다. 조상 클래스가 변경되면 자손 클래스는 자동적으로 영향을 받지만 자손 클래스가 변경되는 것은 조상 클래스에 아무런 영향을 주지 못한다. 생성자와 초기화 블록은 상속되지 않는다. 멤버만 상속된다. C++ 와 달리, 단일 상속만 가능하다. 다중 상속 시, 클래스간 관계가 매우 복잡해짐. 서로 다른 클래스로부터 상속 받은 멤버의 이름이 같을 경우, 구별할 수 있는 방법이 없음. 포함관계를 이용해서 다중상속과 유사한 효과를 낼 수 있음. super 키워드 자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조할 때 사용되는 참조변수. 일반적으로, 조상 클래스로부터 상속 받은 멤버 또한 자..
클래스 클래스 정의하는 방법 클래스 : 객체 != 붕어빵틀 : 붕어빵 흔히 클래스와 객체 간 관계를 붕어빵틀 - 붕어빵 에 비유한다. 하지만 이는 적절한 비유가 아니다. 붕어빵틀 붕어빵 = new 붕어빵틀(); 붕어빵 틀을 하나 만들었더니 붕어빵이 되었다? 뭔가 이상하다. 클래스는 ‘분류’를 위한 개념으로 이해하는 것이 적절하다. 사람 김연아 = new 사람(); 클래스는 같은 특성을 지닌 여러 객체를 총칭하는 집합의 개념이다. 클래스 정의 방법 속성 : 객체들이 가진 공통된 특성 중, 명사로 표현되는 특성. 메서드 : 객체들이 가진 공통된 특성 중, 동사로 표현되는 특성. modifiers private default (접근 지시자를 명시하지 않는 경우) : 동일한 패키지 내에서만 객체 생성 가능 pr..
선택문 (조건문) if문 if (조건식){ //조건식이 참일 때 수행할 코드 } 자바에서 조건식의 결과는 반드시 boolean 이어야 함을 기억하자. switch문 if문은 경우의 수가 많아지면 그만큼 if-else문과 조건식이 늘어나서 코드가 복잡해진다. switch문을 사용하면 이런 문제를 해결할 수 있다. switch(조건식) { case 값1 : // code break; case 값2 : // code break; default : //code } break 를 생략하면 다른 break문을 만나거나 switch문의 ‘}’ block을 만날 때까지 있는 코드를 모두 수행한다는 점을 주의하자. -> 이런 human fault를 방지하기 위해 Java 12 부터 switch operator를 제공한다..
- Total
- Today
- Yesterday
- gracefulshutdown
- 백기선
- 프록시
- 객체지향
- 프록시패턴
- c++
- 디자인패턴
- 데코레이터패턴
- SOLID
- 프로그래머스
- ec2
- 코딩테스트
- 예외처리
- 자바스터디
- 스프링
- 토비
- 템플릿콜백
- 자바
- 카카오
- 메서드레퍼런스
- OOP
- 토비의봄TV
- BOJ
- java
- 코테
- provider
- 서비스추상화
- 김영한
- AOP
- 토비의스프링
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |