Java的Object几个重写的方法
1:toString();
只是简单的列出对象的状态(也就是重要的实例变量的当前值)。
package jicheng;
public class Animal { public static void main(String[] args) { Animal a=new Animal(); System.out.println(a); } }
输出结果:
重写
package jicheng; public class Animal { private String name; private int age; 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 Animal(){} public Animal(String name,int age){ this.name=name; this.age=age; System.out.println("name="+name+","+"age="+age); } @Override public String toString() { return "Animal [name=" + name + ", age=" + age + "]"; } }
package jicheng; public class Animatetable { public static void main(String[] args) { Animal a =new Animal("lu",13); System.out.println(a); } }
小知识:this 关键字
1):表示当前的类的成员变量,也叫 类的属性
package jicheng; public class A{ private String name;//定义一个成员变量name public String getName() {//获得姓名 return name; } public void setName(String name) {//设置姓名,定义一个形参name name = name;//将局部变量的值传递给成员变量 } public static void main(String[] args) { A a=new A(); a.setName("lu"); System.out.println(a.getName()); } }
由运行结果可以看出,通过name=name并没有正确的将内容赋给属性,为什么呢?因为此时操作的name实际上是方法中的,跟类中的属性完全不沾边。
另外,这个程序代码中,有一个成员变量name,同时在方法中有个形式参数,参数名也是name。然后在方法中将形式参数name的值传递给成员变量name。虽然我们可以看明白这个代码的含义,但是作
为Java编译器它是怎么判断使用哪个变量的呢?到底是将形式参数name的值传递给成员变量name,还是反过来讲成员变量name的值传递给形式参数name呢?
此时this这个关键字就起到作用了,这种情
况下使用this这个关键字代表的就是类中的成员变量,又叫做类的属性。所以此时,为了明确的表示出哪一个是类中的属性,就要加上“this.属性名称”的操作。
2):引用构造函数。
package jicheng;
public class A{
public static String name;//定义一个成员变量name
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public A(){ //定义一个无参的构造函数
this(name);//调用有参的构造函数
System.out.println("testA");
}
public A(String name){//定义一个有参的构造函数
System.out.println("TestA");
}
}
public class Test { public static void main(String[] args) { A a=new A(); } }
输出
创建了一个A对象。 然后a引用A()对象。调用 public A()构造函数。但是无参构造函数中有this("TestB");表示调用有参的构造函数。所以也打印出来了。
3):this表示当前对象。
package jicheng; public class A{ public String getInfo(){ System.out.println("Student类--->"+this); return null; } public static void main(String[] args) { A a=new A(); a.getInfo(); System.out.println(a.toString()); System.out.println(a); } }
return this 返回当前对象。
public A getInfo(){ System.out.println("Student类--->"+this); return this; }
二):equals()
比较两个引用是否完全相同时。用==来比较。 要知道对象本身是否相同时。用equals()方法。
假如两辆车A和B。都是同一批生产的。==来比较的话是两个引用都指向这辆车。