JAVA 연산자2 & 형변환

박종휘·2022년 5월 15일
0

JAVA - 국비

목록 보기
4/29
post-thumbnail

1. 연산자2

1-1. 논리연산자

  • 두 개 이상의 비교 연산자의 결과나 boolean 값에 대해 추가로 "AND" 나 "OR" 연산을 수행하여 결과를 얻는다.

1-2. And의 의미를 갖는 &&

  • "&&" 연산자는 두 개의 boolean 값을 비교하여 모두 true인 경우만 결과값이 true 이다.
  • boolean result 1 = true && true; // T
  • boolean result 2 = true && false; // F
  • boolean result 3 = false && true; // F
  • boolean result 4 = false && false; // F

1-3. OR의 의미를 갖는 ||

  • "||" 연산자는 두 개의 boolean 값을 비교하여 둘 중 하나라도 true인 경우 결과가 true이다.
  • boolean result 1 = true || true; // T
  • boolean result 2 = true || false; // T
  • boolean result 3 = false || true; // T
  • boolean result 4 = false || false; // F

🍔 Example

		!true -> F
    	!false -> T
        
        int num1 = 100;
        int num2 = 200;
        
        (num1 > num2) -> F
        !(num1 > num2) -> T
        (num1 != num2) || (num1 >= num2) -> T
        !(num1 != num2) || (num1 >= num2) -> F

Example Coding

public class Main {
	public static void main(String[] args) {
    	int a = 100;
        int b = 200;
        int x = 5;
        int y = 3;
        
        boolean result1 = a != b || a == b;  // T || F -> T
        boolean result2 = a < b || x > y;	 // T || T -> T
        boolean result3 = a < b || x < y;	 // T || F -> T
        boolean result4 = a > b || x > y;	 // F || T -> T
		boolean result5 = a > b || x < y;	 // F || F -> F
        
        System.out.println("result1 : " + result1);
		System.out.println("result2 : " + result2);
		System.out.println("result3 : " + result3);
		System.out.println("result4 : " + result4);
		System.out.println("result5 : " + result5);
        -----------------------------------------------------
        boolean r1 = a >= b;		// F
		boolean r2 = x >= y;		// T
		boolean result6 = r1 && r2;	// F && T -> F
		boolean result7 = r1 || r2;	// F || T -> T
        
		System.out.println("result6 : " + result6);
		System.out.println("result7 : " + result7);
        -----------------------------------------------------
        boolean success = true;
		boolean fail = !success;	// F
        
		System.out.println("fail : " + fail);
    }
}

👉 출력

		result1 : true
		result2 : true
		result3 : true
		result4 : true
		result5 : false
		----------------
		result6 : false
		result7 : true
		----------------
		fail : false

2. 형변환 (Casting)

2-1. 형변환

  • 변수의 자료형이 변환되는 것을 의미
  • 특정 자료형의 값을 다른 자료형의 변수에 대입 가능
  • 암묵적 형변환과 명시적 형변환 두 종류가 존재

2-2. 암묵적 형변환

  • 서로 다른 자료형을 연산 혹은 대입하는 경우, Java 컴파일러가 자료형을 통일 → 이 과정에서 발생하는 형변환을 암묵적 형변환이라고 한다.

    			long a = 100;	// 정수형
          		float b = a;	// 정수형을 실수형에 대입
  • 암묵적 형변환은 어떤 변수가 더 큰 범위의 변수로 대입 가능함을 의미

  • 암묵적 형변환이 허용되는 범위
    -> 암묵적 형변환은 데이터의 손실이 발생하지 않는 범위 내에서만 가능
    -> double 형 데이터 20.5를 int에 대입하는 경우에는 0.5에 대한 데이터 손실이 불가피하므로 에러 발생

2-3. 명시적 형변환

  • 데이터의 손실을 감수하더라도, 강제로 형변환 시키는 형태

    		자료형 b = (변환할 자료형)a;
  • 실수형을 정수형으로 변환하는 경우, 소수점 이하 자리는 버림

    		double a = 3.14D;
      		int b = (int)a; // 결과는 3

Example Coding 01

// 암묵적 형변환
public class Main {
	public static void main(String[] args) {
    	short s = 100;
        int i = s;
        long l = i;
        float f = l;
        double d = f;
        
        System.out.println("s : " + s);
		System.out.println("i : " + i);
		System.out.println("l : " + l);
		System.out.println("f : " + f);
		System.out.println("d : " + d);
        --------------------------------
        int myage1 = 20;
		double myage2 = myage1;
        
		System.out.println("myage1 = " + myage1);
		System.out.println("myage2 = " + myage2);
        
    }
}

👉 출력

		s : 100
		i : 100
		l : 100
		f : 100.0
		d : 100.0
		----------
		myage1 = 20
		myage2 = 20.0

Example Coding 02

// 명시적 형변환
public class Main {
	public static void main(String[] args) {
    	long l = 100L;
        int i = (int)l;
        short s = (Short)i;
        
        System.out.println("l : " + l);
		System.out.println("i : " + i);
		System.out.println("s : " + s);
        
        double pi1 = 3.14D;
        // 암묵적 형변환 - 에러
        int pi2 = pi1; // 에러 : 큰 범위의 변수를 작은 범위의 변수에 
                       //        대입하는 것은 에러
       
       	// 명시적 형변환 필요
       	int pi2 = (int)pi1;
       
       	System.out.println("pi1 : " + pi1);
	   	System.out.println("pi2 : " + pi2);
    }
}

👉 출력

		l : 100
		i : 100
		s : 100
		--------
		pi1 : 3.14
		pi2 : 3

Example Coding 03

public class Main {
	public static void main(String[] args) {
    	double a = 10.5D;
        float b = 20.5f;
        
        /*
        	큰 범위의 변수와 작은 범위의 변수가 연산을 수행하면,
            작은 범위의 변수가 큰 범위의 데이터형으로
            암묵적 형변환을 수행
            그러므로 a+b는 double형의 변수가 되므로,
            float형의 값에 대입하는 것은 에러
        */
        // float f = a + b; -> 에러
        
        float f = (float)a + b;
        System.out.println("f : " + f);
        
        double d = a + b;
        System.out.println("d : " + d);
    }
}

👉 출력

		f : 31.0
		d : 31.0
profile
개린이의 개발 고수되기 작전!

0개의 댓글