연산자
연산자에는 산술, 단항, 비교(또는 관계), 논리, 비트 등이 있다.
산술 연산자
+, -, *, /, %
// ex1)
int num1 = 10; int num2 = 3;
int sum, sub, mul, div, mod;
System.out.println("num1 = " + num1); //10
System.out.println("num2 = " + num2); //3
sum = num1 + num2;
sub = num1 - num2;
mul = num1 * num2;
div = num1 / num2;
mod = num1 % num2;
System.out.println("num1 + num2 : " + sum);
System.out.println("num1 - num2 : " + sub);
System.out.println("num1 * num2 : " + mul);
System.out.println("num1 / num2 : " + div);
System.out.println("num1 % num2 : " + mod);
// ex2)
int num3 = sc.nextInt();
int num4 = sc.nextInt();
System.out.println("num3 + num4 = ");
System.out.println(num3 + num4);
System.out.println("num3 - num4 = ");
System.out.println(num3 - num4);
System.out.println("num3 * num4 = ");
System.out.println(num3 * num4);
System.out.println("num3 / num4 = ");
System.out.println(num3 / num4);
System.out.println("num3 % num4 = ");
System.out.println(num3 % num4);
// ex3)
int num5 = 100;
int num6 = 20;
System.out.println(num5+num6);
System.out.println(num5-num6);
System.out.println(num5*num6);
System.out.println(num5/num6);
System.out.println(num5%num6);
※System.out.println("num5+num6" +num5 + num6); 의 결과는 num5+num610020이 나온다.
그렇다면 ()안에서 연산하는 방법은 이렇게 해서는 안된다.
()안에서 연산하고자할 때는 괄호로 묶어서 먼저 처리할 수 있도록 해야한다.
즉, System.out.println("num5+num6" +(num5 + num6)); 해줘야지 원하는 결과값인 120이 나올 수 있다.
부호 연산자
단항 연산자로 변수의 부호를 유지하거나(+) 바꿀 때(-) 사용
// ex4)
int num7 = 10;
System.out.println(+num7); //10
System.out.println(num7); //10
System.out.println(-num7); //-10
// ex5)
int math = 90;
int eng = 73;
int totalScore = math + eng;
System.out.println(totalScore);
double avgScore = (math + eng)/2.0;
System.out.println(avgScore);
※주의할 점은 int형 데이터/int형 데이터 =int형 데이터 의 경우 데이터의 손실이 일어나기 때문에
2.0 또는 (double)2 라고 해줘야한다. 혹은 double avgScore = (math + eng) / (double) 2;
평균을 구할 때 소수점 이하 계산에 주의하자
단항 연산자(증감 연산자)
1씩 증가/감소. 반복문쓸 때 사용. ++a, a++, --a, a--
a++ == a = a+1; 자신의 변수값에 1을 더해서 저장
a-- == a = a-1; 자신의 변수값에 1을 빼서 저장
변수명 앞에 ++,--가 오게 되면 먼저 1을 증감해서 저장해서 사용,
변수명 뒤에 ++,--가 오게 되면 변수 내의 값을 먼저 사용하고 나중에 1을 증감 후 저장 사용
※ a++(혹은 a--) 값이 참조된 후에 증가, ++a(혹은 --a) 값이 참조되기 전에 증가
// ex6)
int num8 = 100;
System.out.println(num8);
System.out.println(++num8);
System.out.println(num8++);
System.out.println(num8);
int num9 = 100;
System.out.println(num8);
System.out.println(--num8);
System.out.println(num8++);
System.out.println(num8);
비교(관계) 연산자
조건 작성 시 사용. 이항 관계를 나타낼 때 사용. 결과는 true/false값으로 출력. <, <=, >=, ==, !=
조건 작성 형식 : 비교 대상 비교연산자 비교할기준값
// ex7)
10 ! = 20
int num = 1;
System.out.println(num>0);
System.out.println(num>2);
System.out.println(num<2);
System.out.println(num>=0);
System.out.println(num>=2);
System.out.println(num<=0);
System.out.println(num<=2);
System.out.println(num!=1);
System.out.println(num==1);
// ex8)
int age = 27;
boolean value = age>25;
System.out.println(value);
value = age <= 25;
System.out.println(value);
value = age ==27;
System.out.println(value);
value = age != 27;
System.out.println(value);
System.out.println(value==27);
논리연산자
비교연산자로 처리된 결과를 가져와서 다시 논리적으로 연산.
True/False 조건으로 다시 True/False를 판단. 결과는 True/False
&& (and) 논리식이 모두 참이여야만 참
|| (or) 논리식 중 하나만 참이여도 참
! (not) 논리값 결과를 반대로 반환
// ex9)
boolean t1 = 5>2;
boolean t2 = 4>3;
System.out.println(t1 && t2); //true
System.out.println(t1 || t2); //true
System.out.println!(t1 && t2); //false
// ex10)
int 숫자1 = 10;
int 숫자2 = 20;
boolean 조건 = (숫자1>0) && (숫자2>0);
System.out.println(조건) //true
조건 = (숫자1<0) && (숫자2>0);
System.out.println(조건); //false조건 = (숫자1<0) || (숫자2>0);
System.out.println(조건); //true
조건 = !(숫자1>20);
System.out.println(조건) //true
System.out.println(!조건) //false
단락 회로 평가
논리곱과 논리합을 연산할 때 두 항을 모두 실행하지 않더라도 결과값을 알 수 있는 경우에 나머지 항은 실행되지 않음
// ex11)
int num0 = 10;
int i = 2;
boolean val = ((num0 = num0 + 10) < 10) && ((i = i +2) < 10 );*
System.out.println(val); //false
System.out.println(num0); //20
System.out.println(i); //2
System.out.println(num0); //20
val = ((num0 = num0 +10)>10) || ((i = i + 2)<10);
System.out.println(val); //true
System.out.println(num0); //30
System.out.println(i);** //2
// *boolean val = ((num0 = num0 + 10) < 10) && ((i = i +2) < 10 ); 은
조건1 && 조건2에서 조건1이 false면 조건2를 실행하지 않는다.
즉, 앞 조건이 거짓이기 때문에 뒤의 조건은 실행하지 않는다.
// ** 논리 합은 참||거짓 혹은 거짓||거짓 으로 사용.
논리곱에서 앞 항이 거짓이면 뒷 항이 실행되지 않아 i값은 그대로, 논리합에서 앞 항이 참이면 뒷 항이
실행되지 않아 i값은 그대로
복합 대입 연산자
변수값을 초기화한 후에 다시 대입한다. a += 1 == a = a+1
int num20 = 0;
num20 = num4 + 1;
num20 += 1; num20 *= 5;
System.out.println(num20); //10
++num20;
System.out.println(num20); //11
조건연산자
조건 ? 조건 을 판단하여 참인 경우 수행할 내용 : 조건을 판단해서 거짓인 경우 수행할 내용;
조건 ? 참값 : 거짓값;
int num 30 = (1>0) ? 10: 0;
System.out.println(num30); //10
int num 31 = (1<0) ? 10: 0;
System.out.println(num30); //0
'KDT > Java' 카테고리의 다른 글
231108 Java - 탐욕 알고리즘, 조건문 2 (0) | 2023.11.08 |
---|---|
231106 Java - 연산자 2, 조건문 1 (0) | 2023.11.06 |
231101 Java - Scanner 클래스 2 (0) | 2023.11.01 |
231030 Java - 변수 2, Scanner 클래스 1 (0) | 2023.10.31 |
231026 Java - 변수 1 (0) | 2023.10.30 |