黑马程序员技术交流社区

标题: 我定义了一个变量,没有初始化,为什么也能使用??? [打印本页]

作者: 大西洋    时间: 2015-5-9 17:11
标题: 我定义了一个变量,没有初始化,为什么也能使用???
本帖最后由 大西洋 于 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 占内存吗??
实例化后占堆内存,现在是存放在栈内存吗??

作者: thoris    时间: 2015-5-9 17:28
成员变量是有默认初始化值的。
作者: 大西洋    时间: 2015-5-9 17:44
thoris 发表于 2015-5-9 17:28
成员变量是有默认初始化值的。

感谢回答!
这个时候,它是占用内存的吧。
作者: gzp123    时间: 2015-5-9 21:50
成员变量必须要默认初始化值的。
作者: 陈明佳    时间: 2015-5-10 10:06
有默认初始化值,会占内存
作者: 李超然    时间: 2015-5-10 11:35
java语言是会对变量进行默认初始化的,变量a是成员变量,其所在内存区域应该是在静态存储区吧
作者: ZSMAN    时间: 2015-5-10 11:39
默认初始化啊~
作者: hufu4635    时间: 2015-5-10 11:40
对象一旦建立,就会自动调用无参的构造方法,虽然你没有对变量a赋值,但他默认的值为0
作者: 魔蝎座    时间: 2015-5-10 11:46
因为这是成员变量,当你new一个对象的时候不赋值的话就直接初始化数值为0
作者: zy18692243338    时间: 2015-5-10 12:05
用的匿名调用,会初始化成员变量,系统默认0,
作者: rose_xiaomei    时间: 2015-5-10 20:41
默认为0,肯定占内存,妥妥的
作者: dengxing    时间: 2015-5-10 20:53
int 类型 默认初始化为0




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2