对于类的成员变量


不管程序有没有显示的初始化,Java  虚拟机都会先自动给它初始化为默认值。

  1、整数类型(byte、short、int、long)的基本类型变量的默认值为0。

  2、单精度浮点型(float)的基本类型变量的默认值为0.0f。

  3、双精度浮点型(double)的基本类型变量的默认值为0.0d。

  4、字符型(char)的基本类型变量的默认为 “/u0000”。

  5、布尔性的基本类型变量的默认值为 false。

  6、引用类型的变量是默认值为 null。

  7、数组引用类型的变量的默认值为 null。当数组变量的实例后,如果没有没有显示的为每个元素赋值,Java 就会把该数组的所有元素初始化为其相应类型的默认值。

数组例子:

  1)   int[] a;   //声明,没有初始化默认值是null

  2)   int[] a=new int[5];   //初始化为默认值,int型为0

代码实例:

public class ThisDemo {
    byte b;
    short s;
    int i;
    long l;
    float f;
    double d;
    char c;
    boolean n;
    int[] a;
    int[] t=new int[5];
    public static void main(String[] args) {
        ThisDemo  thisDemo = new ThisDemo();
        System.out.println( "byte = "+ thisDemo.b);
        System.out.println( "short = "+ thisDemo.s);
        System.out.println( "int = "+ thisDemo.i);
        System.out.println( "long = "+ thisDemo.l);
        System.out.println( "float = "+ thisDemo.f);
        System.out.println( "double = "+ thisDemo.d);
        System.out.println( "char = "+ thisDemo.c);
        System.out.println( "boolean = "+ thisDemo.n);
        System.out.println( "int[] = "+ thisDemo.a);
        System.out.println( "int[] t = "+ thisDemo.t[0]);
    }
}

结果:

byte = 0
short = 0
int = 0
long = 0
float = 0.0
double = 0.0
char = 
boolean = false
int[] = null
int[] t = 0

局部变量初始化


局部变量声明以后,Java 虚拟机不会自动的为它初始化为默认值。

  因此对于局部变量,必须先经过显示的初始化,才能使用它。

  如果编译器确认一个局部变量在使用之前可能没有被初始化,编译器将报错。

代码实例:

public class ThisDemo {
    public static void main(String[] args) {
        byte b;
        short s;
        int i;
        long l;
        float f;
        double d;
        char c;
        boolean n;
        int[] a;
        int[] t=new int[5];
        System.out.println( "byte = "+ b);
        System.out.println( "short = "+ s);
        System.out.println( "int = "+ i);
        System.out.println( "long = "+ l);
        System.out.println( "float = "+ f);
        System.out.println( "double = "+ d);
        System.out.println( "char = "+ c);
        System.out.println( "boolean = "+ n);
        System.out.println( "int[] = "+ a);
        System.out.println( "int[] t = "+ t[0]);
    }
}

结果:

Error:(15, 40) java: 可能尚未初始化变量b
Error:(16, 41) java: 可能尚未初始化变量s
Error:(17, 39) java: 可能尚未初始化变量i
Error:(18, 40) java: 可能尚未初始化变量l
Error:(19, 41) java: 可能尚未初始化变量f
Error:(20, 42) java: 可能尚未初始化变量d
Error:(21, 40) java: 可能尚未初始化变量c
Error:(22, 43) java: 可能尚未初始化变量n
Error:(23, 41) java: 可能尚未初始化变量a

java变量的初始化之后的默认值的更多相关文章

  1. java中8种数据类型和默认值所占字节数

    java 8种基本数据类型的默认值及所占字节数 通过一段代码来测试一下 8种基本数据类型的默认值 1 package dierge; 2 3 public class Ceshi { 4 int a; ...

  2. Java变量初始化之后的默认值问题

    1) 局部变量初始化(局部变量:函数.语句中的变量,只在所属区域内有效)局部变量声明后,Java虚拟机不会自动给它初始化为默认值.因此对于局部变量,必须经过显示的初始化,才能使用它.如果使用一个没有被 ...

  3. java 8种基本数据类型的默认值及所占字节数

    通过一段代码来测试一下 8种基本数据类型的默认值 package dierge; public class Ceshi { int a; double b; boolean c; char d; fl ...

  4. java变量的初始化

    public class Init { private int age;//非静态初始化语句<3> private static String name; //静态初始化语句,先初始化静态 ...

  5. 浅谈Java变量的初始化顺序详解

    规则1(无继承情况下):对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序依次是(静态变量.静态初始化块)>(变量.初始化块)>构造器证明代码: 复制代码 代码如下: p ...

  6. 【技术累积】【点】【java】【26】@Value默认值

    @Value 该注解可以把配置文件中的值赋给属性 @Value("${shit.config}") private String shit; 要在xml文件中设置扫描包+place ...

  7. C++变量未进行初始化时的默认值

      对于built-in类型,未初始化的变量的值是undefined value. 对于自定义类型,未初始化变量的值是类型默认构造函数指定的值.  

  8. Java中boolean型变量的默认值问题

    1.首先分析Java中的三种不同变量的区别,如下表所示   概念 默认值 其他 类变量 也叫静态变量,是类中独立于方法之外的变量 用static 修饰 有默认初始值,系统自动初始化. 如boolean ...

  9. Java成员变量默认值

    Java中明确规定:1.如果是引用型的,比如:String,还有类对象,他们的默认值都是:null:2.而如果是值类型:double,int,long,float,char等等,他们都是:0:还有一个 ...

随机推荐

  1. java接口应用

    1 package face_09; 2 /* 3 * 笔记本电脑使用. 4 * 为了扩展笔记本的功能,但日后出现什么功能设备不知道. 5 * 6 * 定义了一个规则,只要日后出现的设备都符合这个规则 ...

  2. 多线程-守护线程-setDaemon

    1 package multithread4; 2 /* 3 * 停止线程: 4 * 1,stop方法. 5 * 6 * 2,run方法结束. 7 * 8 * 怎么控制线程的任务结束呢? 9 * 任务 ...

  3. Github基于Web的编辑器

    在 GitHub 存储库中使用基于 Web 的编辑器来创建和提交代码更改. 关于 GitHub 基于 Web 的编辑器 基于 Web 的编辑器引入了全新的轻量级编辑体验,可完全在您的浏览器中运行.使用 ...

  4. Flink 如何通过2PC实现Exactly-once语义 (源码分析)

    Flink通过全局快照能保证内部处理的Exactly-once语义 但是端到端的Exactly-once还需要下游数据源配合,常见的通过幂等或者二阶段提交这两种方式保证 这里就来分析一下Sink二阶段 ...

  5. ☕【Java深层系列】「并发编程系列」深入分析和研究MappedByteBuffer的实现原理和开发指南

    前言介绍 在Java编程语言中,操作文件IO的时候,通常采用BufferedReader,BufferedInputStream等带缓冲的IO类处理大文件,不过java nio中引入了一种基于Mapp ...

  6. 使用 MVVM Toolkit Source Generators

    关于 MVVM Toolkit 最近 .NET Community Toolkit 发布了 8.0.0 preview1,它包含了从 Windows Community Toolkit 迁移过来的以下 ...

  7. django 验证和授权

    User模型 一. User模型简介 1. 是验证和授权框架的核心模型,完整路径为:django.contrib.auth.models.User 2. 模型中拥有的字段: 1. username:用 ...

  8. 微信小程序--给数组的每个对象添加动画(数据驱动)

    思路:用数据驱动事件,用数组的方式去对循环数组的每个对象进行操作 js代码: data:{ selectCategory: [{ name: '生产模式', content: [{ txt: '原厂' ...

  9. AGC005 部分简要题解

    E 首先注意到这个问题事实上非常复杂(两棵树上博弈),基础的转化无效,于是考虑简化情形. 手玩很多样例可以发现,似乎很容易出现无限循环的情况,进一步地,有观察: 若第一棵树上存在相邻点 \(u, v\ ...

  10. LinkedHashSet、Map、Map接口HashMap、Hashtable,TreeSet、TreeMap、如何选择使用集合实现类,Collections工具类

    一.Set接口实现类LinkedHashSet 实现继承图: 1.LinkedHashSet的全面说明 1) LinkedHashSet是 HashSet的子类 2) LinkedHashSet底层是 ...