5黑马币
毕老师的this关键字这块。。理论上来说,this.x=x 和x=x 是不一样的。但是执行的结果,没差别。
class Person
{
private String name;
private int age;
Person()
{
System.out.println("A:name="+name+" , age="+age);
}
Person(String name)
{
this.name=name; //这里把this.去掉,执行结果没有差异。不知道为什么,是java升级了把这个this关键字省略了?
System.out.println("B:name="+name+", age="+age);
}
Person(String name,int age)
{
this.name=name;
this.age=age;
System.out.println("C:name="+name+", age="+age);
}
}
class Demo
{
public static void main(String[] args)
{
Person p1=new Person();
Person p2=new Person("张三");
Person p3=new Person("李四",22);
}
}
|
最佳答案
查看完整内容
以下是正确答案,求仔细看,看完给分:
因为在类中定义了成员变量name和age,在Person(String name)构造方法中,定义了一个局部变量name
,而在这个局部变量中的代码如果写成 this.name=name,就是普通的成员变量赋值,如果写成
name=name,则两个name都属于Person(String name)这个构造方法中,与外面定义的成员变量没有任何关系,
有句话,就是方法自己有,绝不出去找
在构造方法中的输出语句System.out.println("B:name="+n ...
|