package kr.or.ksmart;
class MemberDto{
private String name;
private String age;
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((age == null) ? 0 : age.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
MemberDto other = (MemberDto) obj;
if (age == null) {
if (other.age != null)
return false;
} else if (!age.equals(other.age))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
class MemberDto2 {
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
public class JavaBasic01 {
public static void main(String[] args) {
/*
* equals : 두 객체가 동일한지 비교하는 메서드
*/
//object의 메서드로 비교
MemberDto2 m21 = new MemberDto2();
MemberDto2 m22 = new MemberDto2();
MemberDto2 m23 = m21;
System.out.println(m21.hashCode() + " <<- m21 object hashcode");
System.out.println(m22.hashCode() + " <<- m22 object hashcode");
System.out.println(m21.equals(m22) + " <<- m21/m22 object equals");
System.out.println(m21.equals(m23) + " <<- m21/m23 object equals");
//오버라이딩 한 메서드로 비교
MemberDto m1 = new MemberDto();
MemberDto m2 = new MemberDto();
System.out.println(m1.hashCode() + " <<- m1 object hashcode");
System.out.println(m2.hashCode() + " <<- m2 object hashcode");
System.out.println(m1.equals(m2) + " <<- m1/m2 object equals");
//해쉬코드
String str = "홍길동2";
System.out.println(str.hashCode()+" <<- str hashcode 54150062");
/**
* instanceof 연산자
* 두 변수가 같은지 비교할 수 있는 연산자 (클래스 비교)
*/
System.out.println((m1 instanceof MemberDto) + " <<- instanceof ");
try {
//Class class는 클래스의 메타정보 (jvm에서 활용 등 )
//Class.forName 사용시 인수에 해당하는 네임스페이스 클래스는 메모리에 등록된다.
Class getClass = Class.forName("kr.or.ksmart.TestClass");
System.out.println(getClass.getName() + " <<-getClass.getName()");
System.out.println(getClass.hashCode() + " <<-getClass.hashCode()" );
//동적으로 객체화
/**
* Class 클래스 내의 newInstance 메서드를 활용하여 동적 인스턴스화
* object 타입으로 결과값이 나온다.
*/
Object mObject = getClass.newInstance();
//동적 인스턴스화는 결과를 다운 캐스팅
//instanceof 연산자로 비교
if(mObject instanceof TestClass) {
TestClass t = (TestClass) mObject;
t.setName("홍길동");
System.out.println(t.getName() + " <<- t.getName()");
}
}catch(ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
package kr.or.ksmart;
public class TestClass {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
object의 메서드로 비교
오버라이딩 한 메서드로 비교
해쉬코드
instanceof
'JAVA' 카테고리의 다른 글
DBCP (0) | 2020.05.14 |
---|---|
[JavaBasic] 인터페이스 (0) | 2020.04.29 |
[JavaBasic] 추상화 실습 (0) | 2020.04.28 |
[JavaBasic] 오버라이딩 / final / 추상클래스 (0) | 2020.04.28 |