KDT/Java

231102 Java - 연산자 1

001cloudid 2023. 11. 2. 18:08
728x90

연산자

연산자에는 산술, 단항, 비교(또는 관계), 논리, 비트 등이 있다.

 

산술 연산자

+, -, *, /, %

 

// 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
728x90

'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