[Java] OCAJP-7

🐷Jinie (juniorDeveloper)·2020년 11월 13일
0

Java

목록 보기
10/12

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};
profile
ᴘᴇᴛɪᴛs ᴅᴇ́ᴠᴇʟᴏᴘᴘᴇᴜʀ. ᴘʀᴏɢʀᴀᴍᴍᴀᴛɪᴏɴ = ᴘʟᴀɪsɪʀ 💕

0개의 댓글