1.
- 실행문이 담겨있는 main method를 확인하자
- Test072 class의 boolean type 변수 isAvailable "false"를 출력한다.
- 그 다음 Test072에 있는 메서드 doStuff를 실행한다.
- 이후 변수 isAvailable의 값을 출력하면 "true"가 출력되는 것을 볼 수 있다.
- 이때 doStuff 메서드는 static으로 만들었기때문에
자기자신객체를 선언하고 그안의 메서드를 호출하는 식으로 사용할 필요가없다.
- 그냥 isAvailable = doStuff();를 해주어도 메서드 사용이 가능하다.
2.
- LocalDate형의 date에 LocalDate.of()메서드를 이용해서 날짜를 받아 저장했다.
- LocalDate : [년,월,일]과 같은 날짜만 표현하는 클래스 (시간은 포함하지 않는다)
LocalDateTime : [년,월,일,시,분,초]를 표현하는 클래스
- LocalDate.now(); // 오늘
LocalDateTime.now(); // 지금
LocalDate.of(2020, 11, 13); // 2020년11월13일
LocalDateTime.of(2020, 11, 13, 23, 23, 50); // 2020년11월13일23시23분50초 Year.of(2020).atMonth(11).atDay(13).atTime(10, 30);// 2020년11월13일 10시30분00초
- 이때, LocalDate형의 매서드 plusDays()는 기준이 되는 변수의 값을 변경하는 것이아니라는 것을 실행결과를 통해 확인할 수 있다.
3.
- Exception 으로 예외처리는 반드시 처리를 해줘야한다.
- 그런데 readCard메서드에서 Exception을 호출한 곳으로 던지는 throws를 사용했기때문에
readCard를 호출한 라인에서 에러가 발생한다.
- 에러가 난 라인에서 try-catch문 또는 throws문을 이용해 예외처리를 마무리 해주어야한다.
- 만약 Exception을 RuntimeException으로 변경하면 어떤 결과가 나올까?
- 예외처리를 할 라인에서 따로 예외처리를 마무리해주지 않아도 오류없이 잘 컴파일이 완료된다.
- RuntimeException 클래스를 상속받는 자식 클래스들은 치명적인 예외상황을 발생시키지 않는 예들로 구성되므로 트라이캐치문을 사용하지 않아도 되지만 프로그램을 작성하면서 예외가 발생하지 않도록 조심해야한다.
- 그 외의 익셉션 클래스에 속하는 자식클래스들은 치명적인 예외상황을 만드므로 반드시 트라이캐치문을 사용해야한다.
4.
- .equals()는 메서드
- == 은 연산자
- equals 메소드는 비교하고자 하는 대상의 내용 자체를 비교하지만,
== 연산자는 비교하고자 하는 대상의 주소값을 비교한다.
- 이렇게 통채로 대입해주면 같은 주소값을 공유하므로
== 연산자를 통해 비교했을때 true가 발생한다.
5.
- 실수를 float 타입 변수에 저장하려면 리터럴 뒤에 f 나 F를 붙여야한다.
- double형이 float형보다 크기 때문에
강제형변환이 필요하다.
- 빨간줄부분 처럼 변경해주면
오류없이 진행할 수 있다.
6.
- static 변수는 Class생성과 동시에 생성되어 1개의 공간을 같이 공유한다.
따라서, static int s로 선언한 변수 s는 값이
- 최종적으로 변경된 값을 같이 가져온다.
- 그런데 왜 마지막에 넣은 100이 아니라 125일까?
- 이 부분에 해답이있다.
처음에 코드를 실행했을때 ns=50 s = 0이다. 즉 if문이 true
s에 ns의 값 50을 저장한다.
두번째 코드를 실행했을때도 조건문이 true 따라서 s에는 ns의 값 125를 저장했다.
마지막 코드는 ns에 100을 넣는데, if문을 따져보면 125 < 100 이므로 false가 된다.
따라서 s에 ns의 값을 넣지 못하고 125가 된다.
7.
- 배열을 선언할때는 둘 중 하나만 해야한다.
- 크기를 정했으면 크기만 선언해서 idx를 통해 값을 하나씩 넣거나
- 크기를 정하지말고 값을 넣어서 크기를 간접적으로 정해주거나
- 쉽게생각하면 배열은 크기가 선언되는 순간 완성인 느낌이다 :)
int array[] = new int[3];
int array2[] = {1,2,3};
int array3[] = new int[] {1,2,3};