Part1 Object 클래스
Object와 오버라이딩
- Object 클래스는 모든 클래스의 최상위 클래스
- 아무것도 상속받지 않으면 자동으로 Object를 상속
- Object가 가지고 있는 메소드는 모든 클래스에서 다 사용할 수 있다는 것을 의미
- 대표적인 예
- equals : 객체가 가진 값을 비교할 때 사용
- toString : 객체가 가진 값을 문자열로 반환
- hashCode : 객체의 해시코드 값 반환
Part2 java.lang 패키지
java.lang 패키지/오토박싱
자바는 기본적으로 다양한 패키지를 지원 그중에서 가장 중요한 패키지
- java.lang 패키지의 클래스는 import를 하지 않고도 사용할 수 있다.
- java.lang 패키지에는 기본형 타입을 객체로 변환시킬 때 사용하는 Wrapper 클래스가 있다.
- Boolean, Byte, Short, Integer, Long, Double 클래스
- 모든 클래스의 최상위 클래스인 Object도 java.lang 패키지
- 문자열과 관련된 String StringBuffer, StringBuilder도 모두 java.lang 패키지
- 화면에 값을 출력할 때 사용했던 System 클래스도 java.lang 패키지
- 수학과 관련된 Math 클래스도 java.lang 패키지
- Thread와 관련된 중요 클래스들이 java.lang 패키지
- 이외에도 다양한 클래스와 인터페이스가 java.lang 패키지에 속해 있다.
- 오토박싱(Auto Boxing)
- Integer i3 = 5; 숫자 5는 원래 기본형이지만 자동으로 Integer 형태로 변환된다.
- 오토 언박싱(Auto Unboxing)
- int i5 = i2; Integer 객체타입의 값을 기본형 int로 자동으로 변환되어 값을 할당한다.
- 오토박싱, 오토 언박싱은 JAVA 5부터 지원한다. 이 때 내부적으로 Wrapper 클래스들이 사용된다.
스트링버퍼
아무 값도 가지고 있지 않은 StringBuffer 객체를 생성
- 출력결과 : hello world
StringBuffer가 가지고 있는 메소드들은 대부분 자기 자신, this를 반환
- 자기 자신의 메소드를 호출하여 자기 자신의 값을 바꿔나가는 것을 메소드체이닝 이라고 한다.
- StringBuffer 클래스는 메소드 체인 방식으로 사용할 수 있도록 만들어져 있다.
- 앞에서 5줄로 작성했던 코드를 위와 같이 한 줄로 수정할 수 있다.
- StringBuffer는 append 메소드 외에도 길이를 구하거나, 자르거나 등의 다양한 메소드들을 가지고 있다.
스트링 클래스의 문제점
String 클래스는 문자열을 다룰 때 사용하는 클래스
String 클래스는 불변클래스이다.
- 실행결과
- hello world
world
- hello world
- 기존의 str1은 전혀 변화 없다.
- substring 메소드는 5번째부터 문자열을 잘라서 새로운 문자열을 반환하는 메소드
- str1 자체는 전혀 변화가 없다.
String 클래스를 사용할 때 가장 문제가 발생하는 경우는 다음과 같은 코드를 사용할 때이다.
- 실행결과
- hello world world
문자열과 문자열을 더하게 되면 내부적으로는 다음과 같은 코드가 실행
java 에서는 new 연산자가 많을 수록 성능이 저하된다. 위와 같은 str3 = str1 + str2; 코드를 반복문에서 사용하게 된다면, new 연산자가 내부에서 계속해서 생성되고 성능이 저하될 수 있다.
Math
Math클래스는 이름 그대로 수학계산을 위한 클래스
코싸인, 싸인, 탄젠트, 절대값, 랜덤값등을 구할 수 있는 클래스
- Math 클래스는 생성자가 private으로 되어 있기 때문에 new 연산자를 이용하여 객체를 생성할 수 없다.
- 객체를 생성할 수는 없지만 모든 메소드와 속성이 static으로 정의되어 있기 때문에 객체를 생성하지 않고도 사용할 수 있다.
댓글남기기