java.lang 클래스
Object클래스
: 모든 클래스의 최고 조상 클래스
equals()
: 매개변수로 객체의 참조변수를 받아서 비교하여 그 결과를 boolean값으로 알려 주는 역할
equals 메서드는 주소값으로 비교를 하기 때문에 두 value값이 10으로 같을지라도 비교한 결과는 false다.
equals() 오버라이딩
value 의 값을 비교하고 싶다면 equals 메서드를 오버라이딩하여 사용하면 된다.
hashCode()
: 해싱 기법에 사용되는 '해시함수'를 구현한 것.
해싱은 데이터관리기법 중의 하나 .. 다량의 데이터를 저장하고 검색하는데 유용함.
검색 값 입력 >> 그 값이 저장된 위치 반환
String 클래스는 hashCode 메서드가 오버라이딩 되어 있기 때문에
문자열의 내용이 같은 str1과 str2 에 대해 동일한 해시코드값을 얻는다.
반면에 indentityHashCode 는 객체의 주소값으로 해시코드를
생성하기 때문에 모든 객체에 대해 상상 다른 해시코드값을 반환.
toString()
: 인스턴스에 대한 정보를 문자열로 제공할 목적으로 정의된 것.
String 클래스
: 문자열을 저장하기 위해서 문자형 배열 참조변수(char[]) value 를 인스턴스 변수로 정의해놓고 잇다.
인스턴스 생성 시 생성자의 매개변수로 입력받는 문자열은 이 인스턴스변수에 문자형 배열로 저장되는 것이다.
스트링 클래스는 final이 붙어 있으므로 다른 클래스의 조상이 될 수 없다.
문자열 간의 결합이나 추출 등 문자열을 다루는 작업이 많이 필요한 경우에는 StringBuffer 클래스를 사용할 것.
(메모리 절약)
문자열의 비교
리터럴 : 주소값과 equals 값이 같다.
생성자 : 주소값 다르다 equals 값은 같다.
스트링 리터럴들은 컴파일 시에 클래스파일에 저장된다.
"abc"라는 문자열을 담고 있는 String인스턴스가 하나 생성된 후, 참조변수 s1, s2 는 모두 이 String 인스턴스를
참조하게 된다.
String 생성자와 메서드
intern()
split(구분자)
: 구분자로 문자열을 잘라서 배열에 넣어준다.
join(구분자, 배열참조변수)
: 배열을 구분자로 구별해서 결합시켜준다.
new StringJoiner(",","[","]")
: [aaa,bbb,ccc] 로 나타난다.
StringBuffer
: String 클래스는 인스턴스를 생성할 때 지정된 문자열을 변경할 수 없지만
StringBuffer 클래스는 변경이 가능하다.
편집할 문자열의 길이를 고려하여 버퍼의 길이를 충분히 잡아주는 것이 좋다.
버퍼의 길이를 넘어서게 되면 버퍼의 길이를 늘려주는 작업이 추가로 수행되기 때문에 효율이 떨어진다.
비교
: 스프링버퍼 클래스는 equals메서드를 오버라이딩하지 않아서 등가비교연산자(==)로 비교한 것과
같은 결과를 얻는다. ( 참조변수의 주소값 비교 )
해결을 하기 위해선 toString을 이용해서 String 인스턴스를 얻은 다음 비교하면 된다.
StringBuilder
: StringBuffer에서 쓰레드의 동기화만 뺀 클래스
Math
: 기본적인 수학계산에 유용한 메서드로 구성된 클래스.
래퍼(wrapper)클래스
: 기본형(primitive t ype) 변수를 변수로 다뤄야 할 때 사용되는 클래스.
이 클래스를 사용하면 기본형을 객체로 다룰 수 있다.
Number 클래스
: 추상 클래스. 내부적으로 숫자를 멤버변수로 갖는 래퍼 클래스들의 조상.
오토박싱 & 언박싱
오토박싱
: 기본형 값을 래퍼클래스의 객체로 자동 변환해주는 것.
언박싱
: 래퍼클래스를 기본형 값으로 자동 변환해주는 것.