본문 바로가기
language/Java

연산자(Operator)

by abstract.jiin 2022. 5. 18.

연산 관련 용어 
연산자       연산에 사용되는 기호나 표시를 연산자라 한다.
피연산자    연산에 사용되는 데이터 또는 변수를 피연산자라 한다. 
연산식       연산자와 피연산자를 사용하여 연산하는 과정을 연산식이라 한다.


*** 컴퓨터 프로그램에서는 연산의 결과가 어떤 자료형인지 아는 것이 중요하다.

산술연산자
+ 덧셈 
char + char => int
String + 다른 자료형 => 문자연결

- 뺄셈
char - char => int
String은 뺄셈 불가

* 곱셈
char * char => int
String은 곱셈 불가

/ 나눗셈
char / char => int
String은 나눗셈 불가
10 /10 => 0으로 나누면 런타임 오류


% 나머지 연산


package day4;

public class Operator {

	public static void main(String[] args) {
		// 정수형 덧셈
		System.out.println(10 +10); //int+int => int
		System.out.println(10 +10.1); //int+double => double
		System.out.println(10 +'a'); //int+char => int
		System.out.println(0 +'ㄱ'); //영문 아스키코드로 숫자로 변환해 연산, 한글은 유니코드(UTF-8)
		System.out.println(10 + "Hello"); //int+String => String
		System.out.println();
		
		
		// 실수형 덧셈
		System.out.println(10.1 + 10);  // double + int => double
		System.out.println(10.1 + 10.0);  // double + double => double
		System.out.println(10.1 + 'a');  // double + char => double
		System.out.println(10.1 + "Hello");  // double + char => double
		System.out.println();
		
		//char은 숫자와 만나면 ASCII 숫자로, 문자와 만나면 문자로 
		// 모든 타입은 문자열과 만나면 문자화 된다. 
		
		
		//문자형 덧셈
		System.out.println('a' + 10);  // char + int => int
		System.out.println('a' + 10.1); //char + double => double
		System.out.println('a' + 'a');  //char + char => int
		System.out.println('a' + "Hello"); //char + String => String
		
		//문자열 덧셈
		System.out.println("Hello" + 10); // String + int => String
		System.out.println("Hello" + 10.9); //String + double => String
		System.out.println("Hello" + 'a'); //String + char => String
		System.out.println("Hello" + "Hello"); //String + String => String
		System.out.println();
		
		//문자열과 더해지는 순간 어떤 자료형도 모두 문자열 된다 .
		//순서를 잘 보자 
		System.out.println(10 + "Hello" + 20);
		System.out.println(10 + 20 + "Hello");
		System.out.println("Hello" + 10 + 20); // 이미 문자열..!
	
	}

}

실행 결과 : 

20
20.1
107
12593
10Hello

20.1
20.1
107.1
10.1Hello

107
107.1
194
aHello
Hello10
Hello10.9
Helloa
HelloHello

10Hello20
30Hello
Hello1020


package day4;

public class OperatorRest {

	public static void main(String[] args) {
		// - 빼기연산
		System.out.println(10-5);	 	// int - int => int
		System.out.println(10-10.5); 	// int - double => double
		System.out.println(10-'a');		// int - char => int
		System.out.println('b'-'a'); 	// char - char => int
		System.out.println();
		// System.out.println(10-"Hello"); // 오류, 문자열 빼기는 안된다.
		
		
		// * 곱하기 연산 
		System.out.println(10 * 5);  	// int * int => int
		System.out.println(10 * 3.4); 	//int * double => double
		System.out.println(10 * 'a'); 	//int * char => int
		System.out.println('a' * 'b'); 	//char * char => int
		System.out.println();
		//System.out.println(10 * "Hello" ); 	//오류
		
		
		// / 나누기 연산 
		System.out.println(10 / 5);  	//int / int => int
		System.out.println(10 / 3.4); 	//int / double => double
		System.out.println(100 / 'a'); 	//int / char => int
		System.out.println('a' / 'a'); 	//char / char => int
		//System.out.println('a' / "Hello"); 	//컴파일오류
		//System.out.println(10/0); 			//런타임 오류 - 실행 중 오류가 난다. 
		
		
		// % 나머지 연산 
		System.out.println(10 / 3); 	// 몫
		System.out.println(10 % 3);		// 나머지 연산, 나머지 1 도출	
		System.out.println(2 % 2);	 	// 나머지 0	
		System.out.println(3 % 2);		// 나머지 1 	
		System.out.println(4 % 2);		// 나머지 1 	
 		
		// 짝수/홀수 가려낼 때, 2로 나눠서 나머지 0이면 짝수, 나머지 1이면 홀수 
		
		int var1 = 10;
		int var2 = 20;
		int var3 = 30;
		
		int result1 = var1 + var2 * var3;
		System.out.println(result1);
		
		int result2 = (var1 + var2) * var3;
		System.out.println(result2);
	}

}

실행 결과 :

5
-0.5
-87
1

50
34.0
970
9506

2
2.9411764705882355
1
1
3
1
0
1
0
610
900

 


관계 연산자 
a > b     a가 b보다 크니?                     맞아(true) or 틀려(false)
a < b     a가 b보다 작니?                     true of false
a >= b   a가 b보다 크거나 같니?           true or false
a <= b   a가 b보다 작거나 같니?           true or false
a == b   a가 b와 같니?                        true or false
a != b    a가 b와 다르니?                     true of false 

 

 

관계연산시 주의사항 

   >, <, >=, <=, ==, != 기본타입 변수에 대한 
   관계연산은 true/false(boolean)으로 받는다.

   String의 관계연산은 없지만, ==에 대한 연산은 String.equals()로 한다.
   String는 기본타입 연산자가 아니라 클래스타입이므로 메소드를 사용한다.


package day4;

import java.util.Scanner;

public class OperatorRelation {
	public static void main(String[] args) {
		System.out.println(10 > 5);
		System.out.println('a' > 5);
		System.out.println('a' > 'b');
		
		
		System.out.println(10 < 10);
		System.out.println(10 <= 5);
		System.out.println(10 == 10);
		System.out.println(10 != 10);
		
		
		// 입력한 값을 확인하는 예제
		Scanner scan = new Scanner(System.in);
		System.out.print("정수 입력");
		int num = scan.nextInt();
		System.out.println(num > 19);
		
		// 문자열 비교는? 안된다. 
		//  System.out.println("안녕" > "안녕하세요") //오류
		
		
} 	
	}

실행 결과 :

true
true
false
false
false
true
false
정수 입력 > 10

> false

 


논리 연산자

a && b 그리고(And) 연산자

a가 true고 b가 true면 결과는 true (하나라도 false 있으면 false)

 

a || b 또는(or) 연산자a 또는 b 둘 중 하나라도 true면 결과는 true

 

!a 부정(not) 연산자a가 true면 false, a가 false면 true

 

package day4;

public class OperatorLogical {
	public static void main(String[] args) {
		System.out.println(true && true);
		System.out.println(true && false);
		System.out.println(false && true);
		System.out.println(false && false);
		System.out.println();
		
		System.out.println(true || true);
		System.out.println(true || false);
		System.out.println(false || true);
		System.out.println(false || false);
		System.out.println();
		
		System.out.println(!true);
		System.out.println(!false);
		System.out.println();
		
		// 10 > 5 && 10 < 80 연산은?
		System.out.println(10 > 5 && 10 < 80);
	}
}

실행 결과 :

true
false
false
false

true
true
true
false

false
true

true


연산자 우선순위 
최우선 연산자    ()
단항 연산자        !
산술 연산자        * / %   + -
쉬프트 연산자
관계 연산자         > < >= <= == !=
논리 연산자         && ||
삼항 연산자        
대입 연산자         =

'language > Java' 카테고리의 다른 글

반복문 (for)  (0) 2022.05.29
삼항 연산자, 조건문(if,switch)  (0) 2022.05.23
printf(), 형식지정자(%~), 입력 메소드 Scanner 클래스  (0) 2022.05.16
변수  (0) 2022.05.13
Setting  (0) 2022.05.13