클래스 변수와 인스턴스 변수클래스 변수 (static 변수) : 클래스별로 유일인스턴스 변수 : 인스턴스가 소유하는 변수순서상위 클래스 초기화객체가 상속받은 클래스가 있다면, 상위 클래스의 생성자가 먼저 호출됨.이 과정에서 상위 클래스의 멤버 변수들이 초기화 됨.멤버 변수 선언과 함께 초기화클래스 내에서 선언과 동시에 초기화된 멤버 변수들은 상위 클래스의 생성자 호출 직후, 하위 클래스의 생성자가 실행되기 전에 초기화됨.인스턴스 초기화 블록클래스 내에 인스턴스 초기화 블록(중괄호 {} 로 감싼 코드 블록) 이 존재하는 경우, 멤버 변수 선언과 함께 초기화된 후에 실행됨.생성자 클래스의 생성자가 실행됨. 생성자는 모든 멤버 변수와 초기화 블록이 처리된 후에 해당 클래스의 인스턴스를 마무리 짓기 위해 실행됨..
란?여러 스레드가 동시에 실행되어 효율성과 성능을 높이는 프로그래밍 기법Java 는 멀티스레딩을 지원하기 위해 여러 클래스와 인터페이스를 제공함.1. Thread 클래스와 Runnable 인터페이스Thread 클래스 상속 : Thread 클래스를 상속받아 run 메소드를 오버라이드 함.Runnable 인터페이스 구현 : Runnable 인터페이스를 구현하고 인스턴스를 Thread 객체에 전달하여 스레드를 생성.2. Thread 생명주기New : Thread 가 생성되었지만 아직 시작되지 않은 상태Runnable : 실행 가능한 상태로, 스케줄러가 이 스레드를 선택해 실행시킬 수 있음.Blocked : 동기화된 블록에 의해 접근이 제한되어 실행을 기다리는 상태Waiting : 다른 스레드의 특정 활동이 완..
== 연산자객체의 주소값을 비교, 같은 값이라도 주소값이 다르면 false 가 나옴.== 은 int 와 같은 prime type 을 비교할 때 사용됨.equals(), hashCode란?Object 클래스에 정의되어 있음. 그렇기 때문에 Java 의 모든 객체는 Object 클래스에 정의된 equals 와 hashCode 함수를 상속 받고 있음.equals()public boolean equals(Object object) { if(this == anObject) { return true; }}기본적으로 2개의 객체가 동일한지 검사하기 위해 사용됨.equals 가 구현된 방법은 2개의 객체가 참조하는 것이 동일한지를 확인하는 것이며, 이는 동일성을 비교하는 것임.동일한 메모리 주소..
Checked and Unchecked ExceptionJAVa 에서 예외 처리 메커니즘은 크게 두 가지 유형의 예외로 나눌 수 있음.Checked ExcetpionUnchecked ExceptionChecked ExceptionRuntimeException 의 하위 클래스가 아니면서 Exception 클래스의 하위 클래스들임.체크 예외의 특징은 반드시 에러 처리를 해야하는 특징(try/catch or throw) 을 가지고 있음.FileNotFoundExceptionClassNotFoundException이런 것들이 있음.Unchecked ExceptionRuntimeException 의 하위 클래스Checked Exception 과는 달리 에러 처리를 강제하지 않음. Runtime 중에 발생할 수 있..
Generic 이란자바 Generic 은 Generic 타입 및 메소드를 정의하고 사용할 수 있는 언어적 특성그냥 List 여기서 꺽새에 들어가는 녀석이라고 보면 됨.파라미터 타입이나 리턴 타입에 대한 정의를 외부로 미룸타입에 대해 유연성과 안정성을 확보함.런타임 환경에 아무런 영향이 없는 컴파일 시점의 전처리 기술장점제네릭을 사용하면 잘못된 타입을 들어올 수 있는 것을 컴파일 단계에서 방지할 수 있음.클래스 외부에서 타입을 지정해주기 때문에 관리하기 편함.코드의 재사용성이 높아짐.왜 사용함?컴파일 타임에 타입 검사를 통해 예외 방지컴파일러는 코드에서 잘못 사용된 타입 때문에 발생하는 문제점을 제거하기 위해 제네릭 코드에 대해 강한 타입 체크를 함.실행 시 타입 에러가 나는 것보다는 컴파일 시에 미리 타..
란?Java Reflection 이란 객체를 통해 클래스의 정보를 분석해 내는 프로그램 기법을 말함.Runtime 시에 Class, Interface, Field 및 method 에 대한 정보를 동적으로 가져오고 조작할 수 있는 기능을 의미함.사용클래스 정보 얻기Class 의 이름, Super Class, Interface, Field, Method 목록 등을 가져올 수 있음.객체 생성Class 의 생성자를 호출하여 객체를 생성할 수 있음.Field 및 method 접근객체의 필드값을 가져오거나 설정하고, 메소드를 호출할 수 있음.동적 클래스 로딩런타임에 존재하지 않는 클래스를 동적으로 로드하고 사용할 수 있음.어떨 때 사용해야함?Java 에서 런타임 시 동적으로 코드를 분석하고 수정해야 하는 경우에 유..
WrapperJAVA 에서는 기본 타입을 객체로 다루기 위해 Wrapper 클래스를 제공함.int -> Integerdouble -> Double...Wrapper 클래스는 해당 기본 타입의 값을 가지고 있고, 객체로 다양한 기능을 수행할 수 있음.래퍼 클래스를 이용하면 각 타입에 해당하는 데이터를 파라미터로 전달받아 해당 값을 가지는 객체로 만들어준다.Integer num1 = new Integer(5);Integer num1 = 5;// 이렇게 2개로 표현 가능Double num2 = new Double(1.11);Double num2 = 1.11;Boxing & UnBoxingBoxing기본 타입을 Wrapper 클래스 객체로 변환하는 과정int -> Integer 로 변환하는 과정임.UnBoxin..
LinkedHashSetHashSet 의 순서를 유지하는 버전Set 인터페이스의 구현클래스HashSet 의 모든 특성을 가지면서도, 추가적으로 요소가 추가된 순서대로 반복할 수 있따는 특징이 있음.LinkedHashSet 이 내부적으로 연결 리스트(Linked List) 를 사용하여 요소의 삽입 순서를 기록하기 때문특징중복이 안됨LinkedHashSet 은 동일한 요소의 중복 저장을 허용하지 않음. 각 요소는 집합 내에서 유일삽입 순서 유지요소가 추가된 순서대로 요소를 반복할 수 있음. LinkedHashSet 이 요소를 내부적으로 어떤 순서로 저장하고 있는지를 나타냄.빠른 접근 속도HashSet 과 마찬가지로, LinkedHashSet 도 해시 테이블을 기반으로 하므로, 요소의 추가, 삭제, 검색 작업..
Comment