본문 바로가기

웹 개발

웹 개발_java_2022/11/04_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클래스;

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);
    }
}