메서드 내용 equals(Object obj) 객체 참조변수 받아서 결과 boolean 반환
class EqualsEx1 {
public static void main(String[] args) {
Value v1 = new Value(10);
Value v2 = new Value(10);
if (v1.equals(v2)) {
System.out.println("v1과 v2는 같습니다.");
} else {
System.out.println("v1과 v2는 다릅니다.");
}
v2 = v1;
if (v1.equals(v2)) {
System.out.println("v1과 v2는 같습니다.");
} else {
System.out.println("v1과 v2는 다릅니다.");
}
} // main
}
class Value {
int value;
Value(int value) {
this.value = value;
}
}
메서드 내용 hashCode 객체 자신의 해쉬코드 반환
메서드 내용 toString 인스턴스에 대한 정보를 문자열로 제공
public String toString()
메소드를 정의하면 나중에 객체를 System.out.println(객체의 인스턴스.toString) 진행을 하면 내가 정의한 대로 나오게 된다.
메서드 내용 clone 객체 자신의 복사본 반환
CloneNotSuppoerted
에러 예외처리를 진행해주어야 한다. import java.util.*;
class Circle implements Cloneable {
Point p; // 원점
double r; // 반지름
Circle(Point p, double r) {
this.p = p;
this.r = r;
}
public Circle shallowCopy() { // 얕은 복사
Object obj = null;
try {
obj = super.clone();
} catch (CloneNotSupportedException e) {}
return (Circle)obj;
}
public Circle deepCopy() { // 깊은 복사
Object obj = null;
try {
obj = super.clone();
} catch (CloneNotSupportedException e) {}
Circle c = (Circle)obj;
c.p = new Point(this.p.x, this.p.y);
return c;
}
public String toString() {
return "[p=" + p + ", r="+ r +"]";
}
}
class Point {
int x;
int y;
Point(int x, int y) {
this.x = x;
this.y = y;
}
public String toString() {
return "("+x +", "+y+")";
}
}
class ShallowCopy {
public static void main(String[] args) {
Circle c1 = new Circle(new Point(1, 1), 2.0);
Circle c2 = c1.shallowCopy();
Circle c3 = c1.deepCopy();
System.out.println("c1="+c1);
System.out.println("c2="+c2);
System.out.println("c3="+c3);
c1.p.x = 9;
c1.p.y = 9;
System.out.println("= c1의 변경 후 =");
System.out.println("c1="+c1);
System.out.println("c2="+c2);
System.out.println("c3="+c3);
}
}
Circle c1 = new Circle(new Point(1, 1), 2.0);
Circle c2 = c1.shallowCopy();
Circle c3 = c1.deepCopy();
c1.p.x = 9;
c1.p.y = 9;
메서드 내용 getClass() 자신이 속한 클래스의 Class객체를 반환하는 메서드
클래스파일(*.class)이 메모리에 로드될때 생성된다.
Class객체는 클래스의 모든 정보를 담고 있으며, 클래스당 단 1개만 존재!
래퍼클래스 parse, value of
1) 타입.parse타입(String s)
3) 타입.valueOf()
▪ 모든 wrapper 클래스 생성자는 각각에 해당하는 primitive data type을 이용하여 객체 생성
Integer iOb = new Integer(100);
// boxing (primitive data type → 객체)
int i = iOb.intValue();
// unboxing (객체 → primitive data type)
System.out.println(i + " : " + iOb);
// toString() 메소드 overriding 되어 있음
▪ autoboxing / auto-unboxing 기능은 코딩을 보다 간단히 할 수 있도록 한다.
Integer iOb = 100; // autoboxing
int i = iOb; // auto-unboxing
System.out.println(i + " : " + iOb);
Math.random()과 Random 클래스
• 기본적으로 같음.
• Random 클래스는 seed 값을 설정할 수 있음.
• 같은 seed 값은 같은 random 값을 생성
import java.util.*;
class RandomEx1 {
public static void main(String args[]) {
Random rand = new Random(1);
Random rand2 = new Random(1);
System.out.println("= rand =");
for(int i=0; i < 5; i++)
System.out.println(i + ":" + rand.nextInt());
System.out.println();
System.out.println("= rand2 =");
for(int i=0; i < 5; i++)
System.out.println(i + ":" + rand2.nextInt());
}
}