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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 大西洋 于 2015-5-9 17:43 编辑
  1. public class PeachTest {
  2.         int a;
  3.         public PeachTest(){               
  4.                 System.out.println("\r\r"+a); // 可以调用
  5.         }
  6.         
  7.         public void tek(){
  8.                 System.out.println(a);  // 可以调用
  9.         }

  10.         public static void main(String[] args) {
  11.                 new PeachTest();  // 由于隐式赋值,打印结果为 0 ,正确
  12.         }
  13. }
复制代码
编译没问题;
为何我没有初始化变量 a,也能使用呢?? 此时的 a 占内存吗??
实例化后占堆内存,现在是存放在栈内存吗??

11 个回复

倒序浏览
成员变量是有默认初始化值的。
回复 使用道具 举报
thoris 发表于 2015-5-9 17:28
成员变量是有默认初始化值的。

感谢回答!
这个时候,它是占用内存的吧。
回复 使用道具 举报
成员变量必须要默认初始化值的。
回复 使用道具 举报
有默认初始化值,会占内存
回复 使用道具 举报
java语言是会对变量进行默认初始化的,变量a是成员变量,其所在内存区域应该是在静态存储区吧
回复 使用道具 举报
ZSMAN 中级黑马 2015-5-10 11:39:30
7#
默认初始化啊~
回复 使用道具 举报
对象一旦建立,就会自动调用无参的构造方法,虽然你没有对变量a赋值,但他默认的值为0
回复 使用道具 举报
因为这是成员变量,当你new一个对象的时候不赋值的话就直接初始化数值为0
回复 使用道具 举报
用的匿名调用,会初始化成员变量,系统默认0,
回复 使用道具 举报
默认为0,肯定占内存,妥妥的
回复 使用道具 举报
int 类型 默认初始化为0
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马