연산자와 연산식

zooyeong·2023년 2월 4일

1주차

목록 보기
4/5
post-thumbnail

📌연산자

연산이란 데이터를 처리하여 결과를 산출하는 것이다.

연산자란 연산에 사용되는 표시나 기호이다.
+, -, *, /, %. =. ...

피연산자란 연산 대상이 되는 데이터이다. (리터럴, 변수)

연산식이란 피연산자를 이용하여 연산의 과정을 기술한 것이다.


💡단항 연산자

피연산자가 1개인 연산자이다.

  • 부호 연산자 : +, - Boolean 타입과 char 타입을 제외한 기본 타입에 사용 가능하다.
    ✅ 부호 연산자의 산출 타입은 int다.
  • 증감 연산자 : ++, -- 변수의 값을 1증가 시키거나(++) 1감소(--) 시키는 연산자이다.
    ✅ 증감 연산자가 변수 뒤에 있으면 다른 연산자 먼저 처리 후 증감 연산가가 처리된다.
  • 논리 부정 연산자 : ! Boolean type 에만 사용 가능하다.

📖 부호연산자

int n = 100;
int n2 = +n; 
int n3 = -n; 
System.out.println(n2); //100
System.out.println(n3); //-100
		
int n4, n5;
n4 = +n3; //+(-100) = -100
n5 = -n3; //-(-100) = +100
System.out.println(n4); //-100
System.out.println(n5); //100
		
short s = 10;
//short s2 = -s;	short <- int 
//부호연산자의 결과는 int로 저장되므로
//int 이하 정수형의 부호 연산은 컴파일 에러가 발생한다.
long l = -n;	// long <- int long타입이 더 크니 가능하다.

📖 증감연산자

int x = 10;
int y = 10;
		
System.out.println(x); //10
x++; // 1을 더하겠다.
++x; // 1을 더하겠다.
System.out.println(x); //12
		
System.out.println(x++); //12
//x = 13
System.out.println(x++); //13
//x = 14
System.out.println(++x); //15
		
System.out.println(y); //10
y--; // 1을 빼겠다.
--y; // 1을 빼겠다.
System.out.println(y); //8
System.out.println(--y); //7
System.out.println(y--); //7
//y = 6
// x = 15

Check Point!!!
증감 연산자가 앞에 붙으면 증감 연산을 먼저 수행한다.
증감 연산자가 뒤에 붙으면 그 다음 줄에 증감 연산을 수행한다.

📖 부정연산자

boolean running = true;
System.out.println( !running ); //false
boolean walking = false;
System.out.println( !walking ); //true
running = !running;
System.out.println(running); //true

💡이항 연산자

피연산자가 2개인 연산자이다.

  • 산술연산자 +, -, *, /, % : boolean 타입을 제외한 모든 기본 타입에 사용 가능하다.
  • 문자열 연결 연산자 +
  • 대입 연산자 =, +=, -=, *=, /=. %=, &=, ^=, |=, <<=, >>=, >>>= : 가장 낮은 연산 순위이다.
  • 비교 연산자 <, <=, >, >=, ==, !=
  • 논리 연산자 &&, ||, &, |, ^, ! : 피연산자는 boolean 타입만 사용 가능하다.
  • 비트 논리 연산자 &, |, ^
  • 비트 이동 연산자 <<, >>, >>>

📖 산술연산자

int x =10;
int y = 4;
		
System.out.println(x+y); //14
System.out.println(x-y); //6
System.out.println(x*y); //40
System.out.println(x/y); //2
System.out.println(x%y); //2
		
double a = 10;
double b = 4;
System.out.println(a/b); //2.5 //실수형이므로 소수점까지 출력된다.
System.out.println(x/y); //2 //정수형이므로 몫만 출력된다.	
System.out.println( (double)x/y); //2.5
System.out.println( x/(double)y); //2.5
System.out.println( (double)x/(double)y); //2.5
System.out.println(a/y); //2.5
System.out.println( (double)(x/y));
//					(double)2.0
// 정수형 (x/y)가 먼저 계산되고 실수형으로 변환되었다.
		
// int + int = int
// int + double = double
// int / int = int
// double / double = double
// int / double = double
// double / int = double

// 피연산자가 하나라도 실수형이면 실수형으로 계산된다.
// 피연산자가 3개 이상이면 실수형이 처음 실행되는 연산에 참여해야 실수형으로 계산된다.
// ex) ( a * b / c ) 를 실행할 때 a 또는 b가 실수형이어야함!

📖 비교연산자

int num1 = 5;
int num2 = 3;
		
System.out.println(num1 == num2); //false
System.out.println(num1 != num2); //true
		
boolean bl1 = !(num1 > num2);
boolean bl2 = num1 <= num2;
boolean bl3 = num1 < num2 + 10;
		
System.out.println(bl1); //false
System.out.println(bl2); //false
System.out.println(!bl3); //false
System.out.println(bl3); //true
		
System.out.println( !((9/3) == (10%7)) ); //true

문자열도 같은지 다른지 비교가 가능하다.

String s1 = "hello";
String s2 = "hello";
String s3 = new String("hello");
		
System.out.println( s1 == s2 ); //true
//문자열.equals(문자열)
System.out.println( s1.equals(s2) ); //true
System.out.println( s1 == s3 ); //false
System.out.println( s1.equals(s3)); //true

== 기본타입 : 값이 같은지 비교한다.
== 객체타입 : 주소가 같은지(같은 객체인지) 비교한다.
.equals() : 문구가 같은지 비교한다. 문자열 비교에 유용하다.

📖 대입연산자

int num1 = 100;
int num2, num3;
num2 = num3 = 200;
		
System.out.println(num1); //100
num1 += 50; //num1 = num1 + 50
System.out.println(num1); //150
num1 -= 30; //num1 = num1 - 30
System.out.println(num1); //120
num1 *= 2; //num1 = num1 * 2
System.out.println(num1); //240
num1 /= 50.0; // num1 = num1 / 50.0
System.out.println(num1); //4

//num1이 4가 출력되었다. -> 실수형으로 대입되지 않았다.
//num1 = num1 / 50.0; -> 풀어서 코드를 작성하는 것이 안전하다.

num1 %= 3; //// num1 = num1% 3
System.out.println(num1); //1

📖 논리연산자

boolean result;
result = (10 == 10) && (20 == 20);
//			true		  true
System.out.println( result ); //true
	
result = (5>3) && (6<4);
//		 true	  false
System.out.println( result ); //false
		
result = (10>20) || (1>0);
//		  false		true
System.out.println( result ); //true

AND(&&) 연산은 두 개의 값이 모두 true여야만 true기 리턴된다.

OR(||) 연산은 둘 중 하나의 값만 true여도 true가 리턴된다.


💡삼항 연산자

세 개의 피연산자를 필요로 하는 연산자이다.

앞의 조건식 결과에 따라 콜론 앞 뒤의 피연산자를 선택한다.

int score = 95;
char grade = (score > 90) ? 'A': 'B';
//90보다 크면 A고 나머지는 다 B
//조건식이 true면 앞부분('A'), false면 뒷부분('B')이 출력된다.
		
//삼항 연산자의 중첩
char grade2 = (score > 90) ? 'A': (score > 80 ? 'B' : 'C');
//90보다 크면 A고 80보다 크면 B 그 외에는 C
		
char grade3 = (score > 90) ? 'A': (score > 80 ? 'B': (score > 70 ? 'C' : 'D'));
//90보다 크면 A고 80보다 크면 B 70보다 크면 C 그 외에는 D
		
//90보다 크면 A
//90보다 클 때 -> 95보다 크면 S 아니면 그냥 A
char grade4 = (score > 95) ? 'S': (score > 90) ? 'A': (score > 80 ? 'B': (score > 70 ? 'C' : 'D'));
char grade5 = (score > 90) ? (score > 95 ? 'S' : 'A'): (score > 80 ? 'B': (score > 70 ? 'C' : 'D'));
System.out.println(grade5); //A

(교재 : 이것이 자바다/저자 신용권)

profile
Have a good day ⌯’▾’⌯

0개의 댓글