13일차(2)/java(4) : Operator
*자바의정석 3판: 연산자 86-120p 참고
- 산술 > 비교 > 논리 > 대입 순으로 수행된다. 대입 연산자는 가장 마지막!
- 단항 > 이항 > 삼항 순으로 수행된다.
Mainclass01 : 산술연산자
package test.main;
/*
* 1.산술연산자 테스트
* +, -, *, /, %
*/
public class MainClass01 {
public static void main(String[] args) {
int num1=5;
int num2=2;
// + 연산하기
int sum=10+1;
int sum2=num1+num2;
int sum3=10+num2;
//정수끼리 연산하면 결과는 정수만 나온다.
int result1=5/3;
int result2=num1/num2;
//연산의 결과로 실수를 얻어내고 싶다면 적어도 하나는 실수여야 한다.
double result3=5/3.0;
double result4=num1/(double)num2;
//앞에 있는 수를 뒤에 있는 수로 나눈 나머지 값을 얻어낸다.
int result5=num1%num2;
}
}
- 정수끼리 연산하면 결과값은 정수만!
연산하는 값 중 어느 하나는 실수여야 실수 값이 나온다.
MainClass02 : 증감연산자
package test.main;
/*
* 2. 증감 연산자 테스트
* 변수에 있는 숫자 값을 1씩 증가 혹은 1씩 감소시킬 때 사용한다.
* ++, --
*/
public class MainClass02 {
public static void main(String[] args) {
int num=0;
num++;
num++;
num++; //num이 최종적으로 3이 된다.
int num2=0;
num2--;
num2--;
num2--; //num2가 최종적으로 -3이 된다.
int num3=0;
int result1 = num3++; //result1에 0이 대입되고 num3가 증가한다.
int num4=0;
int result2 = ++num4; //num4가 1 증가하고 result2에 1이 대입된다.
}
}
int result1 = num3++;
- ++가 뒤에 있으면 연산자의 우선순위가 뒤처지기 때문에, 대입이 된 다음에 증가하는 것.
int result2 = ++num4;
- 앞에다가 쓰면 값이 먼저 증가되고 나서 대입되는 것.
- ++, --(증감연산자) 는 +, -(부호연산자, -1과 같은) 는 단항 연산자이다.
MainClass03 : 비교연산자
package test.main;
/*
* 3.비교연산자 테스트
* 비교연산의 결과는 boolean type을 리턴해준다.
* ==, !=, >, >=, <, <=
*/
public class MainClass03 {
public static void main(String[] args) {
boolean result1 = 10 == 10; //true
boolean result2 = 10 != 10; //false
boolean result3 = 10 > 100; //false
boolean result4 = 10 >= 10; //true
boolean result5 = 10 < 100; //true
boolean result6 = 10 <= 10; //true
//string type 변수 name에 null 대입하기
String name=null;
//null인지 아닌지 비교가 가능하다(즉 java에서 null값은 비교가 가능)
boolean result7 = name == null; //true
boolean result8 = name != null; //false
}
}
- 비교연산의 결과는 boolean type 으로 나온다.
- Oracle에서는 null은 비교 불가능했지만(=>< 대신 is not null, is null만 사용), java에서는 가능하다.
null이 비어 있는지 아닌지를 비교하는 것이라고 생각하면 된다.
MainClass04 : 논리연산자
package test.main;
/*
* 4. 논리연산자 테스트
*/
public class MainClass04 {
public static void main(String[] args) {
//or 연산
/*
* 또는 이라고 읽으면 된다.
*
* 어느 하나만 true이면 결과는 true
* 모두다 false 일때만 결과는 false
*/
boolean result1 = false || false; //false
boolean result2 = false || true; //true
boolean result3 = true || false; //true
boolean result4 = true || true; //true
//and 연산
/*
* 그리고 라고 읽으면 된다.
*
* 모두다 true일 때만 결과는 true
* 어느 하나만 false면 결과는 false
*/
boolean result5 = false && false; //false
boolean result6 = false && true; //false
boolean result7 = true && false; //false
boolean result8 = true && true; //true
//not 연산
/*
* ~가 아니면 이라고 읽으면 된다.
*
* boolean 값을 반전시킨다.
*/
boolean result9 = !true; //false
boolean result10 = !false; //true
}
}
- || (파이프문자) : or 의미(javascript와 같다). 어느 하나만 true이면 값은 true!
- && : and 의미 : 둘 다 true여야만 true. 그 외의 모든 경우는 false!
MainClass05 : 대입연산자
package test.main;
/*
* 5. 대입연산자 테스트
*/
public class MainClass05 {
public static void main(String[] args) {
int num=10;
//num=num+2;
num += 2;
//num=num-3;
num -= 3;
//num=num*4
num *= 4;
//num=num/5;
num /= 5;
//num=num%6;
num %= 6;
}
}
- 참고하기. =, +=, -= 정도만을 제일 자주 쓴다.
MainClass06 : 3항 연산자 (if~else)
package test.main;
/*
* 6. 3항 연산자 테스트
*/
public class MainClass06 {
public static void main(String[] args) {
boolean isWait=true;
//isWait이 true면 "기다려요"가 대입되고 false면 "기다리지 않아요"가 대입된다.
String result = isWait ? "기다려요" : "기다리지 않아요";
System.out.println(result);
//위의 3항 연산자는 아래와같이 if~else문과 같은 로직이다.
String result2=null;
if(isWait) {
result2="기다려요";
}else {
result2="기다리지 않아요";
}
System.out.println(result2);
}
}
A ? B : C;
- ? 와 : 사이에 A, B, C 3개의 항이 있어서 3항 연산자라고 부른다.
[ 3항 연산자 연산 법칙 ]
- A(true) ? B : C ; : A가 true이면 B를 남긴다.
- A(false) ? B : C ; : A가 false이면 C를 남긴다.
- 아래 로직(if~else문)과 동일한 내용이다.
if~else문을 더 간편하게 사용할 수 있는 연산자라고 보면 된다.
- 콜론(:) 의 좌측이 남으면 좌측이 대입되고, 우측이 남으면 우측이 대입되는 것.
좌측이 남을지 우측이 남을지를 결정하는것이 ? 앞의 불리언 타입(A항)
'국비교육(22-23)' 카테고리의 다른 글
13일차(5)/java(6) : 객체의 field, method 호출 실습 (0) | 2022.10.24 |
---|---|
13일차(4)/java(5) : class, field, method / static method (0) | 2022.10.24 |
13일차(2)/java(3) : DataType, 객체지향 언어 (0) | 2022.10.24 |
13일차(1)/java(2) : eclipse export, import, delete (0) | 2022.10.24 |
12일차(2)/java(1) : eclipse 설치, 기본 사용법, DataType (0) | 2022.10.21 |