변수
자료를 저장하기 위한 메모리 공간으로 타입에 따라 크기가 달라진다.
기본 자료형(기본 타입)
java에서는 정수에 대한 기본 자료형을 int,실수에 대한 기본 자료형을 double로 한다.
음수표현을 위해 1비트를 뺀 범위로 설정된다.
래퍼 클래스
기본 자료타입(primitive type)을 객체로 다루기 위해서 사용하는 클래스들을 래퍼 클래스(wrapper class)라고 합니다.
형변환
기본자료형은 기본자료형끼리,참조형은 참조형끼리 형 변환이 가능하다.
boolean은 다른 기본형과 호환되지 않는다.
기본형과 참조형의 형 변환을 위해 Wrapper클래스를 사용한다.
묵시적 형변환(타입의 표현범위가 커지는 방향으로 자동으로 변환)
명시적 형변환(사용자가 타입을 명시하여 변환)
형변환 주의점
*(long)(il+1)의 경우 il과 1의 연산 결과 후 형 변환을 한 것이기 때문에 결과가 예상과다르다.미리 il을 형변환을 먼저 시킨후에 연산을 해야한다.
public class Lang_04 {
public static void main(String[] args) {
byte b1 = 10;
byte b2 = 20;
// cannot convert int to byte
byte b3 = b1 + b2;-
//byte b3 = (byte)b1 + b2;
int i1 = 10;
long l1 = 20;
// cannot convert long to int
int i2 = i1 + l1;
//int i2 = i1 + (int)l1;
// cannot convert double to float
float f1 = 10.0;
float f2 = f1 + 20.0;
//float f1 = 10.0f;
//float f2 = f1 + 20.0f;
}
}
변수의 이름
정수
public class IntVariableTest {
public static void main(String[] args) {
//bs=128이면 Type Mismatch가 일어난다.(byte의 범위는 127까지이기 때문)
byte bs=127;
System.out.println(bs);
//12345678900로만 선언하면 literal out of range가 일어난다.(숫자는 기본으로 int로 보는데 최대 숫자를 넘었기 때문)
long iVal=12345678900L;
System.out.println(iVal);
System.out.println(iVal);
}
}
10
1000
실수
public class DoubleTest {
public static void main(String[] args) {
double dnum=3.14;
//3.14로 선언 한다면 java는 실수를 기본으로 double로 인식하여 Type Mismatch가 일어난다.
float fnum=3.14f;
System.out.println(dnum);
//밑수와 지수를 통해 정확하게 0을 표현할 수 없기에 미세한 오차가 발생한다.
double mynum=1;
for(int i=0;i<10000;i++) {
mynum=mynum+0.1;
}
System.out.println(mynum);
}
}
3.14
1001.000000000159
문자
유니코드:세계 모든 언어와 기호에 코드값을 부여한 것으로 2바이트로 표현된다.
public class CharacterTest {
public static void main(String[] args) {
//"A"는 문자열로서 'A'와 다른것이다.
char ch1='A';
System.out.println(ch1);
System.out.println((int)ch1);
char ch2=66;
System.out.println(ch2);
System.out.println((int)ch2);
char ch3='한';
//유니코드는 2바이트 이기때문에 16진법으로 4개의 숫자로 이루어진다.
char ch4='\uD55C';
System.out.println(Integer.toString(ch3,16));
System.out.println(ch3);
System.out.println(ch4);
}
}
A
65
B
66
d55c
한
한
상수
public class ConstantTest {
public static void main(String[] args) {
final int MAX_NUM;
final int MIN_NUM=10;
MAX_NUM=100;
System.out.println(MAX_NUM);
System.out.println(MIN_NUM);
//한번 할당된 상수는 변할 수 없다.
//MAX_NUM=99;
}
}
100
10