자바의 특징
- 객체지향 언어이다.
- 캡슐화, 상속, 다형성이 적용된 언어이다.
- jvm 위에서 동작하기 때문에 운영체제에 독립적이다.
- GarbageCollector를 통한 자동적인 메모리 관리가 가능하다.
- 타입에 엄격하며 제약이 많다.
JVM의 역할
스택기반 동작, java byte code를 os에 맞게 컴파일 하는 역할, GarbageCollector를 이용하여 자동적인 메모리 관리
Java 컴파일 과정
- 개발자가 확장자가 java인 파일을 생성한다.
- build를 진행
- java compiler의 javac명령어를 통해 .class 즉, 바이트코드를 생성
- class loader를 통해서 jvm 메모리 내로 로드한다.
- 실행 엔진을 통해 컴퓨터가 읽을 수 있는 기계어로 해석
final을 이용하여 변수를 선언할 시 이점
- 변수의 값이 바뀌지 않기 때문에 보안성이 높다.
- GC 성능이 향상 된다.
접근 제한자
- public - 접근 제한이 없다.
- protected - 해당 패키지 내, 다른 패키지에서 상속받아 자식 클래스에서 접근 가능
- default - 해당 패키지에서만 접근 가능하다.
- private - 해당 클래스에서만 접근 가능하다.
System.out.println()을 현업에서 사용하지 않는 이유
- log 레벨을 설정할 수 없다.
- 파일로 저장할 수 없고, 휘발성이다.
- 인자로 전달한 문자열만 출력하기 때문에 자세한 정보를 얻기 힘들다.
- synchronized 키워드가 붙어있기 때문에 멀티스레드 환경에서 A 쓰레드가 메서드를 사용하고 있으면 해당 메서드는 잠긴다.