티스토리 뷰

_객체 지향 언어의 특징

- 상속

  • 코드 재사용으로 인해 코드가 줄어든다
  • 계층 구조

- 추상화

  • 공통의 속성이나 기능을 묶어 이름을 붙이는 것
  • 클래스를 정의하는 것
  • ex) 물고기, 사자, 토끼, 뱀 > 생물

- 캡슐화

  • 행위와 상태를 포장하고 외부에 노출할 것과 감ㅊ물 것을 결정하는 것
  • 외부에 노출되는 모든 것을 인터페이스라고 할 수 있다
- 은닉화
  • 내부 데이터, 내부 연산을 외부에서 접근하지 못하도록 은닉
  • setter, getter를 사용해 변수의 접근, 제어

- 다형성

  • 캡슐화, 상속과 함께 동작함으로써 흐름제어를 단순화
  • 서브클래스의 오버라이드된 메소드가 다른 작업을 할 수 있어 다양한 형태 제공

_자바의 자료형

- primitive 기본자료형

  • 비객체 타입이므로 null값을 가질 수 없음
  • byte, short, int, long, float, double, char, boolean

- reference 참조자료형

  • java.lang.Object를 상속받음
  • Class Type, Interface Type, Array Type
    • String Class : equals()로 비교
    • Wrapper Class : Byte, Short, Integer, Long, Float, Double, Char, Boolean

_오버로딩 / 오버라이딩

- 오버로딩 : 메소드 이름은 같지만 매개변수를 다르게 정의

- 오버라이딩 : 상위클래스가 가진 메소드를 자식클래스에서 재정의하여 사용


_추상클래스 / 인터페이스

- 공통점

  • 선언만 있고 구현내용이 없다
  • 객체를 생성할 수 없다
  • 자식클래스에 무언가 구현시키도록
    • 추상클래스 > extends로 구현
    • 인터페이스 > implements로 구현


- 차이점

  • 추상클래스
    • is-a 관계 (Inheritance)
    • 부모-자식의 상속관계
    • 한 개 이상의 추상 메소드로 이루어짐
    • 일반 메소드를 포함할 수 있음
  • 인터페이스
    • has-a 관계 (Composition)
    • 다형성
    • 모든 메소드가 추상 메소드이고 일반 변수를 가질 수 없음

_Wrapper 클래스

- 산술 연산에는 사용이 되지 않고 값을 저장하는 새로운 객체의 생성 및 참조만 가능

  • Boxing : 기본 자료형 > Wrapper 클래스의 객체
    • ex) Intger age = new Integer(30);
  • Unboxing : 객체 > 기본 자료형
    • ex) int age2 = age.intValue();
- Integer.ValueOf(String) : 산술연산 x (Integer클래스를 리턴)
- Integer.parseInt(String) : 산술연산 o (int형을 리턴)

_Garbage Collection

- garbage : 더이상 사용되지 않는 메모리
- garbage collection : 가비지를회수하여 메모리공간 늘리는것, 이를 수행하는 것이 garbage collector

_Collection / Map

- Collection : Set, List, Queue

- Map : HashMap, TreeMap


_String / StringBuilder / StringBuffer

- String

  • 불변 > +연산이나 concat연산을 이용할때 항상 new로 새로운 객체를 만들어 새로운 메모리공간을 할당
  • 단순하게 읽는 조회연산에서는 빠른편
  • 문자열 연산이 적고 조회가 많을때 멀티쓰레드 환경에서 사용

- StringBuilder 

  • 가변 > 문자열 연산이 자주 있을때 사용하기에 적합
  • 동기화를 지원하지 않으므로 멀티쓰레드 환경에 부적합

- StringBuffer

  • 가변 > 문자열 연산이 자주 있을때 사용하기에 적합
  • 동기화가 가능하므로 thread-safe

_JVM / JDK / JRE

JDK : Java Development Kit

  • 자바 개발을 위한 도구
  • 자바 컴파일러(Javac), 자바 가상머신(JVM) 등 각종 라이브러리를 포함
  • JRE도 포함

JRE : Java Run Environment
  • 자바 실행 환경
  • JVM이 실행되도록 도와주는 역할
  • 개발이 필요없고 실행만을 원하면 JRE만 설치하면 가능

JVM : Java Virtual Machine

  • JVM만 설치되면 운영체제에 상관없이 작동하므로 플랫폼에 독립적
  • java 코드 > JDK 컴파일(.class파일 생성) > JVM > 실행
    • 프로그램이 실행되면 JVM은 OS로부터 메모리를 항당받고 JVM은 용도에 따라 메모리를 여러 영역으로 나누어 관리
    • 자바 컴파일러 (javac)가 자바소스를 읽어 들여 바이트코드로 변환 (.java > .class)
    • class파일들을 jvm메모리영역으로 로딩
    • 로딩된 class파일들은 execution engine을 통해 해석
    • 해석된 바이트코드는 runtime data area에 배치되어 실행


'programming language > java' 카테고리의 다른 글

[java] 시험/면접대비 질문  (0) 2019.10.16
댓글
댓글쓰기 폼