对于类的成员变量


不管程序有没有显示的初始化,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. Scala 中下划线的用法

    1.存在性类型:Existential types def foo(l: List[Option[_]]) = ... 2.高阶类型参数:Higher kinded type parametersca ...

  2. python 爬虫爬取历年双色球开奖信息

    目前写的这些爬虫都是些静态网页,对于一些高级网页(像经过JS渲染过的页面),目前技术并不能解决,自己也是在慢慢学习过程中,如有错误,欢迎指正: 对面前端知识本人并不懂,过程中如果涉及到前端知识,也是百 ...

  3. Pytest单元测试框架生成HTML测试报告及优化

    一.安装插件 要生成html类型的报告,需要使用pytest-html插件,可以在IDE中安装,也可以在命令行中安装.插件安装 的位置涉及到不同项目的使用,这里不再详述,想了解的可自行查询. IDE中 ...

  4. Java多线程专题6: Queue和List

    合集目录 Java多线程专题6: Queue和List CopyOnWriteArrayList 如何通过写时拷贝实现并发安全的 List? CopyOnWrite(COW), 是计算机程序设计领域中 ...

  5. Homework_1

    寒假第一份作业 一.博客园部分 1.个人博客园链接 Click here 2.markdown界面截图 我用typora编辑 所以贴上typora界面的截图 二.Github部分 1.个人Github ...

  6. Javascript之递归求裴波那契数

    一.遍历的方式性能更加,递归的方式代码利于阅读.简短,性能略差 二.裴波那契数定义: · 位置0的裴波那契数为0 · 1和2的裴波那契数为1 · n(n > 2)裴波那契数为 (n-1)的裴波那 ...

  7. plsql 带参数的游标

    -- 带参数的游标 -- cursor c(no emp.deptno%type) is select * from emp where deptno=no; 参数的起名 不要和表中的列名相同! -- ...

  8. Redis学习笔记(三)redis 的键管理

    Redis 的键管理 一.Redis 数据库管理 Redis 是一个键值对(key-value pair)的数据库服务器,其数据保存在 src/server.h/redisDb 中(网上很多帖子说在 ...

  9. Entity Framework 在OrderBy排序中使用字符串

    public static class LinqExtensions { private static PropertyInfo GetPropertyInfo(Type objType, strin ...

  10. Yarn命令列表

    常用命令: 创建项目:yarn init 安装依赖包:yarn == yarn install 添加依赖包:yarn add Yarn命令列表 命令 操作 参数 标签 yarn add 添加依赖包 包 ...