• Chapter 02. 변수와 자료형

    2021. 4. 1.

    by. Sooming_

    컴퓨터에서 자료 표현

     

    2진수

    0과 1로만 데이터를 저장

    bit(1비트) : 컴퓨터가 표현하는 데이터의 최소 단위로 2진수 하나의 값을 저장할 수 있는 메모리의 크기

    byte(바이트) : 1byte = 8bit

     

     

    2진수, 8진수, 16진수 표현하기

     

    n비트로 나타낼 수 있는 수의 범위 : 2^n

     

    package ch02;
    
    public class NumberType {
    
    	public static void main(String[] args) {
    		
    		int num = 10;
    		int bNum = 0B1010;
    		int oNum = 012;
    		int xNum = 0xA;
    		
    		System.out.println(num);
    		System.out.println(bNum);
    		System.out.println(oNum);
    		System.out.println(xNum);
    	}
    }

     

     

     

    변수 (Variable)

    표현하려는 수에 맞는 데이터 타입을 이용하여 변수를 선언

     

    변수 선언은 자료형과 변수 이름으로 선언

    선언과 동시에 초기화 가능

    package ch02;
    
    public class VariableDate {
    
    	public static void main(String[] args) {
    		int month, year;
    		month = 4;
    		
    		int day = 1;
    		System.out.println(month);
    		System.out.println(day);
    	}
    }
    

     

    • 변수 이름은 영문자, 숫자, 그리고 특수문자 중에는 $와 _만 사용 가능
    • 변수 이름의 시작은 숫자로 생성 불가능
    • 자바에서 사용하는 예약어로 생성 불가능
    • 변수 이름은 용도에 맞고 가독성 좋게 생성

     

     

     

     

    자료형 (Data type)

     

    변수와 메모리

    변수를 선언하면 해당되는 자료형의 크기 만큼 메모리가 할당

    변수는 할당된 메모리를 가리키는 이름

    Ex) int month = 4; // 4바이트 정수형 메모리가 month 라는 이름으로 할당

     

     

    기본 자료형

      정수형 실수형 문자형 논리형
    1byte byte     boolean
    2byte short   char  
    4byte int float    
    8byte long double    

     

     

    정수 자료형

    자료형 바이트 크기 범위
    byte 1 -2^7 ~ 2^7 - 1
    short 2 -2^15 ~ 2^15 - 1
    int 3 -2^31 ~ 2^31 - 1
    long 4 -2^63 ~ 2^63 - 1

    byte / short

    • byte : 바이트 단위의 정보를 저장하거나 통신할때 주로 사용
    • short : 2바이트로 자료 표현

     

    int

    • 자바에서 정수의 기본 자료형
    • 프로그램에서 사용하는 모든 숫자(리터럴)은 int로 저장됨
    • 컴퓨터에서 정수로 연산을 할 때 4바이트 단위로 처리하는 것이 가장 효율적

     

    long

    • 자바에서 정수를 표현하는 가장 큰 단위의 자료형
    • 숫자의 뒤에 알파벳 L 또는 l 을 써서 long 형임을 표시
          long lnum = 12345678900;    // X
          long lNum = 12345678900L;    // O
    • 32 비트를 초과하는 숫자는 long 자료형으로 처리

     

    package ch02;
    
    public class VariableType {
    
    	public static void main(String[] args) {
    		
    		byte bNum = 127;
    		
    		System.out.println(bNum);
    		
    		int num = 123456789;
    		long lNum = 1234567890L;
    		System.out.println(lNum);
    	}
    }

     

     

     

     

    실수 자료형

    float / double

    package ch02;
    
    public class DoubleFloat {
    
    	public static void main(String[] args) {
    		double dNum = 3.14;
    		float fNum = 3.14F;
    		
    		System.out.println(dNum);
    		System.out.println(fNum);
    	}
    }

    자바에서 실수의 기본 타입은 double

     

     

    부동 소수점 방식

    지수부와 가수부로 표현

    Ex) 0.1 = 1.0 * 10^(-1)

     

    정규화 : 가수가 밑수보다 작은 한 자리까지 가수로 표현 되는 것

    컴퓨터에서는 밑수가 2 이므로 정규화하면 가수부분의 첫 번째 자리 숫자는 항상 1
    Ex) 1.m * 2^(-n)

     

    package ch02;
    
    public class DoubleTest {
    
    	public static void main(String[] args) {
    
    		double dNum = 1;
    		
    		for(int i = 0; i<10000; i++) {
    			dNum = dNum + 0.1;
    		}
    		System.out.println(dNum);
    	}
    }
    

    부동 소수점 방식에서는 지수부가 0을 표현할 수 없기 때문에 약간의 오차가 발생할 수 있음

     

     

    문자형

    문자도 정수로 표현 가능

    어떤 문자를 특정 정수 값으로 정의

    Ex) 'A' = 65

     

     

    자바는 문자 표현 시 UNICODE를 사용

    UTF-16 인코딩을 사용

     

     

    문자형 변수

    문자 데이터 타입 char ch = 'A';

    숫자를 사용하여 문자 출력 가능 : char ch2 = 65;

     

    package ch02;
    
    public class CharacterVariable {
    
    	public static void main(String[] args) {
    		
    		char ch1 = 'A';
    		System.out.println(ch1);
    		System.out.println((int)ch1);
    		
    		char ch2 = 66;
    		System.out.println(ch2);
    		System.out.println((char)ch2);
    		
    		int ch3 = 67;
    		System.out.println(ch3);
    		System.out.println((char)ch3);
    		
    		char k = '가';
    		char ch ='\uAC00';
    		
    		System.out.println(k);
    		System.out.println(ch);
    	}
    }

     

     

    논리형

    True(참), False(거짓) 두 가지만 나타냄

     

    package ch02;
    
    public class BooleanTest {
    
    	public static void main(String[] args) {
    		
    		boolean isStudying = false;
    		System.out.println(isStudying);
    	}
    }

     

     

    지역 변수 자료형 없이 사용하기

    추론 가능한 변수에 대한 자료형을 선언하지 않음 (var)

    한번 선언하여 추론 된 변수는 다른 타입의 값을 대입 할 수 없음

    지역 변수만 사용 가능

     

     package ch02;
    
    public class LocalVariableType {
    
    	public static void main(String[] args) {
    
    		var a = 99;
    		var b = 99.0;
    		var str = "paka";
    		
    		System.out.println(a);
    		System.out.println(b);
    		System.out.println(str);
    		
    		str = "hello";
            System.out.println(str);
    	}
    }

    댓글