int a=1;
sout(a++) -> 1 전위형
/**
이 부분을 풀어 쓰면
System.out.println(a)
a=a+1;
**/
a=1;
sout(++a); ->2 후위형
(int)10 / (int)4 = 2 //소수점 이하는 버려짐
(int)10 / (float)4.0 = 2.5 -> 범위가 넓은 float에 타입 맞춰짐
(int)3 / (int)0 -> 오류
(int)3 / (float)0.0 -> infinity
//큰 자료형의 값을 작은 자료형의 변수에 넣을 경우 명시적 형변환 필요
byte a = byte 10 + byte 20 -> 연산자 '+'가 자동으로 int 변환해서 더해줌 = 컴파일 에러
//명시적 형변환 했는데 크기가 넘어가면?
byte a = byte 10 * byte 20 -> 44출력 값손실
long c = int 1백만 * int 2백만
정상적으로 값이 나올까? x 연산 순서에 따라 계산을 해보자.
오른쪽(int 1백만 * int 2백만 = -오버플로우) ->
왼쪽 long = 이상한값 => long 형변환 해줬지만 이미 int 계산으로 오버플로우 값 들어감
//char 값 연산
'2' - '0' -> 50 - 48 = 2
**순자 영문자 유니코드 -> 알고리즘 문제 풀때 자주 나옴
'0'~'9' 48 ~ 57
'A'~'Z' 65 ~ 90
'a'~'z' 97 ~ 122
//나머지 연산에 음수를 대입하면? 절대값 변환후 수행 -> 결과값 같음
10 % 8 = 2
10 % -8 = 2
equals() 메소드 사용!!
char ch = 'v';
if(('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z')){
System.out.println("ok");
} // ok
• ! (논리 부정 연산자) : true와 false를 반대로 바꾼다.
x||y → x가 true면 항상 true x&&y → x가 false면 항상 false
('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z')
소문자 또는 대문자인지 확인하는 식이다.
사용자가 대문자 보다 소문자를 입력할 확률이 높다면 이 식은 효율적으로 처리!!
<<, >> (쉬프트 연산자)
: 피연산자를 2진수로 표현했을 때 각 자리를 이동시키는 연산자
// 쉬프트 연산이 곱셈이나 나눗셈의 연산보다 더 빠르다. -> 가끔 알고리즘때 사용한다!
// x<<n은 x*2^n의 결과와 같다.
// x>>n은 x/2^n의 결과와 같다.
대입 연산자. 우변의 값을 좌변에 저장하는 연산이다.
- 결합방향은 오른쪽에서 왼쪽이다.
`x=y=3`의 경우, `y=3`이 수행된 후에 `x=y`가 수행된다.
num += 1; // num = 9, 위의 식과 같다.
객체가 어떤 클래스인지, 어떤 클래스를 상속받았는지 확인하는데 사용하는 연산자
object instanceOf type
대체 이걸 어디서 사용하지?
→ 보통 레퍼런스 타입 변수가 레퍼런스 데이터 타입으로 타입 변환이 가능한지 확인하기 위해서 사용
class Animal {}
class Tiger extends Animal {}
class Rose {}
Animal animal = new Tiger();
if(animal instanceof Animal) // true
if(animal instanceof Tiger) // true
if(animal instanceof Rose) // false
화살표 연산자는 Java 8 버전부터 추가된 것으로, 람다 표현식과 함께 사용된다.
람다는 이후 14단원에서 이뤄어지기 때문에 자세하게 설명은 안하고 지나가겠다.
@FunctionalInterface public interface MyFunction{ public int func(int a, int b); }
위와 같이, 함수형 인터페이스(단 한개의 추상 메소드를 가진 인터페이지) 를 만들면, 선언된 단 하나의 메서드가 람다식과 연결되어 람다식을 사용할 수 있다.
MyFunction myFunc = (int a, int b) -> { return a + b };
재사용은 불가하다!
출처
https://github.com/Let-s-Study-Java/EssenceOfJava
https://xxxelppa.tistory.com