프로그래밍 언어/Java

Java) 8. java.lang 패키지

nomfang 2021. 6. 14. 22:04
728x90
반응형

java.lang 패키지

자바 프로그래밍에 필요한 기본 클래스를 제공
-> java.lang 패키지에 존재하는 클래스를 사용할 때는 import문이 필요 없음

Object 클래스

모든 클래스의 조상이 되는 클래스

  • 클래스 계층 구조에서 루트가 되는 클래스
  • 모든 클래스는 자동으로 Object클래스를 상속 받는다

String toString()메소드

객체의 문자열 표현을 반환

  • class이름@16진수 해시코드로 표현
    문자열 + 연산, System.out.print()등에서 사용됨(필요함)
    자식 클래스에서 재정의할 수 있음
  • String, Interger에서 재정의 되어있음

boolean equals(Object obj) 메소드

두 객체 변수를 비교해서 두 변수의 참조값이 같을 때 true 반환
Object 클래스에서 equals() -> obj1.equals(obj2)와 (obj1==obj2)는 같다
자식 클래스에서 재정의 가능
-> String, Integer 클래스 등에서 재정의 돼 있음

Integer 유형에서는 유형과 값만 같으면 true를 리턴
==의 경우 참조 값이 같아야함

Object clone() 메소드

객체를 복제하여 리턴
Cloneable 인터페이스를 구현한 클래스 객체만 clone()메소드 호출 가능
-> 예외 처리가 필요함 (CloneNotSupportedException)

클론 시에는 클론할 유형으로의 형변환 필요
(데이터 유형) 변수명.clone();

String 클래스와 생성자

문자열을 표현하고 처리하기 위한 클래스
기본 자료형처럼 다룰 수 있음
String s1 = "java" // 리터럴 대입
같은 리터럴은 1개만 만들어져 공유됨
String 객체는 내용이 변하지 않는(immutable) 상수 객체

생성자

  • public String() 빈 문자열 객체 생성
  • public String(String original)
  • public String(char[] value)
  • public String(char[] value, int offset, int count) // 위치(offset) 와 개수(count)

문자열의 비교 메소드

int compareTo(String) -> s1.comparTo(s2) (같으면 0, s1이 크면 양수, s2가 크면 음수)
int compareToIgnoreCase(String) (대소문자 관계 없이 비교)
boolean equals(Object) -> 문자열이 같으면 true, 다르면 false

s1과 s2는 리터럴이 되어있어 같은 문자열을 참조

s3과 s4는 new연산자를 통해 객체를 새로 생성했기 때문에 각각 다른 곳을 참조하고 있다

String에서 재정의된 equals()를 사용하면 값만 같으면 true

==을 사용하면 참조 값이 같아야 하기 때문에 s3, s4의 경우 false

int String.indexOf(String str), int String.indexOf(String str, int fromIndex)

-> String에서 str이 처음 등장하는 위치(인덱스)를 리턴, 없으면 -1

lastIndexOf(String str) -> 마지막 위치부터 앞 방향으로

문자열의 추출 메소드

char charAt(int index)
-> index 위치에 있는 문자를 리턴
String substring(int beginIndex)
-> int 위치 부터 마지막까지의 문자열 리턴
String substring(int beginIndex, int endIndex)
-> endIndex -1 까지의 문자열을 리턴

문자열 변환 메소드

  • 원본 문자열은 변경되지 않고 새로운 객체 생성됨 (immutable : 변하지 않는)
    String replace(car oldChar, char newChar)
    -> old 를 new로 변경
    String trim()
    -> 문자열 앞과 뒤에 나오는 white space 문자를 제거(공백 제거)
    String toUpperCase()
    String toLowerCase()
    String concat(String str) -> 문자열 연결

다른 자료형을 문자열로 변환

String.valueof(data)

기타 메소드

boolean StartWith(String) -> 시작이 문자열인지 y/n
char[] toCharArray()

StringBuffer 클래스

객체 생성 이후 문자열을 수정할 수 있는 기능을 제공
-> 변경 가능한 mutable 클래스

  • 생성자
    new StringBuffer()
  • 초기 버퍼 크기 16 (str의 길이 + 16)

  • 문자열 + 16개의 추가 버퍼를 추가로 가지고 있는

주요 메소드

int capacity() -> 버퍼의 크기 리턴 (문자열+16)
int length() -> 길이
char charAt(index) -> 해당 위치의 문자 리턴
int indexOf(String) -> 해당 문자의 위치 리턴
String substring(int start, int end) -> start~end 까지의 문자열 리턴
StringBuffer append(char c)
-> 인자를 String으로 바꾸어 기존 문자열 끝에 추가(기본 자료형, String, Object, char[] 가능)

String 클래스를 사용할 때의 문제점

  • 문자열을 빈번하게 변경하는 프로그램의 경우 기존 String객체를 놔둔 채 새로운 String 객체가 계속 생성됨

포장 클래스

  • 기본형을 참조형으로 표현하기 위한 클래스 -> boxing(포장)

int -> Integer, char -> Character
두 가지를 제외한 기본형은 기본형의 앞 글자만 대문자로

  1. 메소드의 인자로 객체가 필요할 때 포장 클래스 사용
  2. 클래스가 제공하는 상수를 사용할 때 사용
  3. 클래스가 제공하는 메소드를 사용할 때 사용

Number 클래스

Byte, Short, Integer, Long, Float, Double의 추상 부모클래스

기본형 데이터 간 변환

parseInt, parseLong, toString, valueOf 등

Integer 클래스

Integer, String, int 사이의 변환 기능 제공
다른 클래스들도 유사한 기능 제공

Boxing

Double radius = new Double(0.0)
Double radius = Double.valueOf(0.0)
Double radius = 0.0

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

Unboxing

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

double r = radius.doubleValue()
double r = radius // 자동 언박싱
포장 클래스의 객체에서 기본형으로 자동 변환되는 것
인자에 전달되거나 변수에 대입될 때 적용

System 클래스

자바 플랫폼 및 시스템과 관련된 기능 제공
-> 모든 멤버는 static, 사용 시 객체 생성할 필요 없음

  • 주요 기능
    표준 입출력, 시스템 환경 변수의 사용

System.in
표준 입력 스트림
System.out
표준 출력 스트림
System.err
표준 에러 스트림

System.in.read() - 한 바이트 문자를 입력 받기 때문에 한글은 불가

반응형