의문점 공부하기/📌 Java 54

📌 Java에서 final의 기능은 무엇인가?

final은 3가지 용도로 사용된다 ▶ final 클래스 final이 클래스 이름앞에 사용되면 클래스를 상속받을 수 없음을 지정한다. final class FinalClass{ ...... } class Subclass extends finalClass{ //컴파일 오류 발생 ..... } -위 예시코드의 경우 FinalClass를 상속받아 Subclass를 만들 수 없다 ▶ final 메소드 메소드 앞에 final이 붙으면 이 메소드는 더이상 오버라이딩 할 수 없음을 지정한다 자식 클래스가 부모 클래스의 특정 메소드를 오버라이딩하지 못하게 하고 무조건 상속 받아 사용하도록 하고자 한다면 final로 지정하면 된다 Public class Superclass { protected final int fina..

📌 두 객체가 동일한 hashCode를 가지면 Equals()가 참이어야 한다?!

▶ hashCode 란?! 객체를 식별 할 수 있는 하나의 고유 정수 값 앞서 '==' 과 'equals'의 차이를 비교했는데, '==' 는 reference가 같은지 검사했다. 이는 동일성 : 주소 값을 비교 ( == ) , equals는 내용이 같은지 검사 했다. 이는 동등성 : 객체 내부의 값을 비교 (equals와 hashCode를 재정의 하여 비교) equals로 같은 객체라면 반드시 hashCode도 같은 값이여야 한다 하지만 반대로 hashCode가 같은 값이더라도 equals로 같은 객체가 아닐 수 있다는 것을 유의해야 한다. ++같은 파라미터를 이용해야 한다 +++equals()와 hashCode는 모든 Java 객체의 부모인 Object 클래스에 정의되어 있기 때문에, Java의 모든 ..

📌 ==와 equals의 차이점은 무엇일까?

프로그램을 작성하다보면 두 객체가 같은지 비교하는경우가 많다 기본 타입의 값을 비교하기 위해선 == 연산자를 사용하지만, 객체 비교를 위해 ==연산자를 사용하면 잘못된 결과가 나올 수 있다. ▶객체 비교를 위해선 equals() 메소드를 사용해야 한다 ==연산자로 두 객체 비교하면 어떤 문제가 발생할까? public static void main(String[] args) { Point a = new Point(2,3); Point b = new Point(2,3); Point c = a; if(a==b){ //false System.out.println("a==b"); } if(a==c){ //true System.out.println("a==c"); } } } 예시를 통해 알아보자~! 레퍼런스 a와 ..

📌 JDK와 JRE의 차이점은 뭘까?

JDK (Java Development Kit) - 자바 개발자를 위한 상업용 소프트웨어로 자바 컴파일러 등의 개발 도구와 JRE(Java Runtime Environment) 로 구성된다 JRE(Java Runtime Environment) - 자바 응용프로그램이 실행될 때 필요한 소프트웨어들로, 개발자가 활용 할 수 있는 java API (API: 이미 컴파일된 다양한 클래스 라이브러리) 와 JVM(Java Virtual Machine: 자바 가상 기계)을 포함한다. 개발자가 아닌 일반 사용자의 경우 JRE만 필요하며, JRE만 따로 다운받을 수 있다. ++ Java는 플랫폼에 독립적으로 설계되었다 --한 번 작성되고 컴파일된 java code는 운영체제나 CPU 등 플랫폼에 상관없이 자바 가상 기계..