[Lecture/Java] 08강 - java.lang 패키지

김찬미·2025년 5월 28일

8강 - java.lang 패키지

  • Object 클래스
  • String 클래스
  • StringBuffer 클래스
  • 포장 클래스
  • System 클래스


Object 클래스

자동으로 모든 클래스의 조상이 되는 클래스
= 클래스 계층 구조에서 루트가 되는 클래스

모든 클래스는 자동으로 Object 클래스를 상속받음

🔹주요 메소드

  • protected Object clone()
    • 객체를 복제하여 반환
  • public boolean equals(Object obj)
    • 같은 객체인지 참조값으로 비교
  • public int hashCode()
    • 객체를 식별하는 정수값을 반환
  • public String toString()
    • 객체를 문자열로 반환

1) toString() 메소드

  • 클래스이름@16진수해시코드 로 표현
  • 문자열의 + 연산 또는 System.out.println() 등에서 필요함
  • 자식 클래스에서 재정의할 수 있음
    • String, Integer 클래스 등에서 재정의되어 있음
System.out.println(my_class1.toString());

2) equals() 메소드

  • ob1.equals(obj2)(obj1==obj2)
  • 자식 클래스에서 재정의할 수 있음
    • String, Integer 클래스 등에서 재정의되어 있음

3) clone() 메소드

  • 객체를 복제하여 리턴
  • Clonable 인터페이스를 구현한 클래스의 객체만 clone() 호출 가능
    • 예외(CloneNotSupportedException) 처리를 해 주어야 함

4) getClass() 메소드

  • 현재 객체의 유형, 즉 클래스 정보를 가진 Class 객체를 리턴
    • Class 클래스는 클래스의 정보 확인을 위한 메소드를 제공


String 클래스

문자열을 표현하고 처리하기 위한 클래스

String s1 = new String("Java"); //객체 생성

// 기본 자료형처럼 사용 가능
String s2 = "Java"; //리터럴을 대입

String 객체는 내용이 변하지 않는(immutable) 상수 객체

// 생성자
public String() : 빈 문자열 객체 생성
public String(String original)
public String(char[] value)
public String(char[] value, int offset, int count)

🔹문자열의 비교 메소드

메소드설명
int compareTo(String anotherString)두 문자열이 같으면 0을 리턴하고, 다르면 0이 아닌 정수값을 리턴함
int compareToLgnoreCase(String anotherString)대소문자를 무시하고 비교
boolean equals(Object anObject)두 문자열을 비교하여, 같으면 true 리턴하고 다르면 false 리턴함
boolean equalsIgnoreCase(String anotherString)대소문자를 무시하고 비교

🔹문자열의 검색 메소드

1) int indexOf(String str)

처음 위치부터 문자열 str을 찾아 처음 등장하는 위치(인덱스) 리턴, 없으면 -1 리턴

2) int indexOf(String str, int fromIndex)

fromIndex 위치부터 문자열 str을 찾아 처음 등장하는 위치(인덱스) 리턴, 없으면 -1 리턴

3) int lastIndexOf(String str), int lastIndexOf(String str, int fromIndex)

마지막 위치부터 앞 방향으로 찾음


🔹문자열의 추출 메소드

1) char charAt(int index)

index 위치에 있는 문자를 리턴

2) String substring(int beginIndex)

beginIndex 위치부터 마지막까지의 문자열을 리턴

3) String substring(int beginIndex, int endIndex)

beginIndex부터 (endIndex - 1)까지의 문자열을 리턴함


🔹문자열의 변환

원본 문자열은 변경되지 않고, 새로운 객체가 만들어짐

메소드설명
String replace(char oldChar, char newChar)oldChar 문자를 newChar 문자로 변환하여 리턴함
String trim()문자열 앞과 뒤에 나오는 화이트 스페이스 문자를 제거하여 리턴함
String toUpperCase()모든 문자를 대문자로 변환하여 리턴함
String toLowerCase()모든 문자를 소문자로 변환하여 리턴함
String concat(String str)두 문자열을 연결하여 리턴함

🔹기타 메소드

  • boolean startsWith(String prefix)
  • boolean endsWith(String suffix)
  • char[] toCharArray()

StringBuffer 클래스

객체 생성 이후 문자열을 변경할 수 있는 클래스
mutable (내용 변경 가능) 클래스

내부적으로 문자열을 저장하기 위해 크기가 조절되는 버퍼를 사용함

//생성자
String buffer() //초기 버퍼의 크기는 16
String buffer(int length)
String buffer(String str) //초기 버퍼의 크기는 (str의 길이+16)

🔹 주요 메소드

메소드설명
int capacity()버퍼의 크기를 리턴함
int length()문자열의 길이를 리턴함
char charAt(int index)index 위치의 문자를 리턴함
int indexOf(String str)str로 시작하는 첫 위치를 리턴함
String substring(int start, int end)start 위치부터 (end-1) 위치까지의 문자열을 리턴함
StringBuffer s1 = new StringBuffer("start");
System.out.println(s1.capacity()); //21
System.out.println(s1.length()); //5
System.out.println(s1.append("le")); //startle
메소드설명
StringBuffer append(char c)문자 c를 추가한 StringBuffer 객체를 리턴함
StringBuffer delete(int start, int end)start 위치에서 (end-1)까지의 문자열을 삭제
StringBuffer insert(int offset, String s)offset 위치부터 문자열 s를 삽입
StringBuffer replace(int start, int end, String s)start부터 (end-1)까지의 문자열을 s로 교체
StringBuffer reverse()문자열을 역순으로 변경

String 클래스의 문제점

  • 문자열을 빈번하게 변경하는 프로그램에서 메모리 낭비 문제
    • Stringimmutable 클래스이기 때문
    • StringBufferStringBuilder로 해결

✅ 포장 클래스

기본형을 참조형으로 표현하기 위한 클래스

  • 기본형과 상응하는 객체 사이의 형변환(박싱 또는 언박싱) 기능 제공
  • 기본형과 String 사이의 형변환 기능 제공

사용 목적

  • 메소드의 인자로 객체가 필요할 때
  • Number의 자식 포장 클래스가 제공하는 상수를 사용할 때
    • Integer.MIN_VALUE, Integer.MAX_VALUE
  • 클래스가 제공하는 다양한 메소드를 사용할 때

Number 클래스

숫자를 표현하는 Byte, Short, Integer, Long, Float, Double의 추상 부모 클래스

Number의 자식 클래스에서 구현된 주요 메소드

메소드설명
double doubleValue()Double 객체를 double 값으로 변환 (unboxing)
String toString()Double 객체를 String으로 변환
static Double valueOf(double)double 값을 Double 객체로 변환 (boxing)
static String toString(double)double 값을 String으로 변환
static Double valueOf(String)StringDouble 객체로 변환
static double parseDouble(String)Stringdouble 값으로 변환
int compareTo(Byte anotherByte)인자와 비교하여 숫자가 같으면 0을 리턴
boolean equals(Object obj)같은 유형이고 값이 같으면 true를 리턴

String <-> 기본형 데이터 변환

포장 클래스가 제공하는 static 메소드 사용

Stringint(or Long)

int n = Integer.parseInt("123");
long l = Long.parseLong("1234");

int(or Long)String

String s1 = Integer.toString(4);
String s2 = Long.toString(5l);
String s3 = String.valueof(123);

Integer 클래스

Integer, String, int 사이의 변환 기능 제공

메서드설명
static int parseInt(String s)Stringint 값으로 변환
static String toString(int i)int 값을 String으로 변환
static Integer valueOf(int i)int 값을 Integer 객체로 변환 (boxing)
String toString()Integer 객체를 String으로 변환
static Integer valueOf(String s)StringInteger 객체로 변환

박싱

기본형 데이터를 포장 클래스의 객체로 변환

// 예: double 값을 Double 객체로 변환
Double radius = new Double(2.59); //생성자 사용, 옛날 방식
Double radius = Double.valueof(10.4); //valueOf() 사용
Double radius = 2.59; //자동 Boxing

💡 자동 박싱

  • 기본형에서 포장 클래스의 객체로 자동 변환되는 것
  • 인자에 전달되거나 변수에 대입될 때 적용됨

언박싱

포장 클래스의 객체를 기본형 데이터로 변환
→ 포장 클래스에서 기본형Value() 메소드를 사용

//예: radius는 Double형 객체라 가정
double r = radius.doubleValue(); //객체.기본형Value()
double r = radius; //자동 unboxing
System.out.println(Integer.valueof(3) % 2) //자동 unboxing

💡 자동 언박싱

  • 포장 클래스의 객체에서 기본형으로 자동 변환되는 것
  • 인자에 전달되거나 변수에 대입될 때 적용됨

System 클래스

Java 플랫폼 및 시스템과 관련된 기능 제공

  • 유용한 클래스 필드와 메소드를 가짐
  • 모든 멤버는 static, 사용할 때 객체를 생성할 필요 없음

🔸주요 기능

  • 표준 입출력 객체를 제공
  • JVM 또는 운영체제 속성과 시스템 환경 변수의 사용과 제어
  • 배열 복사, 시간 조회
  • 프로그램의 제어 등

1) 표준 입출력 필드

System.in

  • 표준 입력 스트림으로 InputStream 유형
  • 키보드로부터 입력을 받을 때 사용
    ✔️ System.in.read()는 키보드로부터 1바이트 문자 입력받음

System.out

  • 표준 출력 스트림으로 PrintStream 유형
  • 화면에 데이터를 출력할 때 사용

System.err

  • 표준 에러 출력 스트림으로 PrintStream 유형
  • 오류 메시지를 화면에 출력할 때 사용

profile
백엔드 지망 학부생

0개의 댓글