zoukankan      html  css  js  c++  java
  • Java变量的默认值和初始化

    学习自

    变量的默认值

    只有成员变量才有默认值,而局部变量必须要赋初值,为什么非怎么设置?下面我们来看一下。

    类型
    Int 0
    Long 0
    Boolean false
    float 0.0
    double 0.0
    char /u000(NULL)
    String NULL
    Object NULL
    数组(未初始化) NULL
    数组(初始化) 数组各个元素的值,其类型的默认值

    然后我们通过一个程序来检测一下:

    public static class Measurement {
        int i;
        long l;
        boolean b;
        float f;
        double d;
        char c;
        String s;
        Object o;
        int[] ints;
        public void printAll() {
            System.out.println("Java 各个数据类型的初始值如下:
    " +
                    "Int:" + i + "
    " +
                    "Long:" + l + "
    " +
                    "Boolean:" + b + "
    " +
                    "Float:" + f + "
    " +
                    "Double:" + d + "
    " +
                    "Char:" + c + "
    " +
                    "String:" + s + "
    " +
                    "Object:" + o + "
    " +
                    "Array:" + ints + "
    ");
        }
    }
    

    我们看一下这个程序运行之后的结果,

    Java 各个数据类型的初始值如下:
    Int:0
    Long:0
    Boolean:false
    Float:0.0
    Double:0.0
    Char:
    String:null
    Object:null
    Array:null

    为什么有默认值

    这是一个好问题!?因为有些成员变量在初始化的时候不知道赋什么初始值,所以为了解决这个问题,Java 直接给没有显示初始化的成员变量赋一个初始值。

    初始值赋值的过程

    成员变量赋默认值的过程是依照从上到下的循序来的,这一个,我们通过IDE来进行一下证实。

    public static class Circle{
        double r;
        double area=3.14*r*r;
    }
    

    我们可以发现,我们的这部分代码可以正常编译和运行。
    然后我们在尝试一下下面的代码:

    public class Circle {
        double area = 3.14 * r * r;
        double r;
    }
    

    这样我们会发现一个问题,我们的编译器是无法正常编译的,编译器会出现向前引用的问题。
    这样我们就可以得到我们的赋值过程是从上到下的。

    局部变量也需要显示初始化

    上面我们提到了成员变量的默认值,那为什么在方法中的布局要显示的初始化呢?我想我们都写过这样的代码:

    public static void test(){
        int i;
        i++;
    }
    

    如果你是这样写的代码,那么我们的编译器一定会出错。所以我们的得出一个结论,我们所有的局部变量必须要有初始化值。因为可以这种手段来避免很多无畏的错误。

  • 相关阅读:
    Python configparser模块
    Python OS,shutil模块
    一、操作系统基础
    Python 序列化
    Python 验证码生产程序和进度条程序
    SaltStack 实践课程二 PHP+NGINX
    Android攻城狮数据存储之文件存储
    Android攻城狮数据存储之SQLite数据库简介
    Android攻城狮数据存储之SharedPreferences
    Android攻城狮读取了JSON实现图文混排
  • 原文地址:https://www.cnblogs.com/cao-1/p/12170117.html
Copyright © 2011-2022 走看看