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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 蓝墨清幽 于 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. }
复制代码
请帮忙解决注释中的问题

4 个回复

倒序浏览
a1 是基本数据类型,jvm会给他默认初始化值这个值0.
回复 使用道具 举报
海带 发表于 2015-4-17 18:18
a1 是基本数据类型,jvm会给他默认初始化值这个值0.

为什么main函数里边的不可以
回复 使用道具 举报

回帖奖励 +1

  a1 是成员变量,类型是基本数据类型,jvm会给他默认初始化值,这个值是0
            a2是局部变量,虽然也是基本书籍类型,但局部变量一定要初始化后才能使用。
            p1是成员变量,是个类是引用型类型,jvm会给他默认初始化值,这个值是NUll
            看懂了就知道下面的问题一样解决了
回复 使用道具 举报
main函数是也个方法,在main函数声明的变量也是局部变量
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马