public class Test {
String name = "Tom";
public Test(String name) {
name =name;
}
public static void main(String[]args){
Test t=new Test("jack");
System.out.println(t.name);
}
}
public static void main(String[] args)
{
Test t = new Test("jack"); //第一步:创建对象,并初始化,调用构造方法Test(String name)
System.out.println(t.name); //第二部,将name打印出来;
}
}
这样输出的就是jack ------解决方案-------------------- name =name;
你的这一句你应该看到了提示The assignment to variable name has no effect
你的构造方法完全没有取到全局变量name,只取到了局部的参数name,所以构造方法等于失效。
你改成 this.name=name; 就对了,this.name就能取到你本类的name。 ------解决方案-------------------- String name = "Tom";
public list(String name1) {
name =name1;
}
你ctrl 鼠标 放上去你看看 name 到底是那个, 一个是全局,一个是局部 ------解决方案-------------------- 你代码好比
public list(String name1) {
name1 =name1;
}
String name = "Tom"; 这个还没有赋值。 ------解决方案-------------------- 你第二个name 没有加this,构造函数里的name跟外面的name完全不影响。所以t.name == “TOM” ------解决方案-------------------- jack参数已经传进去了,但是你的代码有点迷惑。
name = name; //这个是在方法类,方法类的属性是私有的,方法内部专属,这里的两个name没有指明,默认都是方法私有,也就是传进来的参数(两个name指向同一个引用jack)这种写法没意义。要想调用方法外的属性,需要加上前缀,指明是方法外的哪个类的哪个属性,这里应该写成this.name=name;(this的用法自己去找资料) 这样输出的才是jack