본문 바로가기
JAVA

[JAVA]변수 타입2

by KhyeonS 2022. 7. 19.

변수타입에 대해 알아보자.


 자료형(기본자료형) valueType
논리형 : boolean - 1bit(기본값 False)
문자형 : char - 2byte (기본값 \u0000 or 0) => 0 ~ 65,535
정수형 : byte - 1byte (기본값 0)  => -128 ~ 127
              short - 2byte (기본값 0) => -32,768 ~ 32,767
        int - 4byte (기본값 0) => -21,4748,3648 ~ 21,4748,3647(21억)
   # 일반적으로 가장 많이 쓰이는 자료형.
  그러나 주식시장이나 증권 관련 분야에서는 long을 사용하는 경우가 더 많음
        long - 8byte (기본값 0) => -9,223,372,036,854,775,808 ~ (900경)
실수형 : float - 4byte (기본값 0.0)
        double - 8byte(기본값 0.0)


논리형 : true, false
boolean b = true;
System.out.println("b의 값: " +b);
boolean b =1; // 오류

package java02;

public class blog {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		boolean b = true;
		System.out.println("b의 값 : " + b);
	}

}

문자형 : ''안에 하나의 문자만 기술
char ch1 = 'A'; // "A"는 오류 
System.out.println("ch = " + ch1); // A output
char ch2 = '\u0041' ; // UNICODE로 A 의미 
System.out.println("ch = " + ch2); // A output 
char ch3 = 65 + 1;  // 66의 의미이지만 ch3은 문자이다
System.out.println("ch3 = " + ch3); // B가 출력

package java02;

public class blog {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		char ch='A';
		System.out.println("ch = " + ch); 
		char ch2='\u0041';
		System.out.println("ch2 = " + ch2); 
		char ch3=65+1;
		System.out.println("ch2 = " + ch3);
	}

}

정수형
byte b = 128; // byte 자료형은 1Byte이므로 2^8/2로 오류가 난다.
byte b = 127; 
short s = 32767;  // 2Byte이므로 가능 
int n = 550;      // 4Byte이므로 충분히 가능 
System.out.println("b = " + b); // 결과 127
System.out.println("s = " + s); // 결과 32767
System.out.println("n = " + n); // 결과 550

package java02;

public class blog {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
	    byte b = 127;
		short s = 32767; 
		int n = 550;
		System.out.println("b = " + b); //결과 127
		System.out.println("s = " + s); //결과 32767
		System.out.println("n = " + n); //결과 550
	}

}

실수형
float f = 3.14f; // java에서 실수는 기본적으로 double형으로 인식하기 때문에

float 자료형을 사용한다는 것을 3.14f식으로 명시해야 한다.
OR 
float f = (float)3.14; 식으로 명시적 형변화(casting)해주어야 한다.
double d = 3.14; // 이것으로 충분함
float f1, f2;
f1 = 3.14f;
f2 = 150; // 실수에 정수 대입이 가능. 실수에 정수를 대입하면 자동 150.0으로 실수화 됨
OR float = (float)150; // 같은 4Byte의 타입 
System.out.println("f1 = " + f1); // 결과 3.14 
System.out.println("f2 = " + f2); // 결과 150.0

package java02;

public class blog {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		float f1, f2; 
		f1 = 3.14f;
		f2 = 150f; 
		System.out.println("f1 = " + f1); //결과 3.14 
		System.out.println("f2 = " + f2); //결과 150.0
	}

}


●형변환●

 

캐스팅(형 변환)
double 8byte, int 4byte, char 2byte, long 8byte, float 4byte, short 2byte, boolean 1bit 자료형의 크기가 있는데 
1) 프로모션(promotion)
 - 큰 자료형에 작은 자료형을 대입하는 것(형변환이 자동으로 이루어짐)
double d = 100.5;
int n = 200; 
    d = n;
System.out.println("d = " + d); // 200.0 
char c = 'A';
long l = 100; 
     l = c;  // ASCII는 'A'라는 문자를 65라는 숫자로 인식!!!  
System.out.println("l = " + l); // 65 

package java02;

public class blog {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		double d = 100.5; //8byte
	 int n = 200; //4byte
	 d = n;
	 System.out.println("d = " + d); //결과 : 200.
	}

}

결과 값

 

package java02;

public class blog {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		char c = 'A'; //2byte
		long l = 100;//8byte
		l = c;
		System.out.println("l = " + l); //결과 65
	}

}



2) 디모션(de(pro)motion)
 - 작은 자료 형에 큰 자료 형을 대입하는 것으로 자동으로 이루어지지 않기 때문에 수동으로 형변환을 지정해주어야 함
char c = 'B';  // ASCII로 66
int n = c + 1; // ASCII로 67(문자로 'C')
    c = n;     // n은 정수(4B), c는 문자(2B)이므로 큰 수가 작은 수에                // 들어감=> 오류!!
    c = (char)n; // OK
System.out.println("c = " + c);

float f = 5.5;  // 오류!!! 그냥 소수(실수)을 넣으면 자바는 double 형으로 인식!!!
float f = (float)5.5 OR 5.5f;
double d = 5.5; // NO error!!!
int n = 0;
    n = (int)f; // n = f;는 오류!!! int와 float는 같은 4B이지만 형이 다름!!
                // 수행될 수도 있지만 오류가 뜰 수 있어서 형변환을 해준다.
System.out.println("n = " + n);   

package java02;

public class blog {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		char c = 'B'; // c: 2byte
		int n = c + 1; //n : 4 byte è 프로모션 캐스팅
		c = (char)n; 
		System.out.println("c = " + c);
	}

}

package java02;

public class blog {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		float f = 5.5f;
		int n = 0;
		n = (int)f; // f : 4 byte, n : 4 byte 
		System.out.println("n = " + n);
	}

}

 

'JAVA' 카테고리의 다른 글

[JAVA]문제 풀이 1  (0) 2022.07.20
[JAVA]연산자  (0) 2022.07.20
[JAVA] 변수 타입 1  (0) 2022.07.19
[JAVA] 실습 07-19  (0) 2022.07.18
[Java] Java란?  (0) 2022.07.18

댓글