TIL) 공부 후 정리 - 자바
작성일 : 2021-04-27
출처 - 이것이 자바다(한빛미디어) 등
자바는 이식성이 높다.
작성된 자바 코드를 컴파일을 통해 바이트 코드로 변환하고 JVM을 통해 실행한다. 따라서 JRE가 설치되어 있는 모든 운영체제에서 실행이 가능하다.
자바는 객체지향언어(OOP : ObjectOrientedProgramming)이다.
OOP의 4가지 특징인 추상화, 캡슐화, 상속, 다형성 기능을 완벽하게 지원하고 있다.
자바는 함수적 스타일 코딩을 지원한다.
자바8부터 람다식을 지원한다.
자바는 메모리를 자동으로 관리한다.
Garbage Collector(GC)가 자동으로 사용하지 않는 객체(Unreachable Object)를 제거시켜준다. 따라서 개발자는 핵심 기능 코드 작성에 집중할 수 있다.
자바는 다양한 운영체제에서 실행되는 프로그램을 개발할 수 있다.
콘솔 프로그램, 클라이언트용 윈도우 애플리케이션, 서버용 웹 애플리케이션, 모바일용 안드로이드 앱 등 거의 모든 곳에서 실행되는 프로그램을 개발할 수 있다.
자바는 멀티 스레드(Multi-Thread)를 쉽게 구현할 수 있다.
하나의 프로그램이 동시에 여러 작업을 처리해야 할 경우와 대용량 작업을 빨리 처리하기 위해 서브 작업으로 분리해서 병렬 처리하기 위해 멀티 스레드를 구현해야 한다. 자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하여 쉽게 멀티 스레드를 구현할 수 있다.
자바는 동적 로딩(Dynamic Loading)을 지원한다.
애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 객체가 필요한 시점에 클래스를 동적 로딩해서 객체를 생성한다. 또한 개발 중 혹은 완료 후 수정 작업을 할 때도 해당 클래스만 수정하면 되므로 전체 애플리케이션을 다시 컴파일할 필요가 없어 유지보수를 빠르고 쉽게 진행할 수 있다.
자바의 주석
범위 주석 //
행 주석 /*~*/
값을 저장할 수 있는 메모리의 공간
자바의 변수 명명 규칙(naming convention)
1. 첫 번째 글자는 문자이거나 '$', '_' 여야 하고 숫자로 시작할 수 없다.(ex : price, $price, _price)
2. 영어 대소문자가 구분된다.
3. 카멜표기법을 사용한다.(ex : maxSpeed, firstName)
4. 길이 제한은 없다.
5. 자바 예약어는 사용할 수 없다.
변수명으로 사용할 수 없는 예약어 목록
분류 | 예약어 |
---|---|
기본 데이터 타입 | boolean, byte, char, short, int, long, float, double |
접근 지정자 | private, protected, public |
클래스 관련 | class, abstract, interface, extends, implements, enum |
객체 관련 | new, instanceof, this, super, null |
메소드 관련 | void, return |
제어문 관련 | if, else, switch, case, default, for, do, while, break, continue |
논리값 | true, false |
예외처리 관련 | try, catch, finally, throw, throws |
기타 | transient, volatile, package, import, synchronized, native, final, static, strictfp, assert |
리터럴
소스 코드 내에서 직접 입력된 값을 리터럴이라고 부른다.
리터럴은 값의 종류에 따라 정수 리터럴, 실수 리터럴, 문자 리터럴, 논리 리터럴로 구분된다.
정수 리터럴
소수점이 없는 정수 : 10진수
0으로 시작하는 리터럴 : 8진수
0x또는 0X로 시작되고 0~9 숫자나 A~F 혹은 a~f로 구성된 리터럴 : 16진수
실수 리터럴
소수점이 있는 리터럴 : 10진수
대문자 E 또는 e가 있는 리터럴 : 10진수 지수와 가수(5E7 = 5 x 10^7)
문자 리터럴
역슬래쉬가 붙은 문자 리터럴은 이스케이프 문자라고도 한다.
이스케이프 문자 | 용도 | 유니코드 |
---|---|---|
'\t' | 수평탭 | 0x0009 |
'\n' | 줄 바꿈 | 0x000a |
'\r' | 리턴 | 0x000d |
'\"' | " | 0x0022 |
'\'' | ' | 0x0027 |
'\' | |0x005c | |
'u16진수' | 16진수에 해당하는 유니코드 | 0x0000~0xffff |
논리 리터럴
true, false
제어문 블록에서 선언된 변수는 해당 제어문 블록 내에서만 사용이 가능하고 블록 밖에서는 사용할 수 없다.
저장할 수 있는 값의 범위를 초과해서 값이 저장될 경우 쓰레기값이 변수에 저장된다.