
java.lang패키지에 있는 클래스만 사용할 수 있다.java.lang패키지는 자바프로그래밍 설계의 기본적인 기능을 제공하는 클래스의 모임이다.Package java.lang
Provides classes that are fundamental to the design of the Java programming language.
String, StringBuffer
Process, Runtime, Thread
Math, StrictMath
Exception Throwable, Error
Package, Class, ClassLoader
Wrapper, System, Stream클래스, 메소드, 인스턴스 및 클래스 변수를 사용할때 사용한다.
패키지는 서로 연관되어서 작동하는 일련의 클래스로 구성된다. 같은 패키지에 있는 클래스끼리는 서로 다른 클래스에 있는 코드를 접근 할 수 있도록 하고 외부에서는 일부 클래스,메소드만 사용할 수있도록 하게 하기 위해 접근제어자를 쓴다.
반드시 파일 이름에 해당하는 클래스가 반드시 존재해야한다.
public으로 선언된 클래스가 소스내에 있다면, 그 소스파일의 이름은 public인 클래스 이름과 동일해야한다.
Q2. hashcode는 equals나 동등연산시 사용될까?

equals()로 메소드 연산 시 비교되는 참조변수는 객체의 번지를 전달하므로 hashCode는 사용되지 않는다. equals()내부는 동일하게 동등연산(==)을 사용하므로 둘다 hashCode를 사용하지 않는다.
equals()와 동등연산에서 hashCode가 사용된다고 오해했던 이유
hashCode는 equals,동등연산시 동일하게 사용된다고 생각했다.

equals연산 시 전달되는 매개변수는 `toString()`값처럼 나와서 toString() 메서드가 사용된다고 생각했다.(객체명.toString()하지 않아도 객체 이름만 출력할 경우 `toString()`을 컴파일러가 자동으로 붙여 컴파일 하기 때문이다.) `toString()` 메서드를 보면 `클래스 타입 이름 @ 객체주소 해시코드`로 구성되어 hashCode()가 사용된다고 생각했다.


IntelliJ에서 디버깅할 때, 객체를 변수로 표시하면 기본적으로 해당 객체의 toString() 메서드가 호출되어 결과값이 나타난다고 한다. 참조변수는 객체의 번지를 가르키지 toString()값은 디버깅하는데 도움이 되도록 사용되는것임을 오해하지 말자.