Oject는 최상위 부모 클래스이다.
= Object는 모든 클래스의 부모이다
= 모든 클래스는 Object 클래스를 상속하고 있으므로 Object안에 있는 메소드를 사용할 수 있다. Object클래스가 가지는 메소드를 오버라이딩해서 사용하는 것도 가능하다.
boolean equals(Object obj): 전달 받은 객체와 같은지 여부를 반환한다.(동일하면 true, 다르면 false)
int hashCode() : 객체의 해시 코드를 반환한다.
String toString() : 객체의 정보를 문자열로 반환한다.
인스턴스의 정보를 문자열로 반환
반환되는 문자열은 클래스 이름과 구분자 ‘@’를 사용하며, 그 뒤로 16진수 해시코드가 붙게된다. (해시코드는 인스턴스 주소)
예) 클래스명@16진수해시코드
equals 메소드는 매개변수로 전달받은 인스턴스와 == 연산해서 true, false 로 반환
일한 인스턴스인지를 비교하는 기능
객체의 메모리 주소값을 이용해 해시코드를 만들어서 반환
해시코드: 객체를 식별하는 값
Object 클래스의 명세에 작성된 일반 규약에 따르면 equals() 메소드를 재정의 하는 경우 반드시 hashCode() 메소드도 재정의 하도록 되어 있다. 만약 hashCode()를 재정의 하지 않으면 같은 값을 가지는 동등 객체는 같은 해시코드 값을 가져야 한다는 규약에 위반되게 된다.
(강제성은 없지만 규약대로 작성하는 것이 좋다)
String 클래스는 문자열을 나타내는 자료형이다.
문자열 관련된 작업을 할 때 유용하게 사용할 수 있는 다양한 메소드가 포함되어 있다.
String 인스턴스는 한 번 생성되면 그 값을 읽기만 가능하고 변경할 수는 없다. 이러한 객체를 불변 객체(immutable object) 라고 한다.
즉, 자바에서 덧셈(+) 연산자를 이용하여 문자열 결합을 하는 경우
기존 문자열이 변경되는 것이 아닌 문자열이 합쳐진 새로운 String 인스턴스가 생성되는 것이다.
- charAt() 해당 문자열의 특정 인덱스에 해당하는 문자를 반환한다. 인덱스는 0부터 시작하는 숫자 체계를 의미하며 인덱스를 벗어난 정수를 인자로 전달하는 경우에는 IndexOutOfBoundsException이 발생한다.
- compareTo() 인자로 전달된 문자열과 사전 순으로 비교를 하여 두 문자열이 같다면 0 을 반환, 인자로 전달된 문자열보다 작으면 음수를, 크면 양수를 반환한다. 단, 이 메소드는 대소문자를 구분하여 비교한다.
- compareToIgnoreCase() 대소문자를 구분하지 않고 비교한다
- concat() 문자열에 인자로 전달된 문자열을 합치기해서 새로운 문자열을 반환한다.
원본 문자열에는 영향을 주지 않는다.- indexOf() 문자열에서 특정 문자를 탐색하여 처음 일치하는 인덱스 위치를 정수형으로 반환한다. 단, 일치하는 문자가 없는 경우 -1을 반환한다.
- lastIndexOf() 문자열 탐색을 뒤에서부터 하고 처음 일치하는 위치의 인덱스를 반환한다.
단, 일치하는 문자가 없는 경우 -1을 반환한다.
trim() 문자열의 앞 뒤에 공백을 제거한 문자열을 반환한다.- toLowerCase() 모든 문자를 소문자로 변환시킨다. 원본에는 영향을 주지 않는다.
- toUpperCase() 모든 문자를 대문자로 변환시킨다. 원본에는 영향을 주지 않는다.
- substring() 문자열의 일부분을 잘라내어 새로운 문자열을 반환한다. 원본에 영향을 주지 않는다.
- replace() 문자열에서 대체할 문자열로 기존 문자열을 변경해서 반환한다. 원본에 영향을 주지 않는다.
- length() 문자열의 길이를 정수형으로 반환한다.
- isEmpty() 문자열의 길이가 0이면 true를 반환, 아니면 false를 반환한다. 길이가 0인 문자
열은 null과는 다르다.- split() 정규표현식을 이용하여 문자열을 분리한다.
String
: 불변. 변경할 수 없음.
StringBuilder
: Thread Safe 함
synchronized 키워드가 선언되어 있기 때문에 멀티스레드에서 안전하지만 속도는 StringBuilder에 비해 느리다.
StringBuffer
: Thread Safe 하지않음
래퍼 클래스는 기본 타입의 데이터를 인스턴스화 해야하는 경우에 사용.
특정 메소드가 매개변수로 객체 타입만 요구하게 되면 기본 타입의 데이터를 먼저 인스턴스로 변환 후 넘겨줘야한다.
8가지에 해당하는 기본 타입의 데이터를 인스턴스화할 수 있도록 하는 클래스를 래퍼클래스 라고함
(감싼다는 의미)
byte - Byte
short - Short
int - Integer
long - Long
float - Float
double - Double
char - Character
boolean - Boolean
Boxing : 기본 타입을 래퍼 클래스의 인스턴스로 인스턴스화 하는 것
UnBoxing : 래퍼 클래스 타입의 인스턴스를 기본 타입으로 변경하는 것

오토 박싱(AutoBoxing)과 오토 언박싱(AutoUnBoxing)
//localTime
//now() : 자신의 PC의 현재 시간 기준으로 LocalTime 객체 반환
//of() : 매개변수로 받은 시간 기준으로 LocalTime 객체 반환
//localDate
//now() : 자신의 PC의 현재 날짜 기준으로 LocalDate 객체 반환
//of() : 매개변수로 받은 날짜 기준으로 LocalDate 객체 반환
//LocalDateTime
//now() : 자신의 PC의 현재 시간과 날짜 기준으로 Localdate 객체 반환
//of() : 매개변수로 받은 시간과 날짜 기준으로 LocalDate 객체 반환
LocalTime 시간 관련 작업할 때 사용하는 클래스. LocalTime 객체는 두 개의 정적 메소드를 통해 반환 받을 수 있다.
LocalDate 날짜 관련 작업할 때 사용하는 클래스. LocalDate 객체도 두 개의 정적 메소드로 반환 받는다.
LocalDateTime 시간과 날짜를 함께 작업해야 할 때 사용하는 클래스
ZonedDateTime 시간대(Time Zone) 을 활용한 작업해야 할 때 사용하는 클래스