결합방향
// 변수 num1에 저장된 값이 1과 100 사이의 수인가?
result = (1 < num1) && (num1 < 100);
System.out.println("1 초과 100 미만인가? " + result);
// 변수 num2에 저장된 값이 2 또는 3의 배수인가?
result = ((num2 % 2) == 0) || ((num2 % 3) == 0);
System.out.println("2 또는 3의 배수인가? " + result);
public class SCE {
public static void main(String[] args) {
int num1 = 0;
int num2 = 0;
boolean result;
result = ((num1 += 10) < 0) && ((num2 += 10) > 0);
System.out.println("result = " + result);
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2 + '\n'); // "
result = ((num1 += 10) > 0) || ((num2 += 10) > 0);
System.out.println("result = " + result);
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2);
}
}
result = false
num1 = 10
num2 = 0
result = true
num1 = 20
num2 = 0
short num1;
short num = -num;
num은 원래 short이지만 -도 "부호연산자"로 하나의 연산이고 그래서 int형으로 자동형변환이 일어난다.
즉 -1 *num 의 연산이 일어난다고 볼 수 있으며, int(4byte)형으로 변환된 num을 short(2byte)형 num으로 대입하려 했기 때문에 (더 작은 타입으로는 자동형변환이 불가능하다.)에러가 난다.
수정
short num = 100;
num = (short)(-num);
그래서 강제 형변환을 해줘야한다.
double e1 = 3.5;
double e2 = -e1; // e1에 저장되는 값은 -3.5
부호 연산자 –는 변수에 저장된 값의 부호를 바꾸어 반환한다.
+, - 가 붙는 것도 연산임을 기억하자. (정수는 2의 보수법으로, 실수는 복잡한 방법으로 연산되어 나오는 것임)
short num1 = 5;
System.out.println(+num1); //+5(+는 불필요한 부호)//형변환 필요없이 short로 받음
System.out.println(-num1); //부호를 바꿔 얻은 결과 출력
short num2 =7;
short num3 = (short)(+num2); // 1*num2 라서 연산시 int로 변환됨//형변환 안하면 오류
short num4 = (short)(-num2); //-1*num2 라서 연산시 int로 변환됨//형변환 안하면 오류
System.out.println(num3);
System.out.println(num4);
연산의 결과가 변수에 반영이 된 것인지 아닌지 주의해서 보자!
int num =1;
boolean result;
System.out.println(-num); //-1 * num
System.out.println(num); //연산 결과를 저장한것이 아니기때문에 1이 나온다.
int num1 = 10, num2 = 20, num3 = 30;
num1 = num2 = num3;
30이 나온다 "=" 연산자는 결합 방향이 오른쪽에서 왼쪽으로 진행된다
public class SCE {
public static void main(String[] args) {
int num1 = 0;
int num2 = 0;
boolean result;
num1 += 10;
num2 += 10;
result = (num1 < 0) && (num2 > 0);
System.out.println("result = " + result);
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2 + '\n'); //+ "\n"??
num1 += 10;
num2 += 10;
result = (num1 > 0) || (num2 > 0);
System.out.println("result = " + result);
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2);
}
}
result = false
num1 = 10
num2 = 10
result = true
num1 = 20
num2 = 20
public class SCE {
public static void main(String[] args) {
int result = 3 + 6;
System.out.println("3 + 6 = " + result);
result += 9;
System.out.println("3 + 6 + 9 = " + result);
result += 12;
System.out.println("3 + 6 + 9 + 12 = " + result);
}
}
3 + 6 = 9
3 + 6 + 9 = 18
3 + 6 + 9 + 12 = 30