프로그래밍 언어는 사람과 기계 언어 사이의 다리 역할을 한다. 고급언어와 저급언어로 나뉘는데, 고급언어가 사람이 쉽게 이해할 수 있는 언어이다.
자바 프로그램의 개발 과정
자바 소스 파일 작성 - 컴파일러가 바이트 코드 파일 생성 - JVM(자바 가상 기계)을 실행 - JVM이 main() 메소드를 찾아서 블록 실행
자바 프로그램을 개발하기 위해서는 JDK가 설치 되어 있어야 한다.
JRE = JVM(자바 가상 머신)이 동작하는데 필요한 라이브러리들을 담아놓은 것
JDK = JRE + 컴파일러, 디버거 등의 개발도구
* 주석문은 문자열 내부에는 올 수 없다.
int score; // 선언
score = 90; // 초기화
int score = 90; // 선언과 초기화를 동시에
int x, y, z = 70, 80, 90 // 변수의 타입이 같을 경우 콤마를 통해
한꺼번에 선언과 초기화를 할 수 있다
ex. 아래 코드에서 리터럴은 10과 3.14이다
int age;
age = 10;
double price = 3.14;
자동타입변환(묵시적)은 작은 크기의 타입이 큰 크기의 타입에 맞춰 변환되는 것이다.
ex) int타입의 변수와 double타입의 변수를 연산하면 int(4byte)는 double(8byte)으로 자동 변환된다.
강제타입변환(명시적)은 큰 크기의 타입이 작은 크기의 타입으로 변환되는 것이다.
작은 크기의 타입 = (작은 크기의 타입)큰 크기의 타입
괄호에 타입을 명시해주지 않으면 오류가 발생한다.
ex.
double dbnum = 10.5
int num = (int)dbnum // double을 int으로 변환해준다 (결과값 10)
값의 종류 | 기본 타입 | 메모리 사용 크기 | 저장되는 값의 범위 |
---|---|---|---|
정수 | byte | 1byte(8bit) | -128 ~ 127 |
char | 2byte(16bit) | 0 ~ 2^16 | |
short | 2byte(16bit) | -2^15 ~ (2^15 - 1) | |
int | 4byte(32bit) | -2^31 ~ (2^31 - 1) | |
long | 8byte(64bit) | -2^63 ~ (2^63 - 1) | |
실수 | float | 4byte(32bit) | (3.4 X 10^38) ~ (3.4 X 10^38) |
double | 8byte(64bit) | (1.7 X 10^308) ~ (1.7 X 10^308) | |
논리 | boolean | 1byte(8bit) | true, false |
ex.
char p1 = 'T';
char p2 = '\u0049';
char p3 = '문';
char p4 = 75;
long l1 = 10000000; // 에러
long l2 = 10000000l;
ex.
double dvalue2 = 0.1234567890123456789; // 0.12345678901234568
float fvalue2 = 0.1234567890123456789f; // 0.12345679
선언만 하고 초기화 하지 않은 값을 연산에 사용하거나 불러올 경우 오류가 발생한다.
변수끼리 연산을 할 경우 더 큰 타입에 맞춰 결과값이 나온다. 하지만 문자열은 어떤 값을 만나도 문자열이 된다.
ex.
int p1 = 100;
double p2 = 10.99;
boolean p3 = true;
char p4 = 'T';
String p5 = "입니다";
String p6 = "200";
p1 + p2 = int(4byte) + double(8byte) = 110.99 (double)
p4 + 5 = char(2byte) + int(4byte) = p4의 아스키코드가 int로 변환되서 결과값이 나온다.
p1 + p2 + p6 = int + double + 문자열 => 110.99"200" (문자열)
p6 + p2 + p1 = 문자열 + double + int => 20010.99100(문자열)