[자바스터디] 9.5 Java.lang패키지

피오·2021년 9월 8일
0

자바 스터디

목록 보기
4/4

java.lang 패키지

  • 자바프로그래밍에 가장 기본이 되는 클래스들을 포함한 패키지
  • import문 없이 사용가능(System, String클래스 등등)

이하는 java.lang패키지에 포함된 몇가지 핵심 클래스들에 대한 정리

Object 클래스

  • 모든 클래스들의 조상 클래스

핵심 메서드

equals(Object obj)

  • 객체의 참조변수를 받아 비교하여 그 결과를 boolean값으로 알려줌
  • 주소값으로 두 인스턴스를 비교함(두 참조변수가 동일한 인스턴스 주소를 바라보면 true를 리턴)
    Person p1 = new Person();
    Person p2 = new Person();

    System.out.println(p1.equals(p2)); //false

    p2 = p1;
    System.out.println(p1.equals(p2)); //true
  • 참조주소가 아닌 인스턴스가 가진 특정 값으로 비교하도록 할 땐 equals메서드를 오버라이딩하여 사용(equals메서드를 오버라이딩 하면 hashCode메서드도 오버라이딩 해줘야 한다. hashMap, hashSet관련 내용. 컬렉션 프레임워크 공부 후 추가 작성 필요.)
    class Person {
        long id;
		
        //id로 인스턴스를 비교할 수 있게 equals메서드를 오버라이딩
        public boolean equlas(Object obj) { //일단 Object타입을 줘서 모든 클래스를 다 받음
            if (obj instanceof Person) { 
                //자식클래스를 부모타입으로 받으면 사용가능한 멤버의 개수가
                //부모타입의 멤버로 제한되므로, 자식클래스 Person의 멤버변수
                //id를 이용하기 위해 다시 자식타입으로 형변환 해줘야 함.
                
                return id == ((Person)obj).id;
            
            } else { //Person타입이 아닐 때
                return false;
            }
        }
    }

hashCode()

  • equals()의 결과가 true이면 hashCode()의 리턴값도 일치해야 한다.

clone()

  • 자신을 복제하여 새로운 인스턴스를 생성함
  • Object클래스의 clone()메서드는 얕은 복사를 수행한다. 깊은 복사를 하고 싶다면 오버라이딩으로 구현해야 함.
  • Coneable인터페이스를 구현한 클래스에서만 사용 가능(인스턴스의 데이터 보호에 의미가 있음. Cloneable을 구현하지 않은 클래스는 클래스 작성자가 복제를 허용하지 않았다는 뜻이 되니까?)
  • 오버라이딩하면서 접근제어자를 public으로 변경(기존 : protected)
  • 오버라이딩할 때 리턴타입을 실제 반환되는 객체의 타입으로 선언가능(기존 리턴타입 : Object)
    -> '공변 반환타입'. 형변환 단계 줄여줌.

String 클래스


StringBuffer, StringBuilder 클래스


Math 클래스


래퍼(wrapper) 클래스


기타 유용한 클래스(java.util패키지)

profile
블로그 이전했습니다. https://pzbg.tistory.com/

0개의 댓글