ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 이것이 자바다 | 2강_변수와 타입
    JAVA/이것이 자바다 2022. 1. 9. 01:07

     

    변수

    • 첫 번째 글자는 문자이거나 '$','_'이어야 하고 숫자로 시작할 수 없다.

    실수 리터럴

    • 소수점이 있는 리터럴은 10진수 실수로 간주한다.
    • E나 e가 있는 리터럴은 10진수 지수와 가수로 간주하다. (ex. 0.12E-5 = 0.12 x 10^-5)
    package chap02;
    
    public class chap02_1 {     //클래스 블록
    	public static void main(String[] args) {     //메소드 블록
    		//10을 변수 value의 초기값으로 저장
    		int value = 10;
    		
    		//변수 value 값을 읽고 10을 더하는 산술 연산을 수행
    		//연산의 결과값을 변수 result의 초기값으로 저장
    		int result = value + 10;
    		
    		//변수 result 값을 읽고 콘솔에 출력
    		System.out.println(result);
    		}
    }

       메소드 블록 내에 선언된 변수 = 로컬 변수

     

    package chap02;
    
    public class chap02_2{
    	public static void main(String[] args) {
    		char c1 = 'A';		//문자를 직접 저장
    		char c2 = 65;		//10진수로 저장
    		char c3 = '\u0041'; //16진수로 저장
    		
    		char c4 = '가';		//문자를 직접 저장
    		char c5 = 44032;	//10진수로 저장
    		char c6 = '\uac00';	//16진수로 저장
    		
    		int uniCode = c1;	//유니코드 얻기
    		
    		System.out.println(c1);
    		System.out.println(c2);
    		System.out.println(c3);
    		System.out.println(c4);
    		System.out.println(c5);
    		System.out.println(c6);
    		System.out.println(uniCode);
    		}
    	}

     

     

     

    String

    • 클래스 타입
    • 참조 변수
    char c = '';       //컴파일 에러
    char c = ' ';      //정상작동
    String str = "";   //정상작동

     

    int 타입

      • 자바에서는 정수 연산을 4byte로 처리한다.
    package chap02;
    
    public class chap02_3{
    	public static void main(String[] args) {
    		int var1 = 10;		//10진수로 저장
    		int var2 = 012;		//8진수로 저장
    		int var3 = 0xA;		//16진수로 저장
    		
    		System.out.println(var1);
    		System.out.println(var2);
    		System.out.println(var3);
    	}
    }

          -> 출력값은 모두 10

     

     

    long 타입

    • 메모리 사용 크기: 8byte
    • 초기화할 때: 정수값 뒤에 'l'이나 'L'을 붙일 수 있음 (-> 컴파일러에게 8byte 정수 데이터임을 알려주기 위함 | *int 범위 넘어서는 경우 필수)
      package chap02;
      
      public class chap02_4{
      	public static void main(String[] args) {
      		long var1 = 10;
      		long var2 = 20L;
      		//long var3 = 1000000000000;		//컴파일 에러
      		long var4 = 1000000000000L;
      		
      		System.out.println(var1);
      		System.out.println(var2);
      		System.out.println(var4);
      	}
      }​

     

     

    실수타입(float, double)

    자바는 실수 리터럴의 기본 타입을 double로 간주한다.

          -> 실수 리터럴을 float 타입 변수에 저장하려면 리터럴 뒤에 'f'나 'F'를 붙여야 한다.

    double var1 = 3.14;
    float var2 = 3.14;		//컴파일 에러
    float var3 = 3.14F;

    정수 리터럴에 10의 지수를 나타내는 E 또는 e를 포함하고 있으면 실수 타입 변수에 저장해야 한다.

    int var6 = 3000000;		//3000000
    double var7 = 3e6;		//3000000
    float var8 = 3e6f;		//3000000
    double var9 = 2e-3;		//0.002

     

    boolean 타입

    package chap02;
    
    public class chap02_5 {
    	public static void main(String[] args) {
    		boolean stop = true;
    		if(stop) {
    			System.out.println("중지합니다.");
    			} else {
    			System.out.println("시작합니다.");
    		}
    	}
    }

     

     

    타입 변환

    1. 자동 타입 변환작은 크기를 가지는 타입이 큰 크기를 가지는 타입에 저장될 때 발생한다.
      byte byteValue = 10;
      int intValue = byteValue;	//자동으로 타입 변환이 일어난다.
      
      int intValue = 200;
      double doubleValue = intValue;	//200.0

    byte(1) < short(2) < int(4) < long(8) < float(4) < double(8)

          -자동 타입 변환 예시

    package chap02;
    
    public class chap02_6 {
    	public static void main(String[] args) {
    		byte byteValue = 10;
    		int intValue = byteValue;		//int ← byte
    		System.out.println(intValue);
    		
    		char charValue = '가';
    		intValue = charValue;			//int ← char
    		System.out.println("가의 유니코드=" + intValue);
    		
    		intValue = 500;
    		long longValue = intValue;		//long ← int
    		System.out.println(longValue);
    		
    		intValue = 200;
    		double doubleValue = intValue;	//double ← int
    		System.out.println(doubleValue);
    	}
    }

       2. 강제 타입 변환

          int타입을 byte타입으로 변환할 때:

          int 타입을 4개로 쪼갠 다음, 끝에 있는 1byte만 byte 타입 변수에 저장 가능   ->   원래 int 값은 보존되지 않음

          하지만, int값이 끝 1byte로만 표현이 가능하다면 byte 타입으로 변환해도 원래 값 유지 가능

    package chap02;
    
    public class chap02_7 {
    	public static void main(String[] args) {
    		int intValue = 44032;
    		char charValue = (char) intValue;
    		System.out.println(charValue);		//가
    		
    		long longValue = 500;
    		intValue = (int) longValue;
    		System.out.println(intValue);		//500
    		
    		double doubleValue = 3.14;
    		intValue = (int) doubleValue;
    		System.out.println(intValue);		//3
    	}
    }
    /*
     * 변환으로 인한 데이터 손실이 발생하지 않도록 한다.
     */
    
    
    package chap02;
    
    public class chap02_8 {
    	public static void main(String[] args) {
    		int i = 128;
    		
    		if( (i<Byte.MIN_VALUE) || (i>Byte.MAX_VALUE) ) {		//(i<-128)||(i>127)과 동일
    			System.out.println("byte 타입으로 변환할 수 없습니다.");
    			System.out.println("값을 다시 확인해 주세요");
    		} else {
    			byte b = (byte) i;
    			System.out.println(b);
    		}
    	}
    }

     

    기본타입 최댓값 상수 최솟값 상수
    byte Byte.MAX_VALUE Byte.MIN_VALUE
    short Short.MAX_VALUE Short.MIN_VALUE
    int Integer.MAX_VALUE Integer.MIN_VALUE
    long Long.MAX_VALUE Long.MIN_VALUE
    float Float.MAX_VALUE Float.MIN_VALUE
    double Double.MAX_VALUE Double.MIN_VALUE

     

    *(+, -, *, /, %)연산의 경우 int 타입 변수에 저장해야 함

Designed by Tistory.