import java.util.Objects;
public class Teacher {
private String name;
private String schoolName;
public Teacher(String name, String schoolName) {
this.name = name;
this.schoolName = schoolName;
}
// @Override
// public boolean equals(Object obj) {
// if(this == obj) return true;
// if(obj == null) return false;
// if(getClass() != obj.getClass()) return false;
// Teacher other = (Teacher) obj;
// return Objects.equals(name, ((Teacher) obj).name)
// && Objects.equals(schoolName, other.schoolName);//둘다 같아야 한다 솔까 지금한 50%정도만 이해한듯 더럽게 어렵네
// }
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Teacher teacher = (Teacher) o;
return Objects.equals(name, teacher.name) && Objects.equals(schoolName, teacher.schoolName);
}
@Override
public int hashCode() {
return Objects.hash(name, schoolName);
}
@Override
public String toString() {
return "Teacher{" +
"name='" + name + '\'' +
", schoolName='" + schoolName + '\'' +
'}';
}
}
package j15_Object클래스;
public class Main {
public static void main(String[] args) {
ObjectTest objectTest = new ObjectTest();
int hashCode = objectTest.hashCode();
System.out.println(hashCode);
System.out.println(Integer.toHexString(hashCode));
System.out.println(objectTest);
}
}
package j15_Object클래스;
/*모든 클래스는 Object클래스를 상속받는다*/
public class ObjectTest extends Object{
private String name;
public String address;
public ObjectTest() {}
@Override
public String toString() {
return " name: " + name+ " address: " + address;
}
public ObjectTest(String name, String address) {
this.name = name;
this.address = address;
}
public String showInfo() {
return " name: " + name+ " address: " + address;
}
}
package j15_Object클래스;
public class StringEquals {
public static void main(String[] args) {
int i = 10;
String name1 = "김준일";
String name2 = "김준일";
String name3 = new String("김준일");
String name4 = new String("김준일");
System.out.println(name1 + ", " + name2+", "+name3);
//object로 변수를 선언하면 이미 업캐스팅 된상태이기 떄문에 여러 자료형을 답을수있다다운캐스팅 해서 사용해야한다
System.out.println(name1 == name2);
System.out.println(name1 == name3);//객체의 ==비교는 주소비교이다
System.out.println(name3 == name4);
System.out.println(name1.equals(name3));//이퀄스는 주소가아닌 안쪽의 값을 비교해준다
}
}
package j15_Object클래스;
import java.util.Objects;
public class Teacher {
private String name;
private String schoolName;
public Teacher(String name, String schoolName) {
this.name = name;
this.schoolName = schoolName;
}
// @Override
// public boolean equals(Object obj) {
// if(this == obj) return true;
// if(obj == null) return false;
// if(getClass() != obj.getClass()) return false;
// Teacher other = (Teacher) obj;
// return Objects.equals(name, ((Teacher) obj).name)
// && Objects.equals(schoolName, other.schoolName);//둘다 같아야 한다 솔까 지금한 50%정도만 이해한듯 더럽게 어렵네
// }
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Teacher teacher = (Teacher) o;
return Objects.equals(name, teacher.name) && Objects.equals(schoolName, teacher.schoolName);
}
@Override
public int hashCode() {
return Objects.hash(name, schoolName);
}
@Override
public String toString() {
return "Teacher{" +
"name='" + name + '\'' +
", schoolName='" + schoolName + '\'' +
'}';
}
}
package j15_Object클래스;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class TeacherClass {
public static void main(String[] args) {
Teacher teacher1 = new Teacher("김준일","코리아아이티");
Teacher teacher2 = new Teacher("김준일","코리아아이티");
Class t_class = teacher1.getClass();
System.out.println(t_class.getSimpleName());
System.out.println(t_class.getName());
Field[] fields = t_class.getDeclaredFields();
for(int i = 0; i < fields.length; i++) {
System.out.println(fields[i].getName());
System.out.println(fields[i].getType().getSimpleName());
}
t_class.getDeclaredFields();
Method[] methods = t_class.getDeclaredMethods();
for(int i = 0; i < methods.length; i++) {
System.out.println(methods[i].getName());
}
System.out.println(teacher1.getClass()==teacher2.getClass());
System.out.println(teacher1 instanceof Teacher);//이거랑
System.out.println(teacher1.getClass() == Teacher.class);//이거는같다
System.out.println(teacher2.getClass() == Teacher.class);
}
}
package j15_Object클래스;
import j15_Object클래스.Teacher;
public class TeacherEquals {
public static void main(String[] args) {
Teacher teacher1 = new Teacher("김준일","코리아아이티");
j15_Object클래스.equals.Teacher teacher2
= new j15_Object클래스.equals.Teacher("김준일","코리아아이티");
// System.out.println(teacher1 == teacher2);//자료형이 다르므로 사용불가
System.out.println(teacher1.equals(teacher2));// 자료형이 달라도 비교는 가능하다
System.out.println(teacher1.hashCode()==teacher2.hashCode());//값이 같으면 true가나옴 값만 같으면 된다
}
@Override
public String toString() {
return super.toString();
}
}
package j15_Object클래스;
public class ToString {
public static void main(String[] args) {
ObjectTest objectTest = new ObjectTest();
System.out.println(objectTest);
System.out.println(objectTest.toString());
String str = objectTest.toString();
System.out.println(str);//Strinf에 넣을 려면 .toString을 써서 형변환을 해야한다
System.out.println(objectTest.showInfo());
Teacher teacher1 = new Teacher("김준일","코리아아이티");
Teacher teacher2 = new Teacher("김준이","부사뇨육대학원");
System.out.println(teacher1);
System.out.println(teacher2);
}
}