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类不是要自动调用构造方法么?
展开
 我来答
miho蓓
2011-04-22 · TA获得超过1089个赞
知道小有建树答主
回答量:984
采纳率:0%
帮助的人:539万
展开全部
很简单的···
你代码中的两个str1属性 不是同一个东西, 不管怎么调用 2个str1并不会随对方的改变而改变。

你去做个测试就明白了 你把构造函数中的String str1 = “abc”; 改成 str1 = “abc”;
你就明白了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
松秋梵畅0D
2011-04-22 · 超过43用户采纳过TA的回答
知道小有建树答主
回答量:142
采纳率:0%
帮助的人:116万
展开全部
a.str1调用的是类的属性,构造方法中的str1作用域为构造体内,而且构造方法的信字符串未为属性赋值,如果赋值的话应该是abc 可以吧test的构造方法改为this.str1="abc",就是你要的输出结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
卡白罗
2011-04-22 · 超过12用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:27.5万
展开全部
应为你 构造方法里面的 str1 和 成员属性 str1 是不同的两个变量 如果你把 够找函数里面改成
this.str1="ABC" 就能输出 abc了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友15e1ccd
2011-04-22 · 超过15用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:44.5万
展开全部
按你的意思,构造方法里的东西写的有问题,不应该再NEW一块新的地址,应该直接写成str1="abc"这个类的成员变量str1才被改变。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
miniapp16e43ddfde28
2011-04-22 · TA获得超过639个赞
知道小有建树答主
回答量:737
采纳率:0%
帮助的人:530万
展开全部
因为你test a=new test();即初始化对象的时候调用了构造函数
public test(){
String str1="abc";//作用范围在test构造函数内
}
因而a对象的str1属性为“ccc”
修改构造函数如下:
public test(){
this.str1="abc";
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式