minghxx.blog
  • 자바의 정석 25~27강 증감 부호 형변환 사칙연산자, 자동형변환, 산술변환
    2023년 04월 27일 21시 01분 32초에 업로드 된 글입니다.
    작성자: 민발자
    728x90

    자바의 정석 기초편(2020최신)

    ch 3-5,6 증감 연산자, 부호 연산자

     

    1. 증감연산자

    증가 : 피연산자의 값을 1 증가

    감소 : 피연산자의 값을 1 감소

    전위형 참조되기 전 증가 ++i
    후위형 참조된 후 증가 i++

     

    2. 부호 연산자

    - 는 피연산자 부호 반대호 변경

    + 아무것도 안함


     

     

    ch3-7,8 형변환 연산자

     

    1. 형변환

    변수 또는 상수의 타입을 다른 타입으로 변환

    (타입)피연산자

    변환 수식 결과
    int → char (char)65 'A'
    char → int (int)'A' 65
    float  int (int)1.6f 1
    int float (float)10 10.0f

     

    문자는 유니코드 문자표에 의해 int로 변환

    2. 자동 형변환

    값을 범위가 더 큰 타입에 저장할 때, 값손실이 없을 때 컴파일러가 자동으로 형변환

    float에 int를 저장하는 경우 가능

    int에 float를 저장하는 경우 값손실이 일어나 자동 형변환 불가

    값손실 예시
    기존값을 최대한 보존할 수 있는 타입으로 자동 형변환

    public static void main(String[] args) {
    		byte b = 100;
    		// byte b = (byte)100;
    		// 100은 리터럴이고 byte타입의 범위(-128~127)의 값이기 떄문에 자동 형변환
    		
    		int i = 100;
    		// byte b2 = i;
    		// i라는 변수를 넣어주면 byte 범위에 있더라도 값이 변할수있기 때문에 자동형변환 불가
    		byte b2 = (byte)i;
    	}

     


     

    ch 3-9,10 사칙 연산자, 산술 변환

     

    1. 사칙 연산자

    값 손실이 있으면 형변환 해주기

     

    2. 산술 변환

    연산 전에 피연산자의 타입을 일치시키는 것

    1) 두 피연산자의 타입을 같에 일치(값손실을 최소화하기 위해 큰타입으로)

    long + int → long + long = long

    float + int  float + float = float

    double + float   double + double = double

    2) 피연산자의 타입이 int보다 작은 타입이면 int로 변환

    byte + short int + int = int

    char + short  int + int = int

    public static void main(String args[]) { 
    		char ca = '2';
    		char cb = '0';
    		System.out.println(ca-cb);
    		// 2 = 50 0 = 48 -> 50-48
    		// 문자에서 숫자로 변경할 때 '2' -'0'을 빼는 이유
            
            
            int a = 1_000_000;    // 1,000,000   1백만 10의 6제곱
    		int b = 2_000_000;    // 2,000,000   2백만 10의 6제곱
    
    		long c = a * b;       
    		System.out.println("현변환 전 " + c);
    		// a * b = 2,000,000,000,000 ? 10의 12제곱
    		// int의 범위는 10의 9제곱 오버플로우 발생
    		// int * int = int
    
    		long d = (long)a * (long)b;       
    		System.out.println("형변환 후 " + d);
    	}

     

     

     

     

    728x90
    댓글