[day02] java-basic : 자바 연산자

2 분 소요

연산자

  • 컴퓨터에서는 단항과 이항연산자밖에 없다.
  • 단항연산자는 하나만 가지고 연산하는 것이다. (- , ! , 증감연산자 등)
  • 이항연산자는 두 수를 가지고 연산하는 연산자이다.
  • 컴퓨터는 왼쪽에서부터 오른쪽으로 이동하면서 두 개씩 연산한다.(참고 : 후위표현식/중위표현식)

  • 증감연산자는 개발자가 코드를 더 단순화하기 위해 탄생한 단항연산자이다.
  • 증감연산자가 없다면, num++num = num +1라고 이항연산자로 작성해야 한다.
  • num++++num 중에서는 ++num이 더 빠르다.
num = 20;
System.out.println(++num); // 21

num = 20;
System.out.println(num++); // 20 : System.out.println수행 후에 ++되기 때문이다.
  • 복합대입연산자 = 배정연산자 : 더한 다음에 변수에 대입하고 싶다면? num+=3

  • 논리연산자에서 컴퓨터가 인식하는 방식이 앞의 것이 참인지/거짓인지에 달려있기 때문에 교환법칙이 성립하지 않는다.
  • &&는 앞의 것이 False 면 무조건 False이기 때문에 뒤의 것은 아예 수행하지 않는다.
boolean bool = a++ > 0 && b++ >= 0 && c++ > 0;
  • 합집합보다 교집합이 우선순위가 높다.
  • 하지만 교집합을 무조건 먼저 수행하는 것이 아니라 왼쪽에 있는 연산부터 수행한다.
boolean bool = a++ > 0 || b++ >= 0 && c++ > 0;
  • 키보드로 입력받은 정수가 짝수인지 아닌지 판단하는 코드

    Scanner sc = new Scanner(System.in);
    
    // "정수를 입력하세요" 문장 출력
    System.out.print("정수를 입력하세요 : ");
    
    // 키보드로 정수 입력받기
    int num = sc.nextInt();
    
    // 결과 출력
    boolean result = (num > 0 && num % 2 == 0); 
    System.out.println(num + "의 짝수 유무 : " + result);
    
    sc.close();
    
    • 키보드로 입력받는 데이터형 : java.utill.Scanner
    • 자동 import 단축키 : crtl + shift + O
    • System.out : 표준 출력장치 / System.in : 표준 입력장치
    • 키보드로 정수 입력받는 메소드 : nextInt()
    • boolean result = (num > 0 && num % 2 == 0);에 따라 0이 입력되면 앞의 조건이 False이므로 뒤에 것은 아예 연산하지 않고 result가 False가 된다.

조건 연산자

  • 3항연산자는 참/거짓으로 결과가 나오는 조건식? 선택1(참일때) : 선택2(거짓일때);의 형식으로 사용한다.
  • 3항연산자의 조건식에는 논리형, 논리연산자, 관계연산자만 사용된다.

  • 3항연산자는 두 가지의 경우만 나타낼 수 있지만, 3항연산자 선택조건 안에 3항연산자를 한 번 더 쓰면 3가지 경우의 수를 표현할 수 있다.
  • 그 이상의 경우는 3항연산자를 잘 사용하지 않는다.
  • System.out.println(a>b? a: a<b ? b : 0);
  • 아래와 같이 중첩된 if ~ else문으로도 표현할 수 있다.
if(a>b) {
  System.out.println(a);
} else { // a<=b
  if(a<b) {
    System.out.println(b);
  }
  else { // a == b
    System.out.println(0);
  }
}
  • 속도면으로 봤을 때 if~else문보다는 조건연산자(=3항연산자)가 더 빠르다.

  • 대등한 관계의 여러 조건을 표현하려면 if ~ else을 계속 중첩시키는 것이 아니라, if ~ else if ~ else를 사용하면 된다.

  • 자동 formatting 단축키 : ctrl + shift + f

  • 제어문이란? 임의의 문장을 수행할지 말지 제한하는 것이다. 제어문에는 반복문과 조건문이 있다.

switch문(=다중선택문)

  • switch 뒤의 수식에는 정수형의 크기를 가지고 있는 것만 가능했지만, jdk7부터는 문자열도 가능해졌다.
  • 일반적으로 하나를 선택하고 나머지를 다 버려야하는 경우에는 if~else문을 많이 사용하고,
  • N개를 중복적으로 선택할 수 있는 경우에는 Switch문을 많이 사용해서 Switch문을 다중선택문이라고도 한다.

  • switch문 case에 break(분기문)가 없으면 break가 없는 case문이 전부 계속 수행하게 된다.
  • case문에 break가 존재하면 switch가 끝나는 브레이스(}) 로 바로 이동하게 된다.
  • default는 작성된 순서와 무관하다.

  • break가 먹히는 것은 switch / for / while / do~while 들이다.
  • 하나의 문자열을 입력받는 메소드 : nextLine()

  • 참조자료형은 동등비교(==) 불가하다.
  • 그래서 참조자료형은 .equals()를 사용해야 한다.
  • 기본자료형만 동등비교(==)가 가능하다.
  • 그래서 if문을 사용하면 .equals()로 문자열을 비교해야 해서 코드가 복잡하다.
  • 이때 Switch문을 사용하면 .equals()를 사용하지 않아도 되어서 코드를 단순화할 수 있다.
  • 단, jdk7버전부터만 switch문의 조건에 문자열을 쓸 수 있다는 점을 유의해야 한다.

  • 중첩된 switch문도 사용가능하다. 이때 break를 사용하면 가장 가까운 switch문을 탈출하게 된다.