zoukankan      html  css  js  c++  java
  • 成员变量的初始值

    成员变量的初始值


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

     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不能自动的去给你创建一个对象放这里, 所以, 只能告诉你这里的对象是空. 你用的时候啊. 自己去创建一个对象, 放这里.

  • 相关阅读:
    英语面试自我介绍范文(二)
    在PHP中PDO解决中文乱码问题的一些补充
    英文面试自我介绍(一)
    添加XP/2003的网络用户和密码及用户自动登录
    Windows Server 2000/2003/2008错误
    数据库连接字符串大全 (转载)
    flash中特殊字符解析的使用
    创建T100Monitor技术研究过程
    LINQ,SQL查询,LINQ 实现常见SQL查询
    Web.Config 的图形配置及配置项含意
  • 原文地址:https://www.cnblogs.com/wenyule/p/12221156.html
Copyright © 2011-2022 走看看