📢 [JAVA] 리터럴과 형변환
📋 상수와 리터럴
▼ 상수 (constant) : 변하지 않는 수 (ex : final 등으로 사용)
▼ 리터럴 (literal) : 프로그램에서 사용하는 모든 숫자,값,논리 값 (ex : 숫자,10,3.14,true,'a')
모든 리터럴은 상수 풀 (constant pool)에 저장되어 있음
상수풀에 저장될 때 정수는 int (4byte) , 실수는 double (8byte) 로 저장됨.
12,345,678,900L 이렇게 큰 숫자의 경우 L 을 붙여 8바이트로 처리됨
위의 각 숫자들이 상수풀에 저장되어있다가 프로그래밍을 할때 바로 꺼내와서 사용
📋 형변환
▼ 서로 다른 자료형의 값이 대입되는 경우 형 변환이 일어남
묵시적 형 변환 (implicit type conversion):
작은수에서 큰 수로 덜 정밀한 수에서 더 정밀한 수로 대입되는 경우
명시적 형 변환 (explicit type conversion) :
변환 되는 자료 형을 명시 자료의 손실이 발생 할 수 있음
묵시적 형 변환의 경우 별다른 코딩은 안해도 되고 명시적 형변환의 경우 캐스팅을 해줘야함
💻코드1
byte bNum = 10;
int iNum = bNum;
// byte 는 1바이트 int 는 4바이트 따라서 묵시적 형변환
System.out.println(bNum); //10
System.out.println(iNum); //10
int iNum2 = 2;
float fNum = iNum2;
// 정수형보다 실수형이 더 크기떄문에 별도의 캐스팅없이 묵시적 형변환
System.out.println(fNum); //20.0
double dNum;
dNum = fNum + iNum;
//fNum은 float 형이기 때문에 iNum 은 float 형식으로 형변환 1번
//dNum (double형)으로 값을 넣어주기 떄문에 fNum , iNum (double)형으로 형변환 2번
System.out.println(dNum); //30.0
int iNum = 1000;
byte bNum = (byte) il
System.out.println(bNum); //-24
// byte는 2의-7승(-127) ~ 2의 7승(127) 까지 표현하기 때문에
// iNum의 데이터가 손실이 된다. 명시적 형변환
double dNum = 1.2;
float fNum = 0.9F;
int iNum1 = (int)dNum1 + (int)fNum;
int iNum2 = (int)(dNum1 + fNum);
System.out.println(iNum1); //1
System.out.println(iNum2); //2
// 실수를 int로 형변환 하면 소수점이하 자리는 버림이 된다.
// 따라서 iNum1 은 1+0 이고 iNum2 는 2.1 에서 소수점을 버리게 된다.
📋 진법 변환
▼2진수 , 8진수 , 16진수 를 각 진법으로 쓰면
2진수 0b~~~ (ex: 0b1010)
8진수 0~~~~ (ex: 012)
16진수 0x~~~~ (ex: 0xA)
(대문자 소문자는 가리지 않습니다.)
💻코드2
int num = 10;
int bnum = 0b1010;
int onum = 012;
int xnum = 0xA;
System.out.println(num ); //10
System.out.println(bnum ); //10
System.out.println(onum ); //10
System.out.println(xnum ); //10
위처럼 진법변환을 프로그래밍 코딩을 할수 있다.
'프로그래밍 > Java' 카테고리의 다른 글
JAVA - 인스턴스, 힙 메모리 (1) | 2022.01.01 |
---|---|
Java - 라운드 로빈 (Round Robin) 예제 (0) | 2019.05.29 |