1:toString();
只是简单的列出对象的状态(也就是重要的实例变量的当前值)。
package jicheng;
public classAnimal {public static voidmain(String[] args) {
Animal a=newAnimal();
System.out.println(a);
}
}
输出结果:
重写
packagejicheng;public classAnimal {privateString name;private intage;publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}public intgetAge() {returnage;
}public void setAge(intage) {this.age =age;
}publicAnimal(){}public Animal(String name,intage){this.name=name;this.age=age;
System.out.println("name="+name+","+"age="+age);
}
@OverridepublicString toString() {return "Animal [name=" + name + ", age=" + age + "]";
}
}
packagejicheng;public classAnimatetable {public static voidmain(String[] args) {
Animal a=new Animal("lu",13);
System.out.println(a);
}
}
小知识:this 关键字
1):表示当前的类的成员变量,也叫 类的属性
packagejicheng;public classA{private String name;//定义一个成员变量name
public String getName() {//获得姓名
returnname;
}public void setName(String name) {//设置姓名,定义一个形参name
name = name;//将局部变量的值传递给成员变量
}public static voidmain(String[] args) {
A a=newA();
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 classTest {public static voidmain(String[] args) {
A a=newA();
}
}
输出
创建了一个A对象。 然后a引用A()对象。调用 public A()构造函数。但是无参构造函数中有this("TestB");表示调用有参的构造函数。所以也打印出来了。
3):this表示当前对象。
packagejicheng;public classA{publicString getInfo(){
System.out.println("Student类--->"+this);return null;
}public static voidmain(String[] args) {
A a=newA();
a.getInfo();
System.out.println(a.toString());
System.out.println(a);
}
}
return this 返回当前对象。
publicA getInfo(){
System.out.println("Student类--->"+this);return this;
}
二):equals()
比较两个引用是否完全相同时。用==来比较。 要知道对象本身是否相同时。用equals()方法。
假如两辆车A和B。都是同一批生产的。==来比较的话是两个引用都指向这辆车。