A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张少威 中级黑马   /  2012-6-3 08:43  /  1684 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张少威 于 2012-6-4 19:40 编辑
  1. String field;
  2. @Test
  3. public void test01() {
  4.         String local;
  5.         System.out.println(field);      //可以通过编译
  6.         System.out.println(local);      //无法通过编译
  7. }
复制代码
为什么?

3 个回复

倒序浏览
field是成员变量,成员变量都有默认的初始值,
local是局部变量,局部变量没有默认初始值,使用之前要先赋值

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
成员变量就像写javabean时候一样 会有默认值 String类型是null ; int 基本类型是0;可以通过
局部变量不一样,没有默认值 没赋值的话 编译器会报错;
回复 使用道具 举报
1.成员变量作用于整个类中,因为对象的存在而存在(在堆内存里) 局部变量作用于函数或语句中,存在于栈内存中,你的fied是实例变量(成员变量)有默认的初始化值,而你的local在函数中是局部变量,是必须自己主动初始化才能使用的,不然会报错。
2.因为储存的地方不同所以他们的存在的时间也不一样,成员变量是跟着对象走的,而局部变量当方法结束后,就会释放在堆内存中的内存空间。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马