
- 자바는 특이하게 문자열과 문자열을 더할 수 있다
-> 문자열1뒤에 문자열2가 이어서 붙여지는 형식으로 더해진다- 문자열과 숫자를 더하면 자바가 숫자를 문자열로 바꿔준다
->위 예제에서 실제로는 "a + b = " + "10" 인 셈이다자바는 문자열인 String 타입에 다른 타입을 더하는 경우 대상 타입을 문자열로 변경한다 -> 문자열에 더하는 것은 다 문자열이 된다
수학이랑 우선순위는 똑같다
우선 순위는 상식선에서 생각하면 대부분 문제가 없다

이런식으로 조금이라도 복잡한 경우 괄호를 명시적으로 사용하는 것이 더 명확하고 이해하기 쉽다.
- 코드를 몇자 줄여서 모호하거나 복잡해 지는 것 보다는 코드가 더 많더라도 명확하고 단순한 것이 더 유지보수 하기 좋다
- 연산자 우선순위가 애매하거나 조금이라도 복잡하다면 언제나 괄호를 고려하자
int a = 0;
++a;
이 코드는 아래 그림과 같이 수행된다

증감 연산자는 피연산자 앞에 두거나 뒤에 둘 수 있으며, 연산자의 위치에 따라 수행되는 시점이 달라진다
- ++a : 증감 연산자를 피연산자 앞에 둘 수 있다 이것을 앞에 있다고 해서 전위(Prefix)증감 연산자라 한다
- a++ : 증감 연산자를 피연산자 뒤에 둘 수 있다 이것을 뒤에 있다고 해서 후위(Postfix)증감 연산자라 한다
int a = 1;
int b = 0;
b = ++a;
//a = a+1;
//b= a;
int a = 1;
int b = 0;
b = a++;
//b = a;
//a = a+1;
첫 번째 코드의 b값은 2이고
두 번째 코드의 b값은 1이다
첫 번째는 a의 값을 먼저 증가시키고, 그 결과를 b에 대입
두 번째는 a의 현재 값을 b에 먼저 대입하고, 그 후 a값을 대입후위 연산자는 다른 연산이 먼저 수행된후 증감 연산이 수행된다
증감 연산자를 단독으로 사용하는 경우에는 전위나 후위나 연산 결과는 같다

비교 연산자를 사용하면 참(true) 또는 거짓(false)라는 결과가 나온다
따라서 결과를 boolean변수에 담을 수 있다
String str1 = "문자열1";
String str2 = "문자열2";
boolean result1 = "hello".equals("hello"); //리터럴 비교
boolean result2 = str1.equals("문자열1"); //문자열 변수, 리터럴 비교
boolean result3 = str1.equals(str2); //문자열 변수 비교
문자열을 비교할 때 ==을 쓰는건 지양하자
&&: 두 피연산자가 모두 참이어야 true를 반환한다 둘 중 하나라도 거짓이면 false를 반환한다
||: 두 피연산자 중 하나라도 참이면 true를 반환한다 둘 다 모두 거짓이면 false를 반환한다
!: 피연산자의 논리적 부정을 반환한다 참이면 거짓을, 거짓이면 참을 반환한다논리 비교 코드를 작성할 때
a < 10 && a <20 이라고 작성하는 거 보다는
10 < a && a < 20 이라고 작성하는게 가독성이 더 좋다
산술 연산자와 대입 연산자를 한번에 축약해서 사용할 수 있는데, 이것을 축약(복합) 대입 연산자라 한다
1. +=
2. -=
3. *=
4. /=
5. %=
실무에서 거의 안쓰니까 필요할때 찾아보도록 하자