1. 람다식 사용법 익명 함수 (Anonymous function) 모든 메서드는 클래스에 포함되어야 하므로 클래스도 만들어야하고, 객체도 생성해야만 호출이 가능한데, 람다식을 사용하면 메서드의 역할을 대신 할 수 있다 람다식은 메서드의 매개변수로 전달되어지는 것이 가능 반환타입 메서드 이름 (매개변수 선언) { 문장들 } // 아래와 같이 표현 가능 (매개변수 선언) -> { 문장들 } 메서드 람다식 int max (int a, int b) { return a > b ? a : b; } (int a, int b) -> { return a > b ? a : b; } (int a, int b) -> a > b ? a : b (a, b) -> a > b ? a : b void printVar (String ..
다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일시의 타입 체크 (compile-time type check)를 해주는 기능 1. 제네릭 사용법 class Box { T item; void setItem (T item) { this.item = item; } T getItem() { return item; } } 타입 변수 알파벳은 다른 것도 사용 가능 (T : type variable, E : element) 타입 변수가 여러개인 경우에는 콤마로 구분 ( Map ) 형변환이 필요 없음 Box b = new Box(); b.setItem(new Object()); b.setItem("ABC"); String item = (String) b.getItem(); // 형변환이 필요 없음, (St..
1. 스트림 (Stream) / 버퍼 (Buffer) / 채널 (Channel) 기반의 I/O Stream 데이터를 운반하는데 사용되는 연결 통로 단방향 통신만 가능, 하나의 스트림으로 입력과 출력을 동시에 처리할 수 없음 바이트 기반 스트림 (InputStream, OutputStream) 다른 read, write 함수들에서 abstract 함수를 사용하고 있기 때문에 read(), write(int b)가 반드시 구현되어 있어야 사용 가능 inputStream outputStream abstract int read () abstract void write (int b) int read (byte[] b) void write (byte[] b) int read (byte[] b, int off, in..
1. 애노테이션 정의하는 방법 @interface 애너테이션 이름 { 타입 요소이름(); ... } 애너테이션의 요소(element) : 애너테이션 내에 선언된 메서드 @interface TestInfo { int count(); String testedBy(); String[] testTools(); TestType testType(); DateTime testDate(); } @interface DateTime { String yymmdd(); String hhmmss(); } @TestInfo ( count=3,testedBy="Kim", TestTools = {"JUnit", "AutoTester"}, TestType = TestType.FIRST, TestDate = @DateTime(yymmd..
1. enum 정의하는 방법 값 뿐만 아니라 타입 까지 관리한다 열거형 상수간의 비교에는 '==' 사용 가능 '' 비교연산자는 사용할 수 없고, compareTo() 는 사용 가능 enum 열거형이름 { 상수명1, 상수명1, ...} class Card { enum Kind {CLOVER, HEART, DIAMOND, SPADE} enum Value {TWO, THREE, FOUR} final Kind kind; final Value value; } if(Card.Kind.CLOVER == Card.Value.TWO) // false 같은 값이지만 타입이 다름 열거형 상수의 이름 옆에 원하는 값을 적어주면 됨 열거형 상수를 모두 정의한 다음에 다른 멤버들을 추가해야 함, 상수들 마지막에 ';' enum ..

1. Thread 클래스와 Runnable 인터페이스 Thread 클래스 상속받아서 구현하면 다른 클래스를 상속받을 수 없어서 Runnable을 사용하는 것이 일반적 Runnable 을 구현한 클래스의 인스턴스를 생성한 후 생성자 Thread(Runnable target)를 통해서 Runnable 인터페이스를 구현한 인스턴스를 참조하도록 되어있음 start() 호출 해야마 쓰레드가 실행됨 class MyThread extends Thread { public void run() {} } class MyThread implements Runnable { public void run() {} } class ThreadEx1_1 extends Thread { public void run() { for(int i..

1. 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) 예외처리 정의 : 프로그램 실행 시 발생할 수 있는 예외에 대비한 코드를 작성하는 것 예외처리 목적 : 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것 try-catch try 블럭에서 에외가 발생한 경우, 발생한 예외와 일치하는 catch 블럭이 있는지 확인한다 (instanceof 의 연산으로 계산) 일치하는 catch 블럭을 찾으면 그 블럭 내의 문장들을 수행 후, try-catch 구문을 빠져나가서 그 다음문장을 수행한다, 일치하는 catch 블럭이 없으면 예외 처리되지 못한다 try 블럭에서 예외가 발생하지 않은 경우 catch블럭을 거치지 않고 try-catch 문을 빠져나가서 수행..