Object class
최상위클래스로 모든클래스는
암시적으로 Object를 상속받고있다
-----
//public class ObjectEx extends Object
//입력하지않아도 암시적으로 extends Object 를 상속하고있다
//main
ObjectEx obj = new ObjectEx();
obj.toStringFunc(obj);
}
//toStringFunc
public void toStringFunc(ObjectEx obj) {
System.out.println(obj);
//객체명만 들어갈경우 자동으로 toString method를 호출한다
System.out.println(toString());
//toString method는 해당class 객체를 문자열로 반환해주는 역할이다
//getClass().getName()+'@'+Integer.toHexString(hashCode())가 출력된다
System.out.println("hi"+this); //this는 해당class obj를 의미한다
} //객체에 문자열 +연산을하는경우 toString()method가 자동으로 호출된다
public String toString() {
//toString 은 복잡하게출력되므로 알기쉽게 overriding을해서 사용한다
return "this is ObjectEx class";
}
------
//public class
//main
int aa = 100;
int bb = 100;
if(aa==bb) {
System.out.println("aa와 bb는 서로같다");
}else {
System.out.println("aa와 bb는 서로 다르다");
} //== 비교연산자는 기본자료형을 비교하는경우 값을 비교하기때문에
//서로 같다라는 내용이 출력된다
String str1 = new String("heelo");
String str2 = ("heelo");
if(str1==str2) {
System.out.println("str1, str2는 같다");
}else {
System.out.println("str1, str2는 다르다");
} //== 비교연산자는 참조형(Reference Type)을 비교할경우
//주소값을 비교하기때문에 서로 다르다라는 내용이 출력된다.
//만약에 str1=str2; 를한다면 주소값이 같아지기때문에 같다가 출력된다.
//equals는 앞의객체와 뒤의객체를 비교해 true, false값을 반환한다
if(str1.equals(str2)) {
System.out.println("str1, str2는 같다");
}else {
System.out.println("str1, str2는 다르다");
} //String 객체는 Object class에 있는 equals method를
//overriding을해서 비교하기때문에 '다르다'가출력된다
//String 객체의 Equals method는 overriding된 method여서 내용을 비교한다
value va1 = new Value(10);
value va2 = new Value(10); //서로 다른 instance를 가리킨다
if(val1.equals(var2)) {
System.out.println("va1과 va2는 서로같다");
}else {
System.out.println("va1과 va2는 서로 다르다");
} //Value class는 overriding을 하지 않아서 서로 "다르다"가 출력된다
//va1 = va2;를 입력할경우 "같다"가 출력된다
//Equals method가 Objet class 에 있는경우 주소값을 비교한다
//hashCode는 주소의 값을 반환해주는 method이다
System.out.println(str1.hashCode());
System.out.println(str2.hashCode()); //같은 값이 출력된다
//서로다른주소의 값이 나와야하지만 내용이 같은경우
//String 객체에서는 hashCode의 값이 같아지도록 overriding을했다
System.out.println(va1.hashCode());
System.out.println(va2.hashCode()); //다른값이 출력된다
//class Value
int a;
public Value(int a) {
this.a = a;
}
// public boolean equals(Object obj){
// if(obj != null && obj instanceof Value) {
// return a == ((Value)obj).a;
// }else {
// return false;
// } //내용을 비교할경우 이와같이 overriding을 해줘야 "같다"가 출력된다.
// } //String형태도 이와같이 overriding되서 사용되고있다
'java' 카테고리의 다른 글
이넘클래스(enum class) (0) | 2019.08.03 |
---|---|
wrapper class (0) | 2019.08.03 |
예외처리(Exception) (0) | 2019.08.03 |
다형성(Polymorphism) -second (0) | 2019.08.03 |
다형성(Polymorphism) -first (0) | 2019.08.03 |