🟪 Backend-Java

4. 형변환 (자동 형변환, 강제 형변환 예제)

Hesper03 2024. 6. 26. 00:13

🔵 형변환

  • 데이터의 Type이 변하는것
    ex) 정수(byte) 와 실수(float)는 같은 숫자 타입이므로 형변환이 가능함
  • 문자(char)와 문자열(string)은 문자를 다루지만, 단순 데이터  형변환이 불가능함 (문자열은 class 형태라서 불가능)
  • 문자(char)와 정수(int)는 형변환이 가능함
    -> 문자(char)는 '단일문자' 이고 (A~Z,1~0,특수기호.. 모든 자판글자) , 이는 정수로 변경이 가능(아스키 코드 표 참고)
기억하기 [변수의 데이터 타입]
1. 정수형 :  byte, short, int, long (1,2,3,8byte 순으로 메모리 사용)

-byte: 8비트, 값의 범위: -128 ~ 127
-short : 16비트, 값의 범위 : -32,768~ 37,767
-int: 32비트, 값의 범위: -2^31 ~ 2^31 - 1 (약 -2,147,483,648 ~ 2,147,483,647)
-long: 64비트, 값의 범위: -2^63 ~ 2^63 - 1 (약 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807)

2. 실수 형 : float, double(float의 데이터가 double로 바꿀때 부정확하기 때문에 <2.9999...
+float의 값 끝에는 f를 붙혀야 하기 때문에 거의 double 사용)
(ex. float flNum = 33.12f;)
3. 문자 : char (ex. 'A') 
4. 문자열(문장) : String ("AAA"< 문장이 아니라 한 문자 "A" 여도 문자열의 성질을 띔)*혼자 class타
5. 논리형 : boolean (true / false, 참과 거짓을 저장 할 수 있음)

 

아스키 코드표 (일부)

 

 

  • 형변환의 종류
    1. 자동 형변환 : 작은 데이터 타입이 더 큰 데이터 타입으로 자동으로 변환되는 것
    (데이터 손실의 위험이 없기 때문에 자동으로 수행 됨)
    ex) int(약 20억)를 long(약 20억 이상) 에 할당할때 : 자동 형변환 : a=b 로 표기함

    2. 강제 형변환: 더 큰 데이터 타입을 더 작은 데이터 타입으로 변환되는 것
    (데이터 손실의 위험이 있어서 명시적으로 표기 하기 때문에 (byte)와 같이 (변환할것)이 붙음)
    ex) int를 byte에 할당할때 : 강제 형변환 : b=(byte)c 로 표

 

✏️ 자동 형변환 / 강제 형변환 예시1 (정수끼리 형변환)

package exam03;

public class ChangeTypeExam {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int num01 = 15;
		long lyNum01 = 20;
		byte byNum01 = 0;
		
		//자동 형변환
		/* 오른쪽 걸 왼쪽으로 넣는다 즉, (int=약2억 / long=2억 훨배 초과)
		 * 가능
		 */
		lyNum01 = num01;
		
		//강제 형변환
		/* 오른쪽 걸 왼쪽으로 넣는다 즉, (int=약2억 / byte=약 127이하)
		 * 불가능 하므로 (byte)를 기재하여 byte로 바꾸어준다
		 */ 
		byNum01 = (byte)num01;
		
		int num02 = 130;
		byte byNum02 = 0;
		
		byNum02 = (byte)num02;
		
	}

}

 

 

 


✏️ 자동 형변환 / 강제 형변환 예시2 (정수 / 단일문자)

package exam03;

public class ChangeCharExam02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		char ch = 'E';
		int num = 90;
		
		int chToNum = 0;
		char intToCh = ' ';
		//공백에 스페이스 넣어야함
		
		// int 와 char는 자동형변환
		// char --> int 로 변경할때는 자동형변환 가능
		chToNum = ch;
		// int --> char 변경할 때는 강제형변환
		// int(약 20억)가 char보다 큼 (int인 num을 char로 강제형변환 시켜줌)
		intToCh = (char)num;
		
		System.out.println(chToNum);
		System.out.println(intToCh);
		//결과 :  'E'의 ASCII 코드 값인 69가 chToNum에 저장
		//결과 :   num을 강제로(char) 형변환 . ASCII 코드에서 90에 해당하는 문자,'Z'가 표기

}

 

 

 

🔰tip. 이클립스 한 줄 복사 : Ctrl + alt + downarrow

 

 

고딩때 봤던 아스키 코드표.. 오랫만에 본 날.