on
JAVA 프로그래밍 17.2장 Reserved Keyword
JAVA 프로그래밍 17.2장 Reserved Keyword
Java Reserved word에 대한 것
Reserve는 문법을 위하여 define되어 있기 때문에 다른 용도로 사용할 수 없다.
assert
assertion: T F를 판단하는 과정, 잘못된 상황에 처했는지 판단하기 위함
로직을 구성한다기 보다 조건을 파악해서 프로그램의 무엇인가 잘못되었음을 파악하기 위한
디버깅에 관여한다고 할 수 있다.
while이 시작하기 전에 n이 1이 되어야 한다는 조건이 있다면 이 조건을 판단해야 한다.
while 루프가 끝나고 나면 n >= limit이라는 조건하에 종료가 되는데 이 조건이
맞는 것인지 확인되는 작업이 필요하다. 즉 while이 끝났는데 n < limit 인 경우가 발생하면
안돼므로 해당 조건을 검사해줘야 한다.
assert n == 1;
이클립스에서 동작시키려면 Run configuration에서 VM arguments를 누르고
-ea를 추가해서 실행하면 된다.
assert expression1;
expression1을 수행해서 True이면 넘어가고 false이면 AssertionError를 Throw 한다.
assert expression1: expression2;
expression1을 해서 True이면 넘어가고 false이면 expression2를 계산해서
해당 return value를 같이 보여준다.
20번 문장
30번 문장
34번 문장 ' : ' 존재함
assert this.count>=0 : this.count
assertTest1
1씩 증가시켜야 하는데 2씩 증가시킴
assert val==1 에서 문제가 발생한다.
assertTest2
1만 감소해야 하는데 2만큼 감소를 시켜버리면 동일한 에러가 생긴다.
assertTest3
제대로 if문이 수행되면
this.count >=0 인지를 확인하고 false이면 this.count를 return 해주는 것
앞에서 -1 이라는 에러를 일부러 발생하면 실제로 Console에 에러가 발생한다.
strictfp
Floating Point를 다루는 연산을 Strict 하게 하겠다!!
이쪽의 계산과 저쪽의 계산값이 달라지는 것을 방지하기 위한 작업이다.
인터페이스 앞에 쓰거나 class 앞, 메소드 앞에서 선언하고 사용하면 된다.
volatile
Java 변수를 Main Memory에 저장하는 구조.
원래는 Cache를 활용하여 사용하지만 사실 Main Memory는 변경되는 것이 없다.
속도는 좀 늦더라고 Main Memory에서 직접 Read Write하라는 것.
똑같은 count를 Main에서 가져와서 사용을 하게 되면
CPU1은 증가하고 CPU2는 읽기만 한다고 하는 경우 올바르게 사용이 된다.
Cache의 경우 오류가 발생
counter를 선언할 때 volatile 이렇게 해주면 Main Memory에서 읽겠다라는 것
성능의 경우 느려지지만 변수 값 일치를 보장해야 하는 경우 사용할 수 밖에 없다.
Transient
Seriallize 하는 과정에서 제외하고 싶은 경우 사용할 수 있다
Point Class
transient 선언을 하면 값을 보내게 될때 해당 변수는 안보낼 수 있다.
from http://handong201.tistory.com/89 by ccl(A) rewrite - 2021-12-12 19:02:02