* java.lang 패키지의 클래스들은 import 하지 않고 사용 가능하다.

 

(1) Java.lang.object에서 가장 많이 사용되는 3가지 (사용할 때 반드시 override해서 사용!!)

 

- toString() : 객체가 가진 값을 문자열로 반환

- hashCode() : 객체의 주소값 호출 --> 자료구조에서 자주 사용

- equals(Object) : 객체의 값이 같은지 비교

 

cf) finalize() : 객체에 대한 참조가 없음을 확인할 때 객체의 가비지 수집기에 의해 호출되어

해당 객체를 메모리에서 꺼냅니다.(C에서의 소멸자와 비슷)

 

 

(2) 비교연산자 : ==

 

기DT == 기DT : 값 비교

참DT == 참DT : 주소값 비교

Object : equals() >> 주소값 비교 (각 클래스에 맞게끔 override해서 사용)

 

public class Car {
	String carName;

	public Car(String carName){
		this.carName = carName;
	}	

	@Override
	public boolean equals(Object obj){
		Car car = (Car) obj; //형변환
		if(carName == car.carName)
			return true;
		else
			return false;			
	}

	@Override
	public String toString() {
		return "차이름 : " + carName;	
	}
}
 package com.mycompany;
 
 public class Car { 
	private String carName;
	private int speed;

	public Car(String carName){
		this.carName = carName;
	}

	public void speedUp(){
		this.speed += 10;
	}

	public String getCarName(){
		return carName;
	}

	public int getSpeed(){
		return speed;
	}
}
import com.mycompany.Car;

public class CarUser {
	public static void main(String[] args) {
		Car car = new Car("K5"); //Car클래스 사용하고자..
		System.out.println("자동차의 이름 : " + car.getCarName());
		car.speedUp();
		System.out.println("자동차의 속도 : " + car.getSpeed());
	}
}
public class ObjectTest {
	public static void main(String[] args) {
		Object ob1 = new Object();
		Object ob2 = new Object();
		System.out.println("ob1 : " + ob1.toString());
		System.out.println("ob2 : " + ob2.toString());
		System.out.println("ob1 hashcode : " + ob1.hashCode());
		System.out.println("ob2 hashcode : " + ob2.hashCode());

		if (ob1==ob2)
		System.out.println("ob1과 ob2는 주소값이 같다.");
		else
			System.out.println("ob1과 ob2는 주소값이 다르다.");

		if (ob1.equals(ob2))
		System.out.println("ob1과 ob2는 같다.");
		else
			System.out.println("ob1과 ob2는 다르다.");

		Car car1 = new Car("쏘나타");
		Car car2 = new Car("쏘나타");

		if (car1.equals(car2))
		System.out.println("car1과 car2는 차이름이 같다.");
		else
			System.out.println("car1과 car2는 차이름이 다르다.");

		System.out.println("car1 " + car1);
		System.out.println("car2 " + car2);
	}
}
---------- run ----------
ob1 : java.lang.Object@15db9742
ob2 : java.lang.Object@6d06d69c
ob1 hashcode : 366712642
ob2 hashcode : 1829164700
ob1과 ob2는 주소값이 다르다.
ob1과 ob2는 다르다.
car1과 car2는 차이름이 같다.
car1 차이름 : 쏘나타
car2 차이름 : 쏘나타

(3) Wrapper Class : 8개의 기본DT를 객체로 변환시킬 때 사용하는 클래스

더보기

Wrapper Class : 기본DT을 object(참조형)화 시킨 class

기본DT 참조DT

boolean Boolean

char Character

byte Byte

short Short

int Integer

long Long

float Float

double Double

 

기DT >> String으로 변환

int x = 10;

1. String s = x + ""; (int를 문자열로 변환)

2. String s = Integer.toString(x);

3. String s = String.valueOf(x);

 

String >> 기본DT으로 변환 --- 기DT = Wrapper.parseXXX(String); -- 생성자 생성 안하고 클래스

이름으로 바로 사용 가능한 메소드

String s = "10";

int x = Integer.parseInt(s);

 

 

* java 5부터 생김... 점점 자바 버전이 높아질수록 사용자가 편리해진다.

autoboxing : Wrapper 클래스에서만 각 클래스에 대응되는 기본형DT으로 자동 형변환이 가능

unboxing : Wrapper 참조형 DT을 대응되는 기본형DT에 넣을 때 사용

boxing : 기본형 DT를 대응되는 Wrapper 참조형 DT에 넣을 때 사용

 

public class WrapperTest {
	public static void main(String[] args) {
		String s = "true";
		Boolean b = new Boolean(s); 
		System.out.println(b); //true

		//boolean bl = (boolean) s; //error
		boolean bl1 = b.booleanValue(); //String "true"가 boolean으로 바꿈
		if (bl1)
			System.out.println("bl1 boolean으로 바꼈다.");

		boolean bl2 = Boolean.parseBoolean(s); //기본DT을 참조DT으로 바꾸기
		if (bl2)
			System.out.println("bl2 boolean으로 바꼈다.");

		String s2 = "123";
		Integer i = new Integer(s2);
		int x1 = i.intValue();
		System.out.println(x1+100);//223

		int x2 = Integer.parseInt(s2); //String 참조타입인 123을 int 기본 타입으로 변환
		System.out.println(x2+200);//323

		//autoboxing(int와 Integer끼리만 boolean Boolean끼리만 가능)
		int z = 100;
		Integer it = new Integer(100); //Wrapper class
        Integer it1 = 100; //위에 new Integer(100)이랑 같은 코드, 자동으로 new를 생성해준다고 기억

		//unboxing(참조를 기본에다 집어넣을 때는)
		int y = it;
		System.out.println("y == " + y);
		
        //boxing (기본을 참조에다 집어넣을 때는)
		Integer it2 = y;
		System.out.println("it2 == " + it2);


	}
}
---------- run ----------
true
bl1 boolean으로 바꼈다.
bl2 boolean으로 바꼈다.
223
323
y == 100
it2 == 100

+ Recent posts