黑马程序员技术交流社区

标题: 【技术问题】变量初始化问题 [打印本页]

作者: 蓝墨清幽    时间: 2015-4-17 18:08
标题: 【技术问题】变量初始化问题
本帖最后由 蓝墨清幽 于 2015-4-17 18:09 编辑
  1. public class ChengyuanAndJubu{
  2.         static int a1;        
  3.         int a3;
  4.         static Person p1;
  5.         static Person p3=new Person();
  6.         Person p5;

  7.          public static void main(String[] args){
  8.                 int a2;
  9.                 Person p2;
  10.                 Person p4=new Person();
  11.                 ChengyuanAndJubu test = new ChengyuanAndJubu();
  12.                 System.out.println("a1="+a1);//为什么a1通过编译,且初始值为0
  13.                 //System.out.println("a2="+a2);//编译不能通过,为什么
  14.                 System.out.println("a3="+test.a3);//为什么a1通过编译,且初始值为0
  15.                 System.out.println("p1="+p1);//为什么p1通过编译,且初始值为null
  16.                 //System.out.println("p2="+p2);//编译不能通过,为什么
  17.                 System.out.println("p3.age="+p3.age);//为什么p1通过编译,且初始值为null
  18.                 System.out.println("p4.age="+p4.age);//为什么p1通过编译,且初始值为null
  19.                 System.out.println("p5="+test.p5);//p5为null,为什么
  20.                 //System.out.println("p5.age="+test.p5.age);//p5为null
  21.                
  22.         }
  23. }
  24. class Person{
  25.         int age;
  26.         String name;
  27. }
复制代码
请帮忙解决注释中的问题


作者: 海带    时间: 2015-4-17 18:18
a1 是基本数据类型,jvm会给他默认初始化值这个值0.
作者: 蓝墨清幽    时间: 2015-4-17 18:25
海带 发表于 2015-4-17 18:18
a1 是基本数据类型,jvm会给他默认初始化值这个值0.

为什么main函数里边的不可以
作者: 海带    时间: 2015-4-17 18:28
  a1 是成员变量,类型是基本数据类型,jvm会给他默认初始化值,这个值是0
            a2是局部变量,虽然也是基本书籍类型,但局部变量一定要初始化后才能使用。
            p1是成员变量,是个类是引用型类型,jvm会给他默认初始化值,这个值是NUll
            看懂了就知道下面的问题一样解决了
作者: 海带    时间: 2015-4-19 23:58
main函数是也个方法,在main函数声明的变量也是局部变量




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