JAVA 특징
JDK란?
JDK 구성
Java Code가 실행되는 과정
1. 자바 소스파일 작성
2. JDK의 자바 컴파일러가 자바 소스파일을 바이트 코드로 변환
3. JVM의 클래스 로더가 바이트 코드를 받아서 JVM 메모리에 등록 후 필요한 클래스를 로딩
4. 메모리 상에 있는 바이트 코드를 JVM 내부에서 실행 할 수 있는 기계어 형태로 변환 후 실행
변수의 이름은 자바 언어에서 정한 명명 규칙을 따라야 한다
자바의 모든 변수는 중괄호{} 블럭 내에서 선언되고 사용됩니다
메소드 블록 내에서 선언된 변수를 로컬 변수라 하며 로컬 변수는
메소드 블록 내부에서만 사용되고 메소드 실행이 끝나면 메모리에서 자동으로 없어집니다
타입 | 메모리 사용 크키 | 저장되는 값의 허용 범위 |
---|---|---|
byte | 1byte / 8bit | -27 ~ (27-1) / -128 ~ 127 |
short | 2byte / 16it | -215 ~ (215-1) / -32,768 ~ 32767 |
char | 2byte / 16bit | 0 ~ (216-1) / 0 ~ 65535(유니코드) |
int | 4byte / 32bit | -231 ~ (231-1) / -2,147,483,648 ~ 2,147,483,647 |
long | 8byte / 64bit | -263 ~ (263-1) / -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
소스 코드에서 프로그래머에 의해 직접 입력된 값을 리터럴(literal) 이라고 한다
long타입은 수치가 큰 데이터를 다루는 프로그램에서 주로 사용된다
자바 컴파일러는 기본적으로 정수 리터럴을 int 타입으로 간주한다
그래서 정수 리터럴이 int타입의 허용범위를 초과할 경우 컴파일러에게 long타입임을 알려야한다
long 10,000,000,000; ← 컴파일 에러
long 10,000,000,000L;
char타입
문자를 따옴표로 감싼 것을 문자 리터럴이라고 하며 문자 리터럴은 유니코드로 변환되어 저장된다
char var1 = 'A'; // 유니코드 : 65
char var2 = 'B'; // 유니코드 : 66
char var3 = 'a'; // 유니코드 : 97
char var4 = '가'; // 유니코드 : 44032
char var5 = '나'; // 유니코드 : 45208
char변수에 문자가 뿐만 아니라 10진수 또는 16진수 형태로도 유니코드를 저장할 수 있다
char dec = 65;
System.out.println(dec); // A 출력
char hex = 0x0041;
System.out.println(hex); // A 출력
''로 감싼 문자 리터럴은 유니코드로 변환되기 때문에 int타입 변수에도 저장할 수 있다
char타입 변수에 저장하면 자동으로 문자로 매핑되어 출력되지만
int타입 변수에 저장하면 유니코드 자체를 출력한다
char var1 = 'A';
int var2 = 'A';
System.out.println(var1); // A 출력
System.out.println(var2); // 65 출력
String타입
' '로 감싼 문자는 char타입 변수에 저장되어 유니코드로 저장되지만
" "로 감싼 문자는 유니코드로 변환되지 않습니다
이스케이프 문자
이스케이프 문자 | 출력 용도 |
---|---|
\t | 탭만큼 띄움 |
\n | 라인 피드(LP) : 커서를 다음 줄로 이동 |
\r | 캐리지 리턴(CR) : 커서를 현재 줄의 맨 앞으로 이동 |
\" | " 출력 |
\' | ' 출력 |
\\ | \ 출력 |
\u16 | 16진수 유니코드에 해당하는 문자 출력 |
타입 | 메모리 사용 크키 | 저장되는 값의 허용 범위 | 정밀도(소수점 이하 자리) |
---|---|---|---|
float | 4byte / 32bit | (3.4 x 10-38) ~ (3.4 x 1038) | 7자리 |
double | 8byte / 64it | (1.7 x 10-308) ~ (1.7 x 10308) | 15자리 |
자바는 기본 실수 리터럴을 double타입으로 해석하며
실수 리터럴을 float타입 변수에 저장하면 컴파일 에러가 발생한다
float var = 3.14; ← 컴파일 에러
double var = 3.14;
실수 리터럴을 float타입 변수에 저장하려면
리터럴 뒤에 f나 F를 붙여 컴파일러가 float타입임을 알 수 있도록 해야 한다
float var = 3.14; ← 컴파일 에러
float var = 3.14f;
참과 거짓을 의미하는 논리 리터럴로 true와 false를 사용한다
논리 리터럴은 1byte 크기의 boolean타입 변수에
자동 타입 변환 : 값의 허용 범위가 작은 타입이 큰 타입으로 저장될 때 발생
강제 타입 변환 : 값의 허용 범위가 큰 타입을 작은 타입으로 쪼개어 저장하는 것
문자열 결합 연산 : 문자열+연산을 하면 다른 피연산자도 문자열로 변환되어 문자열 결합이 발생
Integer.parseInt() : 문자열을 정수 int타입으로 변환
Double.parseDouble() : 문자열을 실수 double타입으로 변환
정수 타입 변수가 산술 연산식에서 피연산자로 사용되면 int타입 보다 작은 byte, short타입의 변수는 int타입으로 자동 타입 변환되어 연산을 수행합니다
byte타입 변수가 피연산자로 사용된 경우 | int타입 변수가 피연산자로 사용된 경우 |
---|---|
byte x = 10; byte y = 20; int result = x + y; | int x = 10; int y = 20; int result = x + y; |
형식 문자열
형식화된 문자열 | 설명 | 출력 형태 |
---|---|---|
%d %7d %-7d %07d | 정수 7자리 정수, 왼쪽 빈자리 공백 7자리 정수,오른쪽 빈 자리 공백 7자리 정수,왼쪽 빈자리 0 채움 | 123 ___123 123___ 000123 |
%10.2f %-10.2f %010.2f | 소수점 이상 7자리, 소수점 이하 2자리,왼쪽 빈 자리 공백 소수점 이상 7자리, 소수점 이하 2자리, 오른쪽 빈자리 공백 소수점 이상 7자리, 소수점 이하 2자리, 왼쪽 빈자리 0 채움 | ____123.45 123.45____ 0000123.45 |
%s %7s %-7d | 문자열 7자리 문자열, 왼쪽 빈자리 공백 7자리 문자열,오른쪽 빈 자리 공백 | abd ___abc abc___ |
자바는 기본 타입(byte, short, int, long, float, double, boolean)의 값이 동일한지 비교할 때에는 ==를 사용하고, 문자열(String)이 동일한지 비교할 때에는 equals() 메소드를 사용한다