반응형

📢 [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

+ Recent posts