java中的对象实例化 10
packagecom.lzw;importstaticjava.lang.System.out;publicclasstest{Stringstr1="ccc";publ...
package com.lzw;
import static java.lang.System.out;
public class test {
String str1="ccc";
public test(){
String str1="abc";
}
public static void main(String[] args) {
test a=new test();
out.println(a.str1);
}
}
请问为什么显示的是ccc,而不是abc??? 实例化test类不是要自动调用构造方法么? 展开
import static java.lang.System.out;
public class test {
String str1="ccc";
public test(){
String str1="abc";
}
public static void main(String[] args) {
test a=new test();
out.println(a.str1);
}
}
请问为什么显示的是ccc,而不是abc??? 实例化test类不是要自动调用构造方法么? 展开
15个回答
展开全部
很简单的···
你代码中的两个str1属性 不是同一个东西, 不管怎么调用 2个str1并不会随对方的改变而改变。
你去做个测试就明白了 你把构造函数中的String str1 = “abc”; 改成 str1 = “abc”;
你就明白了。
你代码中的两个str1属性 不是同一个东西, 不管怎么调用 2个str1并不会随对方的改变而改变。
你去做个测试就明白了 你把构造函数中的String str1 = “abc”; 改成 str1 = “abc”;
你就明白了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a.str1调用的是类的属性,构造方法中的str1作用域为构造体内,而且构造方法的信字符串未为属性赋值,如果赋值的话应该是abc 可以吧test的构造方法改为this.str1="abc",就是你要的输出结果
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应为你 构造方法里面的 str1 和 成员属性 str1 是不同的两个变量 如果你把 够找函数里面改成
this.str1="ABC" 就能输出 abc了!
this.str1="ABC" 就能输出 abc了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按你的意思,构造方法里的东西写的有问题,不应该再NEW一块新的地址,应该直接写成str1="abc"这个类的成员变量str1才被改变。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你test a=new test();即初始化对象的时候调用了构造函数
public test(){
String str1="abc";//作用范围在test构造函数内
}
因而a对象的str1属性为“ccc”
修改构造函数如下:
public test(){
this.str1="abc";
}
public test(){
String str1="abc";//作用范围在test构造函数内
}
因而a对象的str1属性为“ccc”
修改构造函数如下:
public test(){
this.str1="abc";
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询