首页 > 编程语言 >Java基础__学习笔记__常用API-Object

Java基础__学习笔记__常用API-Object

时间:2022-10-12 23:44:06浏览次数:49  
标签:__ Java name age Object equals sex student public

对象类用equals比较的是地址值

package StudyAPIofString;

public class test {
public static void main(String[] args) {
student s1 = new student("张三",13,"男");
student s2 = new student("张三",13,"男");
System.out.println(s1.toString()); //不重写toString方法前就是返回地址
System.out.println(s1); //与上面的是等价的
System.out.println(s1==s2);//显然是不等的 比较的是地址
System.out.println(s1.equals(s2)); //重写后 equals比较的是值了
}
}
package StudyAPIofString;


import OOP.LEEHL.Student;

import java.util.Objects;

public class student { //extend Object
    private String name;
    private int age;
    private String sex;

    public student() {
    }
    public student(String name, int age, String sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    /**
     * 重写toString构造方法,同一个类中成员变量直接调用
     * @return
     */
    @Override
    public String toString() {
        return "student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                '}';
    }

//    /**
//     * 自己重写equals方法
//     */
//    @Override
//    public boolean equals(Object o){
//        //1.判断o是不是学生类型
//        if(o instanceof student){
//            student s2 = (student) o; //o是学生类 将object类强转为学生类
//

// 简便写法 // return this.name.equals(s2.name) && this.age == s2.age && this.sex.equals(s2.sex);


//// if(this.name.equals(s2.name) && this.age == s2.age //// && this.sex.equals(s2.sex)){ //// return true; //// // 判断2个对象是否一致 //// //注意 对象的比较要重写equals 如果是引用数据类型要用equals //// //基本数据类型用 == 就行 //// //外层if已经判断了object o是一个student类型 那么我们可以强转成student类型 //// //如果不强转 那么o无法调用实例化的成员变量 //// }else{ //// return false; //// } // // }else { // return false; // } // // }     //IDER自动生成的equals重写方法,很巧妙! @Override public boolean equals(Object o) {
     //1、判断是否是同一个对象比较 if (this == o) return true;
     //2、这个getclass是 this.getClass() 返回this的类型 这一步主要是判断this和传进来的object o进行比对是否为同一个类型 if (o == null || getClass() != o.getClass()) return false;
     //3、到了这一步说明o是学生类型且不为null,转置为学生类型。 student student = (student) o;
     // 使用Objects.equals方法而不直接用equals方法 是防止空值异常,如果这个name是null,那么比较就没有意义了 ,而且object的equals方法更安全! return age == student.age && Objects.equals(name, student.name) && Objects.equals(sex, student.sex); } // @Override // public int hashCode() { // return Objects.hash(name, age, sex); // } }

 

Object的equals方法比较结果是一样的,但是更安全

        String s1 = null;
        String s2 = new String("leezhhhcf");
        // System.out.println(s1.equals(s2)); // 报错,留下隐患,可能出现空指针异常
        System.out.println(Objects.equals(s1,s2)); //false 这样就不会报错了
    }

    /**   Java的equals源码 很严谨!
          public static boolean equals(Object a, Object b) {
              return (a == b) || (a != null && a.equals(b));
              }
     */

标签:__,Java,name,age,Object,equals,sex,student,public
From: https://www.cnblogs.com/leehl8016/p/16786551.html

相关文章

  • linux大全链接
    ​​http://man.linuxde.net/​​......
  • vue 异步请求数据后,用v-if,显示组件,这样初始化的值就在开始的时候传进去了
    请求到数据才会有的一个组件,并把数据传进组件中---------------------------------------------生活的意义并不是与他人争高下,而在于享受努力实现目标的过程,结果是对......
  • Ajax.Net程序教程.彭成刚编写
    //////////////////////////////////////////日期:2007年3月16日////功能:实现.Net下的Ajax功能////作者:彭成刚//......
  • 制作Access代码生成器 研发中【资料整理】
    类别:vs2003C#应用程序---------------------------data_type类型列表备注:130字符串:130日期:7数字:3---------------------------获得全部表dbdb=newdb(this.textBox1.Te......
  • IE和Firefox都兼容性的JS代码书写方式
    1.document.form.item问题(1)现有问题:现有代码中存在许多document.formName.item("itemName")这样的语句,不能在MF下运行(2)解决方法:改用document.formName.elements[......
  • 天津站长大会 网站联盟申请
    网站申请方式我举个例子网站名称:站长中国联系人:彭成刚联系方式:网站域名:zzcn.net网站简介:开发最适合设计师的网站系统 然后,在下面申请,然后当大家都申请完后,会单独做出来......
  • 视觉算法工程师招聘|杭州易思维科技
    3D视觉工坊致力于推荐最棒的工作机会,精准地为其找到最佳求职者,做连接优质企业和优质人才的桥梁。易思维简介易思维(杭州)科技有限公司坐落于浙江省杭州市,专注于工业智能视觉领......
  • js 预解析案例
    案例f1();console.log(c);//9没有var声明当全局变量看console.log(b);//9console.log(a);//报错functionf1(){vara=b=c=9;//等......
  • typeorm-model-generator 数据库映射Model 命令 - nest
    typeorm-model-generator数据库映射Model命令NestJs中的控制器、路由、Get、Post方法参数装饰器Nest.js从零到壹系列(二):使用Sequelize操作数据库这里说不要用typeorm......
  • 协变返回类型
    1.代码示例packagedemo01;classGrain{@OverridepublicStringtoString(){return"Grain[]";}}classWheatextendsGrain{......