Object类:
Object类位于java.lang包中,lang包下的类无需导包就可以使用,object是Java语言中的根类,即所有类的父类。Object中描述的所有方法其子类都可以使用。在对象实例化的时候,最终找的父类就是Object。
如果一个类没有指定父类, 那么默认则继承Object类。
Object类中包含多个方法,这里先介绍几个常用方法:toString、equals,如:
//1. java.lang.Object类是类层次的根类(最顶层的类),所有类默认都继承了此类:下面将使用Object类中的toString方法进行测试(不手动继承Object类的情况下), // toString方法讲一个对象转换为字符串 public class ObjecttoString{ public static void main(String[] args){ // 3.创建一个学生类的对象: StudentClass studentone = new StudentClass("韩梅梅",18); // 4.studentone对象调用toString方法: String str = studentone.toString(); System.out.println(studentone);//StudentClass@2a3046da System.out.println(str);//StudentClass@2a3046da,可以看到这里打印的结果和直接打印对象的结果一样,打印应用型数据时其结果是引用数据类型的地址值,如果想要得到更精确的结果,可以覆盖重写toString方法使其答应对象的属性(StudentClass中覆盖重写) // 当覆盖重写toString方法后返回的结果为两次:名字:韩梅梅,年龄:18, // 6.equals方法用于比较两个对象的地址值是否相等,返回布尔值;equals方法默认比较的是两个对象的地址值是否相等是没有什么意义的,既是两个对象的属性值相等,也是返回false,一般需要重写此方法,来实现比较属性值相等就返回true。 StudentClass studenttwo = new StudentClass("李雷",19); StudentClass studentthree = new StudentClass("韩梅梅",18); boolean result1 = studentone.equals(studenttwo); boolean result2 = studentone.equals(studentthree); boolean result3 = studenttwo.equals(studentthree); System.out.println(result1);//false System.out.println(result2);//false,equals方法默认比较地址值是否相等,因此这里既是值相等,也返回false,如果想要比较对象值是否相等,那么就要重写equals方法,覆盖重写后的结果为true; System.out.println(result3);//false System.out.println("str1".equals("str1"));//true } };
public class StudentClass{ // 定义成员变量: private String name; private int age; // 定义无参构造: public StudentClass(){}; // 定义全参构造: public StudentClass(String names,int ages){ this.name = names; this.age = ages; }; // name的get-和set-方法: public String getName(){ return name; }; public void setName(String names){ this.name = names; }; // age的get-和set-方法: public int getAge(){ return age; }; public void setAge(int ages){ this.age = ages; }; // 5.覆盖重写Object类中的toString方法使其返回成员变量的值:(实际开发中可以使用idea开发工具中的快捷键进行覆盖重写,没必要自己动手,ArrayList类和Scanner类中默认重写了此方法) @Override public String toString(){ // return name;只返回name属性值 // return age;只返回age属性值 return "名字:"+name+",年龄:"+age; } // 7.覆盖重写equals方法使其比较两个对象的属性:equals方法中传入的是一个对象,这里隐含一个多态的问题,父类无法使用子类特有的内容(属性或方法); // Object obj = studentone = new StudentClass("韩梅梅",18);obj表示的是equals接收的对象,可以看到最左边和最右边构成多态的结构:父类指向子类,父类无法访问子类的属性或方法,如果真要访问那就要向下转型(把obj的类型转换为StudentClass类型) @Override//实际开发中也无需手动重写此方法,可借助idea开发工具中快捷键Alt+inset自动生成。 public boolean equals(Object obj){ if (obj == null) return false;//如果传入的一个空值,那么直接返回false,无需进行下面代码,可以提高程序效率。 if (obj == this) return true;//如果传入的是本身,那么直接返回true,无需执行下面代码,可以提高程序效率。 // 向下转型将obj为Object类型转换为StudentClass类型,使其可以比较属性或方法: if(obj instanceof StudentClass){//添加此判断是防止传入非StudentClass类型的数据导致转型异常报错 StudentClass student = (StudentClass)obj; // 进行比较属性值并将布尔值赋值给变量res: boolean res = this.name.equals(student.name) && this.age == student.age;//this代表当前对象,student表示传入的对象(equals接收的对象),覆盖重写此方法时,应将所有属性都进行比较,结合逻辑与得到比较结果。 // 返回比较的值: return res; }; return false;//以上两种情况除外,当传入其他类型时,也直接返回false; } };
Objects类:
Objects是一个工具类,它提供了一些方法来 *** 作对象,它由一些静态的方法组成,并且这些方法允许空指针的出现,用于计算对象的hashcode、返回对象的字符串表示形式、比较两个对象等,如:
// 1.使用时导入Objects类: import java.util.Objects; public class ObjectsEquals{ public static void main(String[] args){ String str1 = null; String str2 = "kuhai"; boolean result = Objects.equals(str1,str2);//允许传入空指针值,如果是Object使用null会报错。 System.out.println(result);//false } }
提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:810665436@qq.com联系笔者删除。
笔者:苦海
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)