자바16 7. 자바 직렬화란 무엇일까요? 또 언제 사용할까요? 자바를 다루면서, 더 정확히는 Springframework를 다루면서 객체에 대해 활용할 상황을 겪는다면 심심치 않게 직렬화(Serialize)에 대해서 듣게 된다. 대체 뭐길래 자주 듣는 것인가, 언제/어떻게 활용할 수 있는가 한번 알아보자. 직렬화(Serialize) 자바에서 직렬화란 자바 시스템 내부에서 사용되는 객체를 외부의 자바시스템에서 사용할 수 있도록 byte 형태로 전환하는 기술을 말한다. 거꾸로 자바 시스템이 외부에서 byte형태의 데이터를 받고 객체로 변환하는 기술을 역직렬화라고 한다. Book book = new Book(); System.out.println(books[0]); /** * com.example.test.BookTest$Book@3d00c2ae */ 만들어낸 객체에 t.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 7. 27. 6. throw와 throws의 차이는 무엇인가요? 자바에서 프로그램이 비정상 종료하는 가장 대표적인 경우는 Error를 만나는 경우와 Exception을 만나는 경우이다. Exception을 만나는 경우 에러를 처리하는 복구 로직을 통해 프로그램의 비정상 종료를 막고 원활한 서비스를 돕는다. (물론 Exception Handling의 의미는 훨씬 깊고 넓다. 언급하지 않은 의미가 훨씬 많으니 “Exception”에 대해서는 따로 공부하자.) throw 예외를 고의로 발생시키는 역할을 한다. public class File { ... public File(String pathname) { if (pathname == null) { throw new NullPointerException(); // 예외 던지기 } this.path = fs.normalize.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 7. 25. 5. 자바에서 final의 기능은 무엇입니까? final은 사전적 의미와 마찬가지로 ‘마지막’이라는 의미를 지닌다. final을 통해 객체는 변경될 수 없는 성질(불변성)을 가지게 되고 final은 거의 모든 대상에 사용될 수 있다. 대상 의미 멤버변수 값을 변경할 수 없는 상수가 된다. 지역변수 값을 변경할 수 없는 상수가 된다. 클래스 변경(확장)될 수 없는 클래스를 의미하게 된다. 따라서 final 클래스는 다른 클래스의 조상이 될 수 없다. 메소드 변경(확장)될 수 없는 메소드를 의미하게 된다. final 메소드는 Override를 통해 재정의 될 수 없다. + 현업이나 대규모 프로젝트에 가면 기능 단위 메소드에 final 키워드를 통해서 더 이상의 변경을 금지하는 의미를 표현하기도 한다. 변수에 적용된 final 앞에 final이 붙은 변수.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 7. 24. 4. equals()와 hashcode()를 같이 재정의해야 하는 이유 객체의 동등성과 동일성에 대해서 정리할 필요가 있다. 동일성 : 같은 주소값을 가짐 동등성 : 객체 내부에서 값을 비교 (hashCode와 equals를 재정의하여 비교) 우리가 == 과 equals()의 차이점을 String Type의 변수에서 확인했듯이 ==은 동일성을 판단하는 연산자였고 equals()는 동등성을 판단하는 메서드였다. equals() public boolean equals(Object obj) { return (this == obj); } 위 equals 메서드는 Object 클래스 내부에서 선언된 equals이다. this와 파라미터로 받은 obj의 주소값을 비교하고 그 결과 논리값을 반환한다. 보통 새로운 클래스를 만들게 되면 이 equals()를 재정의하여 객체 사이의 동등성을.. 백엔드 개발자라면 대답해야 할 100가지 질문 2023. 7. 20. 이전 1 2 다음