본문 바로가기

인프런 스터디/예제로 공부하는 Java 100 문제풀이 Part.1

자료형, 연산자 - 12: primitive type, 기본형, 바이트, 비트

자바의 Primitive Data Type의 바이트 크기와 비트 크기를 출력하는 코드 구현

 

정수형 타입과 문자형 타입에 대해서만, 각 타입의 최댓값과 최소값도 함께 출력

 

크기 byte short int long char
byte 1 2 4 8 2
bit 8 16 32 48 16

 

public class Java100_variable_003{
	public static void main(String[] args){
    
    	//byte, short, int, long, char
    	System.out.println(Byte.BYTES); //---바이트 계산--;;
        System.out.println(Byte.SIZE);  //---비트 계산--;;
        
	}       
}

1

8

 

public class Java100_variable_003{
	public static void main(String[] args){
    
    	//byte, short, int, long, char
    	System.out.println(Short.BYTES); //---바이트 계산--;;
        System.out.println(Short.SIZE);  //---비트 계산--;;
        
	}       
}

2

16

 

public class Java100_variable_003{
	public static void main(String[] args){
    
    	//byte, short, int, long, char
    	System.out.println("byte\t:"+Byte.BYTES+"(바이트)"+"-->"+Byte.SIZE+"(비트)\t"+Byte.MIN_VALUE+"~"+Byte.MAX_VALUE);
        System.out.println("short\t:"+Short.BYTES+"(바이트)"+"-->"+Short.SIZE+"(비트)\t"+Short.MIN_VALUE+"~"+Short.MAX_VALUE);  
        System.out.println("int\t:"+Integer.BYTES+"(바이트)"+"-->"+Integer.SIZE+"(비트)\t"+Integer.MIN_VALUE+"~"+Integer.MAX_VALUE);
        System.out.println("long\t:"+Long.BYTES+"(바이트)"+"-->"+Long.SIZE+"(비트)\t"+Long.MIN_VALUE+"~"+Long.MAX_VALUE);
        System.out.println("char\t:"+Character.BYTES+"(바이트)"+"-->"+Character.SIZE+"(비트)\t"+Character.MIN_VALUE+"~"+Character.MAX_VALUE);
       
	}       
}

 

 

byte : 1(바이트) --> 8(비트) -128 ~127

short : 2(바이트) --> 16(비트) -32768 ~32767

int : 4(바이트) --> 32(비트) -2147483648 ~2147483647

long : 8(바이트) --> 64(비트) -9223372036854775808 ~9223372036854775807

char : 2(바이트) --> 16(비트) ◦ ~?                          MIN_VALUE, MAX_VALUE 제대로 출력 안됨

 

결과에서 문자형의 최댓값, 최소값이 제대로 출력이 되지 않았는데 그 이유를 설명하고 수정

 

이유: 범위는 숫자로 표기해야 하는데 char는 정수형 타입 아닌, 문자형이기 때문에 int로 바꿔줘야 한다.

 

public class Java100_variable_003{
	public static void main(String[] args){
    
    	//byte, short, int, long, char
    	System.out.println("byte\t:"+Byte.BYTES+"(바이트)"+"-->"+Byte.SIZE+"(비트)\t"+Byte.MIN_VALUE+"~"+Byte.MAX_VALUE);
        System.out.println("short\t:"+Short.BYTES+"(바이트)"+"-->"+Short.SIZE+"(비트)\t"+Short.MIN_VALUE+"~"+Short.MAX_VALUE);  
        System.out.println("int\t:"+Integer.BYTES+"(바이트)"+"-->"+Integer.SIZE+"(비트)\t"+Integer.MIN_VALUE+"~"+Integer.MAX_VALUE);
        System.out.println("long\t:"+Long.BYTES+"(바이트)"+"-->"+Long.SIZE+"(비트)\t"+Long.MIN_VALUE+"~"+Long.MAX_VALUE);
        System.out.println("char\t:"+Character.BYTES+"(바이트)"+"-->"+Character.SIZE+"(비트)\t"+(int)Character.MIN_VALUE+"~"+(int)Character.MAX_VALUE);
       
	}       
}

 

byte : 1(바이트) --> 8(비트) -128 ~127

short : 2(바이트) --> 16(비트) -32768 ~32767

int : 4(바이트) --> 32(비트) -2147483648 ~2147483647

long : 8(바이트) --> 64(비트) -9223372036854775808 ~9223372036854775807

char : 2(바이트) --> 16(비트) 0 ~65535                     제대로 출력

 

같은 크기를 가진 short와 char의 범위가 다르다. short는 정수형이기 때문에 음수형 범위를 가질 수 있는 반면, char는 양수 범위만을 가질 수 있다. 따라서 음수에 해당하는 범위만큼이 양수에 해당한다.