자바 기초(2) 데이터타입 변환

HaeHae·2021년 6월 9일
0

자바 기초 다지기

목록 보기
2/2
post-thumbnail

여기저기 구멍난 자바 지식을 메우기 위해 정리하는 자바 기초 포스팅. 다시 정리하는 개념, 헷갈리는 개념, 새로 안 개념 위주. 이것이 자바다(신용권, 한빛미디어) 참고, 1편 떼기 목표.

타입 변환

뜻 : 데이터 타입을 다른 타입으로 변환하는 것을 의미한다. 데이터타입이 같지 않지만 함께 대입해야 하는 경우 등에 활용할 수 있다.

자동변환

큰 크기 타입 = 작은 크기 타입

ex. long a = int b; -> b가 long으로 자동변환됨
단, byte 타입은 char로 자동 변환 불가. byte는 음수를 가질 수 있지만 char는 음수를 가질 수 없기 때문.

강제변환

큰 타입을 작은 타입에 강제 저장하고 싶다면 강제 변환해줘야 한다.

작은 타입 = (작은 타입) 큰 타입

int intValue = 103000;
byte byteValue = (byte) intValue;
4 byte짜리의 int를 byte로 강제 변환한 코드. 큰 데이터타입을 작은 데이터타입으로 쪼개 저장하는 것을 강제 타입 변환 (캐스팅) 이라고 한다.

강제 타입 변환에서 주의해야 하는 부분
값을 변환할 때 값의 손실이 발생하면 안 되기 때문에, 완전하게 값이 보존되는지 확인할 필요가 있다.

데이터타입 크기별 정리 (단위 : 바이트)

byte(1) < short(2) <int(4) < long(8) <float(4) < double(8)
참고 : 표현할 수 있는 값의 크기가 float이 더 커서 long보다 크다고 표현했다.

변환 불가 케이스

char를 short로 변환할 수 없다.

    	char charValue ='A';
    	int intValue =10;
    	
    	 int intValue1 = byteValue;(가능)
         int intValue2 = charValue;(가능)
         short shortValue = charValue2;(컴파일에러)
   	byte byteValue =10;
    	char charValue ='A';
    	double doubleValue =5.7;
    	String strValue = "A";
    	int intValue =10;
    	  
          작은거 = (작은거) 큰거 
        or 큰거 = 작은거

	double var =(double) intValue; (가능)
    	double var = intValue; (가능)
    	byte var2 =(byte) intValue; (가능)
    	int var3 = (int) doubleValue; (가능) 
   
   	char var4 = char(strValue);
    	char var5 = strValue.charAt(0);
        
        String 타입은 char로 강제변환할 수 없으며,
        char에 대입하고 싶을 경우 
        charAt(index)를 활용하면 된다. 

주의사항

char에 숫자를 더하면 유니코드로 변환된다.
예컨대

char charValue1 = 'A';
char charValue2 = 1; 
int intValue = charValue1+ charValue2 ;

결과 
intValue ==66 (유니코드 문자)
(char)intValue == 'B'
profile
고양이랑 살려고 개발하는 사람

0개의 댓글