!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
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
서로 다른 자료형을 연산 혹은 대입하는 경우, Java 컴파일러가 자료형을 통일 → 이 과정에서 발생하는 형변환을 암묵적 형변환이라고 한다.
long a = 100; // 정수형
float b = a; // 정수형을 실수형에 대입
암묵적 형변환은 어떤 변수가 더 큰 범위의 변수로 대입 가능함을 의미
암묵적 형변환이 허용되는 범위
-> 암묵적 형변환은 데이터의 손실이 발생하지 않는 범위 내에서만 가능
-> double 형 데이터 20.5를 int에 대입하는 경우에는 0.5에 대한 데이터 손실이 불가피하므로 에러 발생
데이터의 손실을 감수하더라도, 강제로 형변환 시키는 형태
자료형 b = (변환할 자료형)a;
실수형을 정수형으로 변환하는 경우, 소수점 이하 자리는 버림
double a = 3.14D;
int b = (int)a; // 결과는 3
// 암묵적 형변환
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
// 명시적 형변환
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
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