티스토리 뷰

JAVA

제임스 고슬링(James Gosling)에 의해 탄생한 객체 지향적 프로그래밍 언어

 

■ 특징

1. 객체지향 언어

2. 플랫폼 독립성 (API, JVM)

3. GC

4. 멀티 쓰레드

5. 네트워크 / 분산처리 지원

 

■ 실행 순서

1. 소스 파일(*.java) 작성

2. 컴파일러를 통해 소스 파일을 바이트 코드(*.class)로 변환

3. 자바 가상 머신(JVM)이 바이트 코드를 실행

 

■ JVM 메모리 영역

1. Class Area

1) Static Area로도 불림

2) 멤버의 정보, Type, 상수 등 클래스 코드를 저장

2. Stack Area

1) LIFO(Last In First Out)

2) 메서드 호출 시 관련 정보 저장

3) 메서드 종료 시 메모리 반환 됨

3. Heap Area

1) new 키워드로 생성된 객체의 정보 저장

2) GC를 통한 메모리 반환

3) 세부적으로 Permanent Generation, New Area(Eden + Survivor), Old Area 구역으로 나뉨

4. Native Method Stack Area

 

■ 자료형

1. 기본 자료형 : 값의 복사로 대입(Call by value), '=='연사자 사용시 값을 비교

1) 논리형

- boolean : 1bit, 기본값 false

2) 문자형

- char : 16bit(2byte), 기본값 '\u0000'

3) 정수형

- byte : 8bit(1byte), 기본값 0, -128 ~ 127 표현

- short : 16bit(2byte), 기본값 0, -32,768 ~ 32,767 표현

- int : 32bit(4byte), 기본값 0, -2,147,483,648 ~ 2,147,483,647 표현

- long : 64bit(8byte), 기본값 0L, -9,223,372,036,854,775,808 ~...807 표현

4) 실수형

- float : 32bit(4byte), 기본값 0.0F, -3.4E38(3.4 * 10의 38승) ~ 3.4E38 표현

- double : 64bit(8byte), 기본값 0.0D, -1.7E308(1.7 * 10의 308승)  ~ 1.7E308 표현

2. 객체 자료형 : 레퍼런스(Reference) 참조로 대입(Call by reference), '==' 연산자 사용시 주소값을 비교

 

■ 접근 제한자

1. public : 모든 접근 허용

2. protected : 동일 패키지 또는 상속 받은 class에 한해 접근 허용

3. default : 동일 패키지에 한해 접근 허용

4. private : 동일 class에 한해 접근 허용

 

■ 은닉화(캡슐화)

멤버 필드를 private로 선언 후 getter/setter 메서드를 생성한다.

외부에서는 오로지 getter/setter로만 접근이 가능하도록 하여 멤버 필드로의 간섭을 최소화 한다.

 

■ Overloading

동일한 class내에 메서드 또는 생성자의 이름은 같지만 인자가 다른 경우를 칭함.

인자가 다른다는 것은, 자료형/갯수/순서가 다름을 말한다.

 

■ Overriding

상속 관계에 있는 class에서 부모 class의 메서드를 자식 class에서 재정의 하는 경우를 칭함.

 

■ abstract class(추상 클래스)

1. 생성자를 호출하여 instance 생성 불가

2. 추상 클래스는 반드시 추상 메서드를 가질 필요는 없지만, 추상 메서드를 가진 class는 반드시 추상 클래스로 선언 해야 한다.

3. 추상 메서드는 선언만 가능하며, 메서드 본체는 없다.

   ex) public abstract void test();

4. extends 키워드로 상속 받아야 한다. (다중 상속 불가)

 

■ interface(인터페이스)

1. 생성자를 호출하여 instance 생성 불가

2. 멤버는 상수와 추상 메서드로 구성

1) 멤버 필드 : static final 키워드를 생략 하여도 상수로 간주 된다.

2) 메서드 : abstract 키워드를 생략 할 수 있다.

3. extends 키워드가 아닌 implements 키워드로 interface를 구현 하여야 한다. (다중 구현 가능)

   ex) public class Test implements InterfaceClass {

 

■ Collection

1. Set : 중복 값 허용 불가, index 없음

2. List : 중복 값 허용, index 있음

3. Map : Key(중복 값 허용 불가), Value(중복 값 허용), index 없음

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday