728x90

JAVA Programming 23

JAVA 람다식과 컬렉션 프레임 워크

JAVA 람다식과 컬렉션 프레임 워크 람다식 람다식이란 메서드를 하나의 식으로 표현한 것이다. 함수를 하나의 식으로 표현함으로써 간략하게 표현을 할 수 있고, 메서드의 이름과 반환값이 사라져 익명함수라고 부른다. 람다식은 익명 함수답게 메서드에서 이름과 반환 타입을 제거하고, 매개변수 선언부와 몸통 {} 사이에 ->를 사용한다. 람다식 변환하는 방법 1. return 생략 2. 중괄호 생략 3. 중괄호에 문장 하나면 세미콜론 생략 가능 4. 중괄호에 문장이 return 문일 경우 중괄호 생략 불가능, 세미콜론 생략 불가능 5. 매개변수 타입 생략 6. 매개변수 1개이면 매개변수 괄호 생략 7. 매개변수 타입이 있다면, 괄호 생략 불가능 람다식 변환 예시 예시 1 int max(int a, int b){ ..

JAVA Synchronized 스레드 동기화

JAVA Synchronized 스레드 동기화 스레드 동기화 (Thread Synchronized) 멀티스레드 환경에서 여러 스레드가 하나의 공유자원에 동시 접근하지 못하게 막는 것이다. 공유데이터가 사용되어 동기화가 필요한 부분을 임계영역(critical section)이라고 부르고, 이 임계영역에 synchronized 키워드를 사용해 여러 스레드가 동시에 접근하는 것을 방지하여 동기화시킨다. Synchronized로 지정된 임계영역은 한 스레드가 접근해 사용할 때 lock이 걸림으로써 다른 스레드가 접근 불가능 하도록 해줍니다. 해당 스레드가 임계영역의 코드를 모두 실행한 후 벗어나게 된다면 unlock 상태가 되고, 다른 스레드가 임계영역에 접근하여 다시 lock을 걸고 사용가능하게 된다. 스레드..

JAVA 제네릭 타입 컬렉션 클래스

JAVA 제네릭 타입 컬렉션 클래스 배열 데이터의 삽입/삭제 용이, 동적 할당 용이를 위해 제네릭 타입 컬렉션 클래스 사용 제네릭 : 자료형의 일반화 , 제네릭 타입에 객체만 넣을 수 있다, 엄격한 타입 checking 컬렉션 : 자료구조, 기본 자료형은 wrapper 클래스 사용, 제네릭 기법으로 구현 하나의 클래스를 만들어서 여러 자료형의 배열을 만들고 싶다면 제네릭 클래스로 멤버 추가 제네릭 클래스의 객체가 생성될 때 자료형이 지정되고, 생성 뒤에는 해당 자료형만 담을 수 있음 Iterator : 반복자 객체, 컬렉션에서 요소의 순차 검색을 위한 인터페이스 - 모든 컬렉션은 Iterator를 통해 순차적으로 반복자 객체를 얻을 수 있다. Vector v = new Vector(); Iterator ..

JAVA Exception 사용자 예외처리

JAVA Exception 사용자 예외처리 String getMessage() : 예외 객체가 가지고 있는 에러 메시지 반환 void printStackTrace() : 예외 발생 원인과 경로를 추적하여 콘솔에 표시, 디버깅 목적 사용자 정의 예외에서는 throws 대신 throw를 사용한다. 사용자 정의 예외는 예외 객체를 만든 후에 throw라는 키워드를 이용해 예외를 던져줘야 한다. Exception으로부터 상속받으면 예외 메시지를 담을 수 있는 속성이 있다. public class UserException extends Exception{ private int port = 772; public UserException(String msg){ super(msg); // exception 클래스로부터..

JAVA Exception 예외 처리

JAVA Exception 예외 처리 예외 : 프로그램 실행 중 예기치 못한 비정상적인 상황 예외가 나타나게 방치 후 사후 처리를 한다. try~ catch 문에 의해 직접 처리하고, 메서드 호출 측으로 throws를 명시적으로 써준다. Unchecked Exception : RuntimeException 예외처리 선택 ArithmeticException : 0으로 나누는 경우, 논리 적 예외 ArrayIndexOutOfBoundsException : 잘못된 배열 첨자 예외 NegativeArraySizeException : 배열 선언 시 할당 크기가 음수일 때 예외 ClassCastException : 허용 불가능한 형 변환 예외 NullPointerException : null 값을 갖는 참조 변수로..

JAVA interface 인터페이스 abstract class 추상 클래스

JAVA interface 인터페이스 abstract class 추상 클래스 추상 클래스 : 객체 생성 불가능, 참조 변수 선언은 가능 공통점이 있는 객체들에게 어떤 메서드를 강제 구현시키도록 한다. 상속 시 super 클래스로 존재하고, 추상 메서드를 하나 이상 포함시켜야 한다. 그리고 자식 클래스가 인터페이스 구현을 강제하고 몸체를 구현한다. 추상 클래스 정의와 추상 메서드 정의 모두 abstract 키워드로 한다. 추상 메서드를 재정의하면서 오버 라이딩해 클래스마다 구현을 다르게 한다. 하위 클래스 사이에 공통으로 필요한 메서드를 추상 클래스에 추가한다. 같은 이름, 같은 동작 : 일반 메서드에 구현 같은 이름, 다른 동작 : 추상 메서드에 구현 인터페이스 : 다중 상속이 불가능한 JAVA에서 필요..

JAVA 상속과 다형성

JAVA 상속과 다형성 다형성 : 다양한 형태가 존재한다. 단순하게 만들어 준다는 뜻 활용 : 다양한 참조 변수를 가지는 객체의 배열, 여러 종류의 매개변수 받기 업 캐스팅 : 허용 O, 자동으로 형 변환시켜준다 Person P = new UnivStudent(); Person P = (Person)(new UnivStudent()); // 자동 실행 다운 캐스팅 : 허용 X, 업 캐스팅 후 다운 캐스팅만 허용한다 즉, 원래 내 타입으로 돌아오는 것만 허용한다 -instanceof 연산자로 타입 확인하기 -object 클래스는 모든 클래스의 super 클래스로, 모든 객체를 가리킬 수 있다. -자식 객체의 상속받지 않은 멤버에 접근하기 위해서는 반드시 다운 캐스팅되어야 한다. public class Pe..

JAVA Polymorphism Upcasting Downcasting 자바 다형성 업 캐스팅 다운 캐스팅

JAVA Polymorphism Upcasting Downcasting 자바 다형성 업 캐스팅 다운 캐스팅 다형성 다양한 형태가 존재한다는 의미이다. 다형성을 이용해 프로그래밍을 유연하게 만들 수 있다. 객체의 종류에 따라 달라지는 코드 사용을 프로그래밍 시 구분하지 않고 사용할 수 있도록 해준다. 따라서 프로그래밍이 단순해진다. 참조 변수에 객체를 할당해주는 기본적인 방법은 참조 변수의 자료형과 할당하고자 하는 객체의 자료형이 일치하는 것이다. Upcasting 업 캐스팅 super 클래스형 참조 변수로 sub 클래스 객체를 가리키는 데 사용이 가능하다. Person p = new UnivStudent(); Person p = (Person) (new UnivStudent()); sub 클래스 객체의 ..

JAVA Method Overriding 자바 메서드 오버 라이딩

JAVA Method Overriding 자바 메서드 오버 라이딩 메서드 오버 라이딩 super 클래스에서 상속받은 멤버를 sub 클래스에서 다시 정의하는 것이다. 기존의 멤버를 요구사항에 맞게 수정하는 효과를 가진다. super 클래스에서와 동일한 형태로 정의한다. super 클래스에서 상속된 멤버는 은폐되어 sub 클래스 객체의 메서드에서 은폐된 멤버에 접근하기 위해서는 super 참조 변수를 사용해야 한다. 오버 라이딩과 오버 로딩을 헷갈리지 말자. 구분 오버라이딩(재정의) 오버로딩(다중정의) 접근제한 부모의 멤버 함수보다 자식 멤버 함수의 접근제한이 비슷하거나 더 넓어야 한다. 상관없다. 반환형 같아야 한다. 상관없다. 메서드명 같아야 한다. 같아야 한다. 인자 (타입 / 개수) 같아야 한다. 반..

JAVA 클래스 상속

JAVA 클래스 상속 클래스 상속 관계 자바 프로그래밍에서 클래스를 상속하게 된 배경은 비슷한 동작을 하는 서로 다른 객체들을 위해 포괄적인 속성과 행위를 갖도록 구현하기 위해서이다. 비슷한 내용의 클래스가 반복되면 비효율적이기 때문에 상속을 통해 비슷한 행위에 대해 서로 다른 인터페이스를 가질 수 있다. 상속관계는 특정 클래스가 가지는 일부 속성과 행위를 다른 클래스에게 제공하기 위해 맺는 관계이다. 기존 클래스의 멤버를 그대로 이용하면서 새로운 멤버를 추가할 수 있고, 기존 클래스의 멤버를 수정하여 사용하는 것도 가능하다. 상속의 이점 코드를 재사용하여 유지보수가 용의 하고 비슷한 코드를 다시 사용할 수 있다. 그리고 연관된 일련의 클래스에 대한 규약을 정의해 비슷한 유형을 묶어 클래스 객체 간의 동..

728x90