본문 바로가기

JAVA 공책/수업 메모

java lang 패키지

**java lang 패키지

- 자바 기본 패키지여서 import를 하지 않아도 자동으로 import가 됩니다.

- java.lang 패키지에 있는 클래스는 패키지 이름을 사용하지 않고 클래스 이름만으로도 사용이 가능합니다.


1. Object 클래스

- java의 최상위 클래스

- 모든 클래스에서 공통으로 사용할 메소드를 소유하고 있는 클래스

- 생성자가 있기는 하지만 직접 인스턴스를 생성하는 경우는 거의 없습니다.(new x)


1) 주요메소드(기억해두기)

String toString() : 클래스 이름과 해시코드를 하나의 문자열로 만들어서 리턴합니다.

이 메소드는 출력하는 메소드에 인스턴스 이름을 대입하면 자동으로 호출됩니다.


String hashcode() : 해시코드를 리턴합니다.

인스턴스를 구분하기 위해서 만든 임의의 코드입니다.

해시코드가 같으면 같은 인스턴스입니다.


Boolean equals() : 인스턴스가 저장하고 있는 내용이 같은지 확인해주는 메소드


- 해시코드가 같으면 인스턴스가 같은 것이고 equals가 같으면 값이 같은 것이다.


Object clone() : 인스턴스 자신을 복제해서 리턴해주는 메소드

그냥은 못쓰고

Cloneable 인터페이스를 implements 해야만 사용이 가능합니다.


Object a1 = new Object();

Object a2 = a1;

Object a3 = a1.clone();


a1 과 a2 는 ==(해시코드 비교) 로 비교해서 true, equals로 비교해도 true이다.

a3 와 a1 은 ==로 비교하면 false, equals로 비교하면 true


2) Object 의 사용(기억해두기)

- 메소드의 매개변수로 사용된 경우에는 어떤 데이터든지 대입할 수 있습니다.

- 리턴타입으로 사용된 경우에는 출력하는 경우를 제외하고는 원래의 자료형으로 형변환 해서 사용해야 합니다.


Object obj = "Hello";

System.out.println(obj);

//대문자로 변경

obj.toUpperCase(); --> 안 됨.

//출력이 아니라 다른 용도로 사용할 때는 반드시 형변환 해서 사용

String dae = ((String)obj).toUpperCase();

System.out.println(dae);


2. Wrapper Class

- 기본형의 데이터를 참조형으로 저장하기 위한 클래스

- 모든 데이터의 자료형을 참조형으로 하면 Object 클래스의 변수에 모두 저장할 수 있기 때문입니다.

Boolean Byte,Short,Character,Integer,Long,Float,Double


1) 기본형의 데이터를 참조형으로 만드는 방법

Integer ? = new Integer(int value);

Integer ? = int value; //auto boxing - 기본형의 데이터를 wrapper 클래스에 바로 대입 가능


2) Wrapper 클래스의 데이터를 기본형으로 만드는 방법

Integer i = new Integer(10);

int x = i.intValue();

int x = i //auto unboxing - 참조형의 데이터를 기본형으로 바로 대입 가능


3) Object 타입에 기본형의 데이터를 auto boxing을 이용해서 바로 대입이 가능합니다.

Object 타입의 데이터를 기본형으로 강제형변환을 못합니다.

기본형 데이터를 Object 타입에 저장한 경우에는 Wrapper Class로 형변환 한 후 사용해야 합니다.

1.7버전 부터는 기본형으로도 강제형변환이 가능합니다.


int x = 100;

Object obj = "Hello";

//Object 타입에는 모든 데이터 대입이 가능

//int 가 대입된 것이 아니고 Integer로 변환해서 대입됩니다.

obj = x;

System.out.println(obj);

//참조형은 기본형으로 강제 형변환이 안 됩니다.

//참조형을 기본형으로 변경하고자 하면 Wrapper로 형변환 한 후 대입해야 합니다.

//이클립스 버전에 따라서 되기도 하지만 1.7 버전 아래 에서는 안되기 때문에 기본적으로 안 된다고 해야 한다.

//이클립스 컨파일러가 업그레이드 되었을 수도 있다.

x = (int)obj; --> 기본적으로는 안 됨.

x = (Integer)obj;