* 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
'Language > Java' 카테고리의 다른 글
19.11.08. (Regular Expression/ String의 문제점/ StringBuffer/ StringBuilder / StringTokenizer) (0) | 2021.02.14 |
---|---|
19.11.07.(API - String / 기본형 vs Object 객체형 데이터타입) (0) | 2021.02.14 |
19.11.05. (참조형 데이터 타입을 저장하는 배열) (0) | 2021.02.14 |
19.11.04.(알고리즘 문제 / 숫자 야구 게임 소스) (0) | 2021.02.14 |
19.11.03. (package/import문/cmd javac/Organize Imports) (0) | 2021.02.14 |