成员变量的初始值

成员变量的初始值


写了这么多程序. 不知道大家有没有产生这样一个疑问. 我们写的这个成员变量. 仔细观察一下

 package com.xyq.bao;

 public class Person {
     String name;

     public static void main(String[] args) {
         Person p = new Person();
         System.out.println(p.name);
     }

 }

这个成员变量啊. 就是创建了一下. 并没有赋值. 但是没有飘红嘛~. 编译是通过的. 我们换个例子, 大家再看一下

 package com.xyq.bao;

 public class Person {

     String name;
     public static void main(String[] args) {
         Person p = new Person();
         System.out.println(p.name);
         String nn;
         System.out.println(nn); // 飘红报错
     }
 }

第12行代码会飘红报错. 为什么会这样. 记住这样一句话. 所有的变量, 必须先声明后赋值, 才能使用.

 package com.xyq.bao;

 public class Person {

     String name;
     public static void main(String[] args) {

         Person p = new Person();
         System.out.println(p.name);
         String nn = "哇卡卡卡卡";
         System.out.println(nn);

     }

 }

不报错了.

为什么啊… 我的全局变量也没赋值啊. 为什么可以用呢? 原因是. 所有的成员变量, 在写好之后. java都会给他们一个初始值. 根据数据类型的不同. 给的值也不一样. 我们来看看这些成员变量的初始值.


看一下结果:

 byte=0
 short=0
 int=0
 long=0
 float=0.0
 double=0.0
 char=
 boolean=false
 String=null

char是空字符. boolean是false, String是null. 其他都是零.

空字符在ascii里就是0.

false在计算机里也是0.

其他的都很好解释. 唯独这个null.

注意: null表示空, 表示没有. 真空. 连空气都不如.

我们给出一个children类

package com.xyq.bao;

public class Children {

}

然后在Person里使用Children

public class Person {

     byte b;

     short s;

     int i;

     long l;

     float f;

     double d;

     char c;

     boolean bool;

     String str;

     Children children;

     public static void main(String[] args) {

         Person p = new Person();

         System.out.println("byte="+p.b);

         System.out.println("short="+p.s);

         System.out.println("int="+p.i);

         System.out.println("long="+p.l);

         System.out.println("float="+p.f);

         System.out.println("double="+p.d);

         System.out.println("char="+p.c);

         System.out.println("boolean="+p.bool);

         System.out.println("String="+p.str);

         System.out.println("Children="+p.children);

     }

}

结果:

byte=0

short=0

int=0

long=0

float=0.0

double=0.0

char=

boolean=false

String=null

Children=null

我们发现Children也是null.

原因: String其实也是一个类. 和我们写的Children, Cat, Panda没区别的. java为了让程序能正常执行. 必须要给成员变量一个初始值. 但是Children类型的对象必须得通过new来创建. java不能自动的去给你创建一个对象放这里, 所以, 只能告诉你这里的对象是空. 你用的时候啊. 自己去创建一个对象, 放这里.

posted @ 2020-01-21 11:28  元贞  阅读(713)  评论(0编辑  收藏  举报