[day02] java-basic : 자바 연산자
연산자
- 컴퓨터에서는 단항과 이항연산자밖에 없다.
- 단항연산자는 하나만 가지고 연산하는 것이다. (
- , ! , 증감연산자
등) - 이항연산자는 두 수를 가지고 연산하는 연산자이다.
-
컴퓨터는 왼쪽에서부터 오른쪽으로 이동하면서 두 개씩 연산한다.(참고 : 후위표현식/중위표현식)
- 증감연산자는 개발자가 코드를 더 단순화하기 위해 탄생한 단항연산자이다.
- 증감연산자가 없다면,
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문을 탈출하게 된다.