JAVA

변수,자동형변환,실수형변환 수업정리

연93 2022. 9. 5. 12:56

 

public static void main(String[] args) {
		
		//실수값 저장. float(4), double(8)기본
		//3.14, 3.14d, 3.14D 동일한 double 실수데이터타입 표현. 8byte크기
		double var1 = 3.14;
		//4byte의 기억장소에 3.14 8byte크기의 데이터를 저장(대입) 할 수가없다.
		//float var2 = 3.14;
		float var3 = 3.14F;
		
		//정밀도 테스트
		double var4 = 0.1234567890123456789;
		float var5 = 0.1234567890123456789f;
		
		System.out.println("var1: " + var1);
		System.out.println("var3: " + var3);
		System.out.println("var4: " + var4);
		System.out.println("var5: " + var5);
		
		// e 사용하기
		int var6 = 3000000;
		double var7 = 3e6;
		float var8 = 3e6F;
		double var9 = 2e-3; // 2의10의-3승

		System.out.println("var6: " + var6);
		System.out.println("var7: " + var7);
		System.out.println("var8: " + var8);
		System.out.println("var9: " + var9);

자동형변환

//형변환(Casting)
		//1)자동형변환(Promotion) - 작은 데이터타입의 값으 큰 데이터타입의 변수로 저장시 형변환을 하지않고,자동처리
		
		// 숫자 데이터타입 크기(서열). 정수형 데이터타입보다는 실수형 데이터타입이 더 큰 개념으로 정의되어있다.
		// byte < short(char) < int < long < float < double
		// 작은데이터타입의 값을 큰 데이터타입의 기억장소에 자동으로 형변환과정이 일어나 저장이 이루어진다.
		
		
		// 변수 = 값; 값이 좌측의 변수의 타입에 맞게 형변환이 일치해야 한다.(타입일치)
		
		
		byte byteValue = 10;
		// int > byte
		int intValue /*큰 데이터타입*/ = byteValue; /*작은데이터타입*/ 
		// 자동형변환. byteValue변수의 값을 읽어와서 int형변환하고 대입된다.
		System.out.println(intValue);
		
		char charValue = '가';
		intValue = charValue;
		System.out.println("가의 유니코드=" + intValue);
		
		intValue = 500;
		// intValue변수의 값을 읽어와서, 좌측의 변수 데이터타입 long형으로 변환되어, 값이 대입된다.
		// 타입이 일치되서 대입이된다
		long longValue = (long) intValue (500); // 500L;
		System.out.println(longValue);
		
		intValue = 200;
		double doubleValue = intValue;
		System.out.println(doubleValue);

intValue앞 long 뒤 500은 예시

 

명시적 형변환

//2)명시적형변환(Casting) - 큰데이터타입의 값을 작은 데이터타입의 변수로 저장시 형변환작업을 명시적으로 해야 한다.
		// 우측이 큰 데이터타입 일경우에는 자동형변환이 발생되지않는다.
		// = 기준으로 우측의 값이 좌측의 타입과 일치를 하고, 대입된다.(타입일치)
		int intValue = 44032;
		// 정수값을 문자로 표현할 경우에는 char데이터 타입을 변환시켜야한다.
		// 정수값범위 : 0~65535 사용해야한다
		char charValue = (char) intValue;
		System.out.println(charValue);
		
		long longValue = 500;
		intValue = (int) longValue;
		System.out.println(intValue);
		
		// 실수값을 정수값으로 저장시 반올림없이 소수 부분은 제거된다
		double doubleValue = 3.14;
		intValue = (int) doubleValue; // int형으로 변환
		System.out.println(intValue);

범위확인

// 기본데이터타입(원시타입) 8개.
		// 기본데이터타입의 값의 범위
		
		System.out.println("byte: " + Byte.MIN_VALUE + " ~ " + Byte.MAX_VALUE);
		System.out.println("byte: " + integer.MIN_VALUE + " ~ " + integer.MAX_VALUE);
		
		int i = 128;
		// i변수의 값이 -128보다 작거나 i의 변수의 값이 127보다 큰경우
		if((i<Byte.MIN_VALUE) || (i>Byte.MAX_VALUE)) {
			System.out.println("byte타입으로 변환 불가능");
		}else {
			byte b = (byte)i;
			System.out.println(b);