[java] 형변환

심심이·2024년 1월 18일
0

java

목록 보기
7/46

=== 데이터형 변환하기 ===
1. 자동 형변환(묵시적 형변환)
--> 데이터타입의 크기가 작은 것에서 크기가 큰쪽으로는 자동적으로 형변환이 발생된다.

  • 정수타입 : byte(1byte) --> short(2byte) --> int(4byte) --> long(8byte)
  • 실수타입 : float(4byte) --> double(8byte)
    (*long보다 float이 더 크다)
    --> 정수타입은 실수타입으로 자동형변환 발생한다.
  • char(2byte)타입 : int형으로 자동형변환 발생한다.
  1. 강제 형변환(casting)
    --> 데이터타입의 크기가 큰 것을 작은 것으로 강제적으로 형변환시키는 것을 말한다.
    크기가 작은타입 = (크기가 작은 타입) 크기가 큰 타입

실수를 정수로 바꿀 때는 강제적으로 형변환된다. 소수부는 무조건 절삭을 해버리고 정수만 나온다. ex) 정수 = (정수)실수

** 강제 형변환할때 값이 달라지는 것은 아니다. 값은 그대로 남아있으나 강제 형변환에 의해 절삭만 되는 것. 그 자체의 값은 남아있음(자바에서 변수는 직접 대입해서 값을 변경하지 않는 이상 변경되지 않음)

byte no1 = 100; // byte => 1byte -128 ~ 127
short sh = no1; // short => 2byte -32,768 ~ 32,767
	

위 코드를 컴퓨터적 시선으로 보면 short sh = (short)no1; 와 같음. 자동적으로 형변환 하기 때문에 (short)를 넣을 필요가 없다.

강제 형변환 예시


		double db2 = 1.23456789;
		System.out.println("db2 => " + db2);
		
		float ft2 = (float)db2;
		System.out.println("ft2 => " + ft2);
		
		short sh2 = (short)in2;
		System.out.println("sh2 => " + sh2);
		
		in2 = 50000;
		sh2 = (short)in2;
		System.out.println("sh2 => " + sh2);
		// sh2 => -15536 엉뚱한 값이 나옴.
		
		long ln2 = 3000000000L; // long 8byte
		float ft3 = ln2; // 실수와 정수는 실수가 더 크기 때문에 자동 형변환된다.
		// 위의 것은 float ft3 = (float)ln2; 와 같은 것이다.
		
		System.out.println("ln2 => ln2" + ln2);
		//ln2 => 3000000000
		System.out.println("ft3 => ft3" + ft3);
		//ft3 => 3.0E9 는 3.0 * 10의9승이다.
		
		double db3 = 123.98765;
		int in3 = (int)db3;
		System.out.println("db3 => db3" + db3); // db3 => 123.98765
		System.out.println("in3 => in3" + in3); // in3 => 123
profile
개발하는 심심이

0개의 댓글

관련 채용 정보