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类不是要自动调用构造方法么?
展开
 我来答
lvzjune
2012-07-27 · 超过14用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:24.6万
展开全部
关于对象的实例化过程:
1 检查类是否加载,如果没有加载就加载这个类,
要加载所有父类。(读取.class文件到内存)
* 懒惰式加载(按需加载):如果第一次用到就加载,
只加载一次。通过CLASSPATH指定的路径寻找类文件(.class),
加载以后是一个对象,类型是Class。
获得这个类对象:Student.class-> Class 实例
2 分配父类型空间, 按照属性分配空间, 属性自动初始化为"零"
3 执行父类属性的初始化代码, 如: int a =1
4 执行父类构造器代码
5 父类构造器结束,返回子类构造器, 分配子类空间
按照属性分配空间, 属性自动初始化为"零"
6 执行子类属性的初始化代码, 如: int b =2
7 执行子类构造器代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
被窝好暖
推荐于2017-10-06 · 超过12用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:37.1万
展开全部
public test(){

String str1="abc";
}
你又声明了一个新的str1,是个局部变量,作用域仅限于此方法。

应该这样
public test(){

str1="abc";
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
blueshuiyin
2011-04-22
知道答主
回答量:9
采纳率:0%
帮助的人:9756
展开全部
类中的String str1="ccc",是个全局变量,也是类test的一个属性,它的作用范围是整个类.
构造方法public test(){
String str1="abc";
}中的String str1是个局部变量(这牵扯到局部变量与全局变量的概念),只不过这个局部变量也叫str1.局部变量的作用范围仅限与之相临的最内层的两个大括号之间,这里是public test(){}方法中的两个大括号之间.出了这个作用范围,局部变量str1所占用的内存就会被释放.
你在主方法main中打印的是a.str1,编译器调用的是对象a的str1属性的值,而它的值就是ccc.
简言之,这两个str1,是2个不同的变量,在内存中占有两个不同的内存空间.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
中华大辞典
2011-04-22 · TA获得超过368个赞
知道答主
回答量:112
采纳率:0%
帮助的人:104万
展开全部
String str1="ccc"; 定义了test类的成员变量
而String str1="abc"; 定义的是test () 方法的内部变量,它是一个新的内部变量,并没有修改同名的成员变量
所以在实例化test类时,实例里的str1是成员变量定义的,其值是"ccc”

如果想让str1变成"abc”,把构造方法的改成this.str1="abc"即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
work_ys
2011-04-22
知道答主
回答量:59
采纳率:100%
帮助的人:21.7万
展开全部
因为你定义了两个变量,一个全局变量和一个局部变量,把构造方法中str1前面的String关键字去掉就会输出abc。以你现在的写法,虽然变量名称相同,但是内存地址不同。而你在主函数中引用的是全局的str1,所以输出ccc.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(13)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式