Java

· Java
이펙티브 자바 Item 20을 읽으면서... "default 메서드에 equals와 hashCode, toString처럼 Object의 메서드를 재정의하지 말라"라는 문구가 있었습니다. 🤔 코드를 작성해보니..? 컴파일 에러가 발생한다..? 어라라..? 옛날에는 이게 가능했나보네 싶었고 왜 이제 컴파일 에러가 발생하는 걸까? 라는 궁금증이 생겼습니다. 혹은 똑똑한 intellij가 😎 만약 클래스 B는 의도적으로 Object 클래스를 구현하는 A 인터페이스를 구현할 수 있다면?? B는 Object 클래스와 Interface 중에서 어떤 equals를 사용해야 할까요..? (충돌이 일어날거 같다?) 찾아보니 이런 규칙이 있었다! 클래스는 항상 승리한다! 뭔가 멋있네요.. 명언같기도 하고 즉, 우선순위가 하..
· Java
사이드 프로젝트를 진행하면서 무심하게 Objects.equals() 메서드를 사용했었고 코드 리뷰를 받으면서 파라미터 두개의 타입이 Enum이면 == 비교 연산자를 사용하는게 어떤지 질문 받았다.Objects.equals(newUser.getSocial(), existingUser.getSocial());파라미터값 두개를 동시에 비교하려고 Objects.equals()를 무심하게 사용했었다.NPE(NullPointerException)를 방지하는 목적으로 비교하기 위해서 사용했었는데 생각없이 사용한 자신을 반성하고 왜 == 비교 연산자에 대해서 이야기 하셨는지 Objects.equals(), enum의 equals(), == 비교 연산자에 대해서 Test 해보면서 알아보려고 한다.  테스트에서 사용하는 ..
· Java
JVM(Java Virtual Machine) 자바 가상 머신 JVM(Java Virtual Machine)은 자바 프로그램 실행환경을 만들어 주는 소프트웨어입니다. OS에 종속받지 않고 CPU가 Java를 인식하고 실행할 수 있게 하는 가상 컴퓨터라고 말합니다. Java Compiler가 .java 파일을 .class 파일 즉, 바이트 코드(JVM이 이해하는 명령어 집합)로 만들면 이 코드가 자바 가상 머신 환경에서 실행되면서 OS에 종속받지 않게 됩니다. 언어 마다 사용할 수 있는 방법은 다르겠지만 Java 뿐만 아니라 .class 파일을 통해서 JVM를 사용하는 언어들이 있습니다. Java Compiler의 javac 명령을 통해서 .class 파일을 생성할 수 있습니다. .class 파일을 ja..
· Java
var가 타입을 추론해 준다는 것은 알고 있었지만 부정적인 의견들이 많아 정적 언어인 자바에서는 자주 안 쓰는구나 하고 말았었는데 최근 코드 리뷰를 받으면서 이야기가 나오게 되었고 알고 안 쓰는 거랑 잘 모르는데 안 쓰는 건 차이가 있다고 생각이 들어 정리해 보고자 작성하게 되었습니다.지역 변수 타입 추론Java 10부터 지역 변수에 대한 Type Inference가 가능한 var 키워드를 제공해줍니다. var는 변수를 선언과 초기화가 동시에 일어날 때 타입을 생략할 수 있으며, 컴파일러가 타입을 추론합니다. 문자열 변수에 정수를 할당하니 컴파일 에러가 나오는것을 볼 수 있었습니다.컴파일 시점에 var에 들어갈 타입을 추론하고 바이트 코드에는 추론된 타입이 들어가기 때문에 런타임 오버헤드가 생기지 않습..
· Java
추상 클래스와 인터페이스는 존재 목적이 다르다. 추상 클래스: 자신을 상속받아서 기능을 이용하고 확장하는 용도 인터페이스: 함수의 구현을 강제하여 구현 객체의 같은 동작을 보장하는 용도 1. 클래스는 하나의 추상 클래스만 상속받을 수 있지만 인터페이스는 여러 개 구현할 수 있다. 즉 인터페이스는 여러개 구현할 수 있지만 java는 단일 상속만 허용하기 때문이다. 왜...? 단일 상속일까? 인터페이스의 목적은 함수의 구현을 강제한다고 했다. 즉 서로 다른 Interface에 같은 추상 메서드가 있을 때 Override가 필수이기 때문에 자신이 Override로 작성한 메서드가 호출이 될 것이다. public class Main extends A implements C, D { @Override public..
uhanuu
'Java' 카테고리의 글 목록