Java学习总结(16.07.08)Object类的几个常用方法

来源:互联网 发布:关于网络交友的漫画 编辑:程序博客网 时间:2024/05/22 04:48

object是java里所有类的父类,下面说一下Object类的3个常用方法:toString方法,getClass方法,equals方法。


toString方法:

toString方法没有形参,返回值是一个字符串,内容是对象的信息

public class Main {public static void main(String[] args) {Object object=new Object();System.out.println(object.toString());}}
输出结果:java.lang.Object@15db9742

toString方法返回的字符串是类名@肩上一个十六进制整数

Object类自带的toString方法并没有什么大作用,但是toString方法可以被子类重写,用于输出子类的信息

例:

public class Cat {public int age=0;private String name;public Cat(String name,int age) {// TODO Auto-generated constructor stubthis.name=name;this.age=age;}@Overridepublic String toString() {// TODO Auto-generated method stub//return super.toString();return "小猫"+this.name+"今年"+this.age+"岁";}}
public class Main {public static void main(String[] args) {Object object=new Object();System.out.println(object.toString());Cat cat=new Cat("Tom", 3);                System.out.println(cat.toString());       }}
输出结果:java.lang.Object@15db9742小猫Tom今年3岁

getClass方法

getClass是一个不可继承的方法,没有形参,它返回一个字符串,字符串内容是该类(子类)的信息

equals方法

说道equals方法,就不得不提双等号==,两者都是用于比较数据并返回布尔值

Object类的equals方法和==的区别:

==比较的是比较对象的地址,通常基本数据类型的比较使用==

equals标的是比较对象的内容(储存空间里的内容),通常引用数据类型的比较使用equals方法  

例:

public class Main {public static void main(String[] args) {Integer i1=10;Integer i2=10;Integer i3=new Integer(10);//创建了一个新的对象,引用所指的地址不一样System.out.println(i1.equals(i2));System.out.println(i1.equals(i3));System.out.println(i1==i2);System.out.println(i1==i3);}}
输出结果:truetruetruefalse


另外,equals方法还可以被子类重写
例:
public class Point {private float x=0,y=0;public Point(Float x) {// TODO Auto-generated constructor stubthis.x=x;}public Point(float x,float y) {// TODO Auto-generated constructor stubthis.x=x;this.y=y;}@Overridepublic boolean equals(Object obj) {// TODO Auto-generated method stub//return super.equals(obj);if(this.x==((Point)obj).x||this.y==((Point)obj).y)return true;elsereturn false;}public static void main(String[] args) {Point p1=new Point(10.0f,15.0f);Point p2=new Point(10.0f,15.0f);System.out.println(p1.equals(p2));System.out.println(p1==p2);}}
输出结果:truefalse
这里在Point中重写了equals方法,若两点的坐标相同,则返回true,否则返回false

若equals没有重写,上面的程序输出结果是两个false,我猜测这是因为两个Point的对象的this指针不相同所导致。

0 0
原创粉丝点击