*JAVA*

[java] 연산자(Operator)

깐부로부터 2021. 10. 19. 23:14

1. 산술 연산자

이항연산자로서 연산방법, 우선순위가 일반 수학산술과 동일하다.

종류로는 +, -, *, /, %(모듈러, Modular)가 있다.

% : 모듈러 (Modular) => 나눗셈에서의 나머지를 구함

public void method1() {
		
		int num1 = 10;
		int num2 = 3;
		
		System.out.println("num1 : " + num1 + "\nnum2 : "+ num2);// 10, 3
		System.out.println("num1 + num2 : " + (num1 + num2));// 13
		// (num1 + num2) 괄호로 묶어줘야 13이라는 결과값이 나옴!
		// 만약에 묶지않고 출력하면 String(문자열)로 인식이 되기때문에 "10" + "3"결과값 103이 찍힘!
		
		System.out.println("num1 - num2 : " + (num1 - num2));// 7
		// 뺄셈의 경우 괄호로 묶지 않으면
		// 문자열과 num1을 하난로 묶어서 새로운 문자열을 만들기 때문에 오류가 발생!
		
		// 곱하기 나누기 연산 실행하고 결과 확인해보기!
		System.out.println("num1 * num2 : " + (num1 * num2));// 30
		System.out.println("num1 / num2 : " + (num1 / num2));// 3
		System.out.println("num1 % num2 : " + (num1 % num2));// 1
		// *, / % 우선순위가 +, - 보다 높기 때문에 묶지 않아도 먼저 연산이 됨
		// 단, 가독성을 위해 괄호를 사용하는 것을 권장.
		
		// 특이케이스!
		System.out.println(5/0); //Error!
		System.out.println(5%0); //Error!
		System.out.println(5.0/0); //Infinity 무한대 발생!
		
		// 정수를 0으로 나눌수는 없다!
		// ArithmeticException : / by zero 오류가 발생!!

2. 증감 연산자

단항연산자로서 한번에 1씩 증가(더하거나) 하거나 감소(빼거나) 하는 연산을 한다.

=> 먼저 증감을 할건지, 나중에 증감을 할건지 연산자의 위치에 따라 달라진다.

[표현법]

  • ++ : 값을 1씩만 증가시키는 연산자
  • -- : 값을 1씩만 감소키니는 연산자

연산자의 위치

  • 후위 연산 : 값++, 값-- => 값을 먼저 처리하고 나서 증가하거나 감소하겠다.
//후위연산
public void method1() {
int num = 10;
System.out.println("num : " + num); //10
num++; // num 변수의 값에다가 1을 증가시키겠다. ☆처리★
			//num + 1
	System.out.println("☆처리★ num : " + num); //11

	num--;
	System.out.println("num : " + num); //10

	System.out.println("num : " + num++); //10
	System.out.println("num : " + num); //11
}

public void method2(){
		int a = 10;
		int b = a++;
		
		System.out.println("a : " + a); //11
		System.out.println("b : " + b); //10 
		// b라는 변수에 a값을 먼저 대입하고 (선 처리 부분)
		// a라는 값을 증가 시킨다. ( 후 연산 )
		
		int c = 20;
		int d = c--;
		
		System.out.println("c : " + c); //19
		System.out.println("c : " + d); //20
		
}

public void method3( ) {
		//후위연산자
		int num1 = 20;
		int result = num1++*3;// num1의 값 20과 3을 먼저 곱해서 result에 대입 시켜준 다음 
                          // 개행값에 1을 더한다.
		System.out.println(result);//60
		System.out.println(num1);//21
		
	}

 

 

  • 전위 연산 : ++값, --값 => 먼저 값을 증감하고 그 값을 처리
public void method4() {
		int a = 10;
		int b = ++a; // b에는 11(선 연산)이 들어감 (후 처리)
		
		System.out.println("a : " + a); //11
		System.out.println("b : " + b); //11
		
		System.out.println("a : " + --a); //10
		
	}

 

 


3. 복합 대입 연산자

"=" 대입연산자

다른 산술 연산자랑 대입연산자가 결합한것. 이항연산자

⇒ 자기 자신과 해당 산술연산 후에 그 결과를 자기자신한테 덮어씌우는 것

  • +=
  • -=
  • *=
  • /=
  • %=
int a = 1;
a += 3;// 기존에 a라는 값에 3을 더하고 그 결과 값을 a에 다시 대입하겟다.
a = a + 3; //a += 3;와 같은 코드
public void method1() {
		
		int num = 12;
		
		System.out.println("현재 num : " + num);//12
		
		// num을 3 증가시키기
		num = num +3;
		System.out.println("3을 증가시킨 num : " + num);//15
		
		// num을 3 증가시키기
		num += 3;
		System.out.println("3을 증가시킨 num : " + num);//18
		
		// num을 3 감소시키기
		num -= 3;
		System.out.println("3을 감소시킨 num : " + num);//13
		
		// num을 3배 증가시키기
		num *= 3;
		System.out.println("3배 증가시킨 num : " + num);//45
		
		// num을 2배 감소시키기
		num /= 2;
		System.out.println("2배 감소시킨 num : " + num);//22
		
		// num을 2로 나눈 나머지를 num에 대입
		num %= 2;
		System.out.println("num에 2로 나눈 나머지를 대입한 값 : " + num); //0
				
	}

 


4. 논리 부정 연산자

논리값 (true/false)을 반대로 바꿔주는 연산

[표현법] !논리값

public void method() {
		System.out.println("true의 부정 : " + !true); //false
		System.out.println("flase의 부정 : "  + !false); //true
		
		boolean b1 = true;
		boolean b2 = !b1;
		
		System.out.println("b1 : " + b1); // true
		System.out.println("b2 : " + b2); // false
	}

}

 


5. 비교 연산자(관계연산자)

두개의 값을 가지고 비교, 이항연산자

비교연산을 한 결과 => 참일 경우 true, 거짓일 경우 false

특정 조건을 제시할 수 있는 조건문에서 쓰일 예정

 

종류

  • a < b : a가 b보다 작습니까?
  • a > b : a가 b보다 큽니까?
  • a <= b : a가 b보다 작거나 같습니까?
  • a >= b : a가 b보다 크거나 같습니까?

일치함을 비교 : 동등비교

  • a == b : a와 b가 일치합니까?
  • a != b : a와 b가 일치하지 않습니까?

⇒ 피연산자는 숫자, 결과값은 논리값

public void method() {
		
		int a = 10;
		int b = 25;
		
		System.out.println("a > b : " + (a < b )); //true
		
		System.out.println("a <= b : " + (a <= b)); // true
		System.out.println("25 <= b : " + (25 <= b)); // true
		
		boolean result1 = (a == b);
		System.out.println("result1 : " + result1); //false
		
		boolean result2 = (a != b);
		System.out.println("result2 : " + result2); //true
		
		System.out.println("a - b < 0 :" + (a - b < 0)); //true
		
		
		System.out.println("a가 짝수입니까? : " + (a % 2 == 0));	 //true	
		System.out.println("b가 짝수입니까? : " + (b % 2 == 0));	 //false	
		
	}

}

 


6. 논리 연산자

이항 연산자, 두개의 논리값을 연산하는 연산자

[표현법] 논리값 논리연산자 논리값 => 결과값도 논리값

종류

  1. AND 연산자 : 논리값 && 논리값좌항과 우항의 값이 모두 true여야만 최종 결과가 true
  2. OR 연산자 : 논리값 || 논리값좌항 또는 우항의 값중 하나라도 true이면 최종 결과가 true

 

AND

// AND
public void method1() {
		
		//	사용자가 입력한 정수값이 양수 "이면서(이고)" 짝수인지 확인 
		Scanner sc = new Scanner(System.in);
		
		System.out.print("정수 입력 : ");
		int num = sc.nextInt();
		
		boolean result = (num > 0) && (num % 2 == 0);
		//	&&의 의미 : ~~ 이면서, ~~이고, 그리고
		
		System.out.println("정수가 양수이면서 짝수 입니까? : " + result);
		
	}


public void method2() {
		//	입력한 정수값이 1이상 100이하인지 확인
		
		Scanner sc = new Scanner(System.in);
		System.out.print("정수 입력 : ");
		int num = sc.nextInt();
		
		// 1 <= num <= 100
		//num이 1보다 크거나 같고 "그리고" 100보다 작거나 같습니까?
		boolean result = (1 <= num) && (num <= 100);
		
		System.out.println("정수가 1 이상 100이하 입니까 ? : " + result);
		
	}

 

OR

//OR
public void method3() {
		
		// 사용자가 입력한 값이 A 인지 a 인지 확인
		Scanner sc = new Scanner(System.in);
		System.out.print("알파벳 입력 : ");
		char gender = sc.nextLine().charAt(0);
		
		
		// 문자의 경우 비교연산이 가능한가? => 왜?? int로 자동형변환이 되기 때문 (int)
		boolean result = (gender == 'A') || (gender == 'a');
		// || : ~~이거나, 또는
		
		System.out.println("알파벳 a또는 A입니까? : " + result);
	}

 

 

&&

두개의 조건이 모두 true일 때 결과가 true

  • true && true => true
  • true && false => false
  • false && true => false
  • false && false => false

 

 

||

두개의 조건중 하나라도 true이면 결과가 true

  • true || true => true
  • true || false => true
  • false || true => true
  • false || false => false

 

번외) deadcode

public void method4() {
		
		int num = 10;
		
		boolean result1 = false && (num > 0);
		
		// deadcode : 뒤의 비교연산 구문이 실행되지 않음.
		// 실행오류는 나지 않지만 굳이 결과값을 false일텐데 왜 쓰지?
		
		System.out.println("result1 : " + result1); //false
	}

'*JAVA*' 카테고리의 다른 글

[java] 조건문 - if문  (0) 2021.10.19
[java] 연산자 - 삼항연산자  (0) 2021.10.19
[java] Scanner  (0) 2021.10.19
[java] 출력문  (0) 2021.10.19
[java] 변수 - 형변환(Type Casting)  (0) 2021.10.19