경주장
[자바 중급] 파트2. java.lang 패키지 본문
자바는 기본적으로 다양한 패키지를 지원 그중에서 가장 중요한 패키지
- java.lang패키지의 클래스는 import를 하지 않고도 사용할 수 있다.
- java.lang패키지에는 기본형타입을 객체로 변환시킬때 사용하는 Wrapper클래스가 있다.
- Boolean, Byte, Short, Integer, Long, Float, Double 클래스
- 모든 클래스의 최상위 클래스인 Object도 java.lang패키지
- 문자열과 관련된 String, StringBuffer, StringBuilder도 모두 java.lang패키지
- 화면에 값을 출력할때 사용했던 System클래스도 java.lang패키지
- 수학과 관련된 Math클래스도 java.lang패키지
- Thread와 관련된 중요 클래스들이 java.lang패키지
- 이외에도 다양한 클래스와 인터페이스가 java.lang패키지에 속해 있다.
Wrapper Class와 오토박싱
오토박싱 - 기본 타입 데이터를 객체 타입의 데이터로 자동 형변환 시켜주는 기능 (자바 5이상 지원)
int i = 5;
Integer i2 = new Integer(5);
Integer i3 = 5; //AutoBoxing : primitive -> Wrapper
int i4 = i3.intValue();
int i5 = i3; //AutoUnboxing
컴파일러가 자동으로 생성자를 만들고, 매서드를 호출한다.
String - 불변 객체/ StringBuffer - 가변 객체
StringBuffer가 가지고 있는 메소드들은 대부분 자기 자신, this를 반환한다.
StringBuffer sb2 = new StringBuffer();
StringBuffer sb3 = sb2.append("hello");
boolean isEqual = (sb2==sb3); // true
따라서 매서드 체인을 통해 String을 만들 수 있다!
String str2 = new StringBuffer().append("hello").append(" ").append("world").toString();
System.out.println(str2);
String Class의 문제점
String은 불변객체이다. + 연산을 통해 String을 concatenate한다면 내부적으로 StringBuffer객체가 생성되고 append, toString이 호출되어 String 이 생성된다.
String클래스를 사용할 때 가장 문제가 발생하는 경우는 다음과 같은 코드를 사용할 때 입니다.
String str3 = str1 + str2;
String str4 = new StringBuffer().append(str1).append(str2).toString();
String str4 = new StringBuffer().append(str1).append(str2).toString();
예를들어 반복문을 통해 + 연산자를 100번 호출한다면 내부적으로는 100개의 StringBuffer가 new로 생성되는 것이다.
이때에는 직접 StringBuffer를 생성해서 append, toString을 활용하는 방식이 성능상 이점이 있다.
String s = "Hello";
for(int i = 0 ; i < 100 ; i++){
s += "*";
}
////////////////////////////////////
String t = "World";
StringBuffer sb = new StringBuffer();
sb.append(t);
for(int i = 0 ; i <100 ; i++){
sb.append("*");
}
java.lang.Math
코싸인, 싸인, 탄젠트, 절대값, 랜덤값을 구할 수 있는 클래스
- Math클래스는 생성자가 private으로 되어 있기 때문에 new 연산자를 이용하여 객체를 생성할 수 없다.
- 객체를 생성할 수는 없지만 모든 메소드와 속성이 static으로 정의되어 있기 때문에 객체를 생성하지 않고도 사용할 수 있다.
'JAVA > 프로그래머스-자바중급' 카테고리의 다른 글
[자바 중급] 파트3. java.util 패키지 (0) | 2022.01.24 |
---|---|
[자바중급] 파트1. Object클래스 (0) | 2022.01.24 |