논리 값을 부정하여 반대 값으로 변경
제어문을 활용할 때 많이 쓰임
boolean bool1 = true;
boolean bool2 = !bool1;
System.out.println(bool2); // false
피연산자의 값에 1을 더하거나 빼는 연산자로
위치에 따라 결과 값이 다르게 나타남
int a = 10;
int a = ++a;
System.out.println(a + ", " + b);
int a = 10;
int a = a++;
System.out.println(a + ", " + b);
일반 수학과 동일한 연산 방법, 우선순위
단, %는 나누기의 나머지 값을 구하는 연산
int a = 10, b = 20, c = 0;
c = a * b;
c = a / b;
c = a % b;
int a = 10, b = 20, c = 0;
c = a + b;
c = a - b;
데이터가 같은지, 다른지 비교할 때 쓰이며
항상 결과값은 논리 값(true, false)으로 나타남
int a = 10;
int b = 10;
System.out.println(a == b); // true
double a = 1.23;
double b = 3.14;
System.out.println(a != b); // true
논리 값 두 개를 비교하는 연산자
다른 연산자와 대입 연산자가 결합한 것으로
자기 자신과 연산 후 연산 결과를 자기 자신에게 누적 대입
* 증감 연산과 비슷해 보이지만 증감연산자(++, --)는 1씩 증가
대입 연산자는 원하는 값을 증가시키고 그 변수에 저장 가능
조건식 ? 식1 : 식2;
조건식의 결과 값에 따라 연산을 처리하는 방식으로
결과 값이 참일 경우 식1, 거짓일 경우 식2 수행
삼항 연산자 안에 삼항 연산자를 중첩하여 쓰는 것도 가능
int result1 = a > b ? a++ : b--;
int result2 = a < b ? a++ : (b == 0 ? a-- : b++);
package edu.kh.op.ex;
public class ExampleRun { // 코드 실행용 클래스
// 메인메서드 필수 작성
public static void main(String[] args) {
// OpExample 생성
// -> OpExample이라는 클래스(설계도)를 이용해서
// 객체를 생성하는데, 그 객체 이름이 opEx 다.
OpExample opEx = new OpExample();
// 같은 패키지 (edu.kh.op.ex) 안에 있는 클래스는
// import를 하지 않아도 불러다 쓸 수 있다!
//opEx.ex1(); // opEx가 가지고 있는 ex1() 메서드 실행
//opEx.ex2();
//opEx.ex3();
opEx.ex4();
}
}
package edu.kh.op.ex;
import java.util.Scanner;
public class OpExample { // 예제 코드 작성용 클래스
// ex1() method : 객체 지향 프로그래밍에서 OpExample 객체와 관련된 함수
// -> OpExample이 가지고 있는 기능 중 ex1() 이라는 기능
public void ex1() {
// 증감(증가, 감소) 연산자 : ++ , --
int iNum1 = 10;
int iNum2 = 10;
// ?
iNum1++;
iNum2--;
System.out.println("iNum1 : " + iNum1); // 11
System.out.println("iNum2 : " + iNum2); // 9
// 전위연산
int temp1 = 5;
System.out.println( ++temp1 + 5 ); // 11
// 6 + 5 -> 11
// 후위연산
int temp2 = 3;
System.out.println( temp2-- + 2); // 5
// 3 + 2 -> 5
// 3-- -> 2
System.out.println(temp2);
int a = 3;
int b = 5;
int c = a++ + --b;
// 3++ + --5
// 3++ + 4
// c = 7
// 3++ -> 4
// 최종적으로 a,b,c는 각각 얼마?
System.out.printf("%d / %d / %d\n", a, b, c);
// 4 / 4 / 7
}
public void ex2() {
// 비교 연산자 : > , < , >= , <= , == , !=
// - 비교연산자의 결과는 항상 논리값(true/false)
int a = 10;
int b = 20;
System.out.println( (a == b) == false ); // true
// (false) == false -> true
int c = 4;
int d = 5;
System.out.println( (++c != d) == (--c != d) ); // false
// ++4(5) != 5 -> false
// --5(4) != 5 -> true
// false == true
// --> false
}
public void ex3() {
// 논리 연산자 : &&(AND) , || (OR)
// && (AND) : 둘 다 true 면 true, 나머지는 false
// 와, 그리고, ~면서, ~부터 ~까지, ~사이
int a = 101;
// a는 100 이상 이면서 짝수인가?
System.out.println( (a >= 100) && (a % 2 == 0) ); // false
int b = 5;
// b는 1부터 10까지 숫자 범위에 포함되어 있는가?
// 1~10 -> b는 1보다 크거나 같으면서, 10보다 작거나 같다
System.out.println( (b >= 1) && (b <= 10) ); // true
// || (OR) : 둘 다 false면 false, 나머지 true
// 또는, ~거나
int c = 10;
// c는 10을 초과하거나 짝수인가?
System.out.println( (c > 10) || (c % 2 == 0) );
}
public void ex4() {
// 삼항 연산자 : 조건식 ? true 수행될 값 : false 수행될 값
// * 조건식: 연산결과가 true / false 인 식
int num = 30;
// num 이 30보다 크면(초과) "num은 30보다 큰 수이다"
// 아니면 "num은 30 이하의 수이다" 출력
String result = num > 30 ? "num은 30보다 큰 수이다" : "num은 30이하의 수이다";
System.out.println(result);
System.out.println("----------------------------");
// 입력 받은 정수가 음수인지 양수인지 구분
// 단, 0은 양수로 처리
// ex)
// 정수 입력 : 4
// 양수 입니다.
// 정수 입력 : -5
// 음수 입니다.
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력 : ");
int input = sc.nextInt();
String result2 = input >= 0 ? "양수입니다" : "음수입니다";
System.out.println(result2);
}
}