
- class Object는 JAVA에서 모든 클래스의 superclass이다.
-> 모든 클래스의 최상위에 Object라는 클래스가 있음.- class Object의 멤버 메서드
-> boolean equals(Object obj)
-> int hashCode()
-> String toString()
-> Class<?> getClass()- JAVA의 모든 클래스는 만들어 주지 않아도 이미 equals와 toString 메소드를 가지고 있다.
자바는 두 객체의 동등함을 비교할 때 hashCode()와 equals() 메소드를 같이 사용하는 경우가 많음
1. hashCode()가 리턴하는 정수값이 같은지 확인
2. equals()가 true를 리턴하는지 확인
: 데이터 전달을 위한 DTO(Data Transfer Object)를 작성할 때 반복적으로 사용되는 코드를 줄이기 위해 레코드 사용.
Person 클래스
- private final 필드 (String name, int age)
- Getter(name, age)
- hashCode(), equals(), toString() 메소드 재정의
public record Person(String name, int age){ }이렇게 선언된 레코드 소스를 컴파일하면 private final 필드, 생성자, Getter, hashCode(), equals(), toString() 메소드 재정의 코드 자동 생성
: 자바 프로그램은 운영체제상에서 바로 실행되는 것이 아니라 자바 가상 머신(JVM)위에서 실행됨
-> 운영체제의 모든 기능을 자바 코드로 직접 접근하기 어려움
-> System 클래스는 운영체제 일부 기능 제공

: 문자열을 저장하고 조작할 때 사용
: String은 내부 문자열을 수정할 수 없기에 잦은 문자열 변경 작업을 해야 한다면 StringBuilder 사용
: 문자열이 구분자로 연결되어 있을 경우, String의 split을 이용하거나 StringTokenizer 클래스 이용
: 기본 타입의 데이터를 객체로 포장해주는 클래스
-> 이런 객체를 포장 객체라고 함
Auto Boxing / Auto Unboxing
: primitive 데이터를 알아서 wrapping 하여 객체로 만들어 줌 / 알아서 unwrapping 하여 primitive 데이터로 변환.
-> primitive 데이터를 배열에 넣을 수 있음
Object [] array = new Object [100];
int a = 20;
array[0] = a; // auto boxing
int b = (Integer)array[0]; // auto unboxing
: Math 클래스가 제공하는 메소드는 모두 static 이므로 Math 클래스로 바로 사용 가능.

: Date() 생성자는 컴퓨터의 현재 날짜를 읽어 Date 객체로 만듦.
Date now = new Date();
: static 메소드인 getInstance()메소드를 통해 컴퓨터에 설정되어 있는 시간대를 기준으로 Calendar 하위 객체를 얻을 수 있음
Calendar now = Calendar.getInstance();





: 정규표현식으로 문자열을 검증하는 matches 메소드 제공
boolean result = Pattern.matches("정규식", "검증할 문자열");
: @ 으로 작성되는 요소. 클래스 / 인터페이스를 컴파일하거나 실행할 때 어떻게 처리해야 할 것인지를 알려주는 설정 정보