정수자료형과 연산자

정수 자료형과 연산자, 형변환

package sec03.chap01;

public class Ex01 {
    public static void main(String[] args) {

    byte _1b_byte = 1;
    short _2b_short = 2;
    int _4b_int = 3; // ⭐️ 일반적으로 널리 사용
    long _8b_long = 4;

    //  ⚠️ 자료형의 범주 외의 수를 담을 수 없음
    byte overByte1 = 127;
    byte overByte2 = 128;
    byte overByte3 = -128;
    byte overByte4 = -129



    //  큰 자료형에 작은 자료형의 값을 넣을 수 있음
    //  💡 묵시적(암시적) 형변환
    _2b_short = _1b_byte;
    _4b_int = _1b_byte;
    _4b_int = _2b_short;
    _8b_long = _1b_byte;
    _8b_long = _2b_short;
    _8b_long = _4b_int;

    //  ⚠️ 작은 자료형에 큰 자료형의 값을 '그냥' 넣을 수 없음
    //  들어있는 값의 크기와 무관
    _1b_byte = _2b_short;
    _1b_byte = _4b_int;
    _1b_byte = _8b_long;
    _2b_short = _4b_int;
    _2b_short = _8b_long;
    _4b_int = _8b_long;
    }
    
    //  ⭐ int의 범위를 벗어나는 수에는 리터럴에도 명시 필요
    //  끝에 l 또는 L을 붙여 볼 것
    long _8b_long1 = 123456789123456789L;

    
    // 💡 가독성을 위해 아래와 같이 표현 가능 (자바7부터)
    int _4b_int2 = 123_456_789;
    long _8b_long2 = 123_456_789_123_456_789L;
}
package sec03.chap01;

public class Ex02 {
    public static void main(String[] args) {
        byte byteNum;
        int smallIntNum = 123;

        //  명시적(강제) 형변환
        //  - 개발자 : "내가 책임질테니까 그냥 넣어줘."
        byteNum = (byte) smallIntNum;
        
        int intNum = 12345;

        //  ⚠️ 강제로 범주 외의 값을 넣을 경우 값 손실
        byteNum = (byte) intNum; // 💡 12345 % 128
    }
}

이항 연산자

    int a = 1 + 2;
    int b = a - 1;
    int c = b * a;
    int d = a + b * c / 3;
    int e = (a + b) * c / 3;
    int f = e % 4;
    
    
    
    byte b1 = 1;
    byte b2 = 2;
    short s1 = 1;
    short s2 = 2;
    
    //  ⚠️ 아래는 모두 불가
    byte b3 = b1 + b2;
    short s3 = b1 + b2;
    short s4 = b1 + s2;
    short s5 = s1 + s2;
    
    //  ⭐ byte와 short의 연산들은 int 반환
    //  int를 많이 쓰는 이유 중 하나
    int i1 = b1 + b2;
    int i2 = s1 + s2;
    int i3 = b1 + s1;
    
    long l1 = 1;
    long l2 = 2;

    // long끼리의 연산은 long 반환
    int l3 = l1 + l2;
    
    //  ⚠️ 정수 자료형의 계산은 소수점 아래를 '버림'
    byte int1 = 5/2;
    int int2 = 10;
    int int3 = 3;
    int int4 = int2 / int3;

복합대입 연산자

a += b
a = a + b

a -= b

a = a - b

a *= b

a = a * b

a /= b

a = a / b

a %= b

a = a % b

package sec03.chap01;

public class Ex04 {

    public static void main(String[] args) {
        int a = 1;
        a = a + 2;

        a += 3; // 🔴

        // 값을 반환하기도 함
        int b = a += 4; // 🔴
        
        
        int x = 3;
        x += 2;
        x -= 3; // 🔴
        x *= 12;
        x /= 3;
        x %= 5;
    }
}
package sec03.chap01;

public class Ex05 {
    public static void main(String[] args) {
        // 💡 자료형의 범위를 넘어가도록 숫자를 더하거나 뺄 경우
        byte x = 127;
        x += 1;

        byte y = -128;
        y -= 1;

    }
}
연산자
반환값
부수효과

+

값 그대로

없음

-

양음 반전

없음

x ++

값 그대로

1 증가

++x

1 증가한 값

1 증가

x--

값 그대로

1 감소

--x

1 감소한 값

1 감소

	int int1 = 3;

        int int2 = int1++; // 🔴
        int int3 = ++int1;
        int int4 = -(int2-- * --int3);
        
	int x = 1;
        
        //  메서드 안으로도 '반환'되어 사용되는 것
        System.out.println(x++);
        System.out.println(++x);
        System.out.println(x);
        
        
        //  ⚠️ 리터럴에는 사용 불가
        int int5 = 3++;
        int int6 = --3;

비교연산자

a == b

a와 b는 같다

a != b

a와 b는 다르다

a > b

a가 b 보다 크다

a >= b

a가 b보다 크거나 같다

a < b

a가 b보다 작다

a <= b

a가 b보다 작거나 같다

  • boolean 자료형의 값을 반환 (true 또는 false)

  • = *( 대입 연산자 )*와 혼동하지 말 것

package sec03.chap01;

public class Ex07 {
    public static void main(String[] args) {
        //  값을 바꿔가면서 실행해 볼 것
        int int1 = 3;
        int int2 = 3;

        //  다른 정수 자료형끼리 사용 가능
        boolean bool1 = int1 == int2;
        boolean bool2 = int1 != int2;

        boolean bool3 = int1 > int2;
        boolean bool4 = int1 >= int2;

        boolean bool5 = int1 < int2;
        boolean bool6 = int1 <= int2;

        //  💡 우선순위에 따른 연산
        boolean bool7 = int1 * int2 > int1 + int2;
    }
}

"==" 과 equlas()의 차이

package sec03.chap01;

public class EqualsTest{
    public static void main(String[] args){
        String a = "JAVA";
        String b = "JAVA";
        String c = new String("JAVA");
        String d = new String("JAVA");

        System.out.println( a == b );  // true
        System.out.println( b == c );  // false
        System.out.println( c == d );  // false

        System.out.println( a.equals(b) );  // true
        System.out.println( b.equals(c) );  // true
        System.out.println( c.equals(d) );  // true
    }
}

Last updated