Java未赋值变量的初始值解析(默认值)

目录
  • Java未赋值变量的初始值(默认值)
    • 初始值(默认值)
    • 实例变量(非静态字段)
    • 类变量(静态字段)
    • 本地变量
    • 参数
  • 解决java未赋值变量的默认值问题
    • 如下所示

Java未赋值变量的初始值(默认值)

初始值(默认值)

参考:官方文档

Java程序中,任何变量必须初始化后才能使用。

以下为不同数据类型的默认值。

数据类型 初始值
byte 0
short 0
int 0
long 0L
char ‘u0000'
float 0.0f
double 0
boolean false
所有引用类型 null

但并不是所有未初始化的变量都会赋默认值。

对应的面试编程题:以下代码会打印什么?

public static void main(String[] args) {
        int[] arr = new int[10];
        System.out.println(arr[0]);
 }
//打印: 0
public static void main(String[] args) {
        int a;
        System.out.println(a);
 }
//编译失败,提示“Error:(16, 28) java: 可能尚未初始化变量a”

下面根据不同的变量类型依次说明:

实例变量(非静态字段)

系统会初始化默认值

字段未被static修饰就是实例变量。在创建对象时,该变量会在分配内存阶段被赋予默认值,在执行new指令之后,被赋予程序定义的初始值。

public class Cat {
    // 实例变量
    int age;
}

类变量(静态字段)

系统会初始化默认值

字段被static修饰就是类变量。在类加载的准备阶段,该变量会被赋予默认值,在类加载的初始化阶段,会被赋予程序定义的初始值。

public class Cat {
    // 类变量
    static int age;
}

本地变量

系统不会初始化默认值

方法块中定义的变量为本地变量。该变量必须在代码中显示赋值,否则会提示编译错误。

    public static void main(String[] args) {
        // 本地变量
        int a = 0;
    }

参数

无需初始化默认值

参数很好理解,如下所示,args就是参数。参数又分实参和形参。参数的值在调用该方法时传入。

 // args 就是参数
    public static void main(String[] args) {

    }

解决java未赋值变量的默认值问题

如下所示

package demo;
import java.util.Arrays;
public class demo {
    /*类字段变量可以不赋初值不报错,其他变量一律要赋初值
     * 不管程序有没有显示的初始化,Java 虚拟机都会先自动给它初始化为默认值。
     * 1、整数类型(byte、short、int、long)的基本类型变量的默认值为0。
     * 2、单精度浮点型(float)的基本类型变量的默认值为0.0f。
     * 3、双精度浮点型(double)的基本类型变量的默认值为0.0d。
     * 4、字符型(char)的基本类型变量的默认为 “/u0000”。
     * 5、布尔性的基本类型变量的默认值为 false。
     * 6、引用类型的变量是默认值为 null,如int[] a;。
     */
    public int  i1;
    public static int i2;
    public int[] a=new int[5];//见main()方法中的int[] b=new int[5];
    public static void main(String[] args) {
        /* 方法中的局部变量,ava 虚拟机不会自动的为它初始化为默认值。
         * 因此对于局部变量,必须先经过显示的初始化,才能使用它。
         * 如果编译器确认一个局部变量在使用之前可能没有被初始化,编译器将报错。
         */
        //int i3;
        int[] b=new int[5];//数组变量实例化后,如果没有显式为每个元素赋值,Java 就会把该数组的所有元素初始化为其相应类型的默认值
        System.out.println(new demo().i1); //输出0
        System.out.println(i2);            //输出0
        //System.out.println(i3);          //会报错
        System.out.println(Arrays.toString(new demo().a));//此处为int型,默认输出{0,0,0,0,0}。
    }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java 注解默认值操作

    我就废话不多说了,大家还是直接看代码吧~ package com.zejian.annotationdemo; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * Created by wuzejian on 2017

  • java中String类型变量的赋值问题介绍

    运行下面这段代码,其结果是什么? package com.test; public class Example { String str = new String("good"); char[] ch = { 'a', 'b', 'c' }; public static void main(String[] args) { Example ex = new Example(); ex.change(ex.str, ex.ch); System.out.println(ex.str);

  • Java对象不使用时赋值null的意义详解

    先看代码 public class TestDemo1 { public static void main(String[] args) { if (true) { byte[] placeHolder = new byte[64 * 1024 * 1024]; System.out.println(placeHolder.length / 1024); } System.gc(); } } idea配置gc日志打印 运行上面的代码,载图gc日志 现在我们修改上面的测试代码,将placeHold

  • 详解JAVA 连等赋值问题

    一.描述 关于 Java 连等赋值,例如a=b=c;我们知道它是从右往左依次赋值的,其结果大致可以拆分为b=c;a=b;,但是当栈中没有持有变量的引用时,则会出现问题,例如: public class Node { int i; Node n; Node(int i) { this.i = i; } Node(Node n, int i) { this.i = i; this.n = n; } @Override public String toString() { return i + " &

  • Java未赋值变量的初始值解析(默认值)

    目录 Java未赋值变量的初始值(默认值) 初始值(默认值) 实例变量(非静态字段) 类变量(静态字段) 本地变量 参数 解决java未赋值变量的默认值问题 如下所示 Java未赋值变量的初始值(默认值) 初始值(默认值) 参考:官方文档 Java程序中,任何变量必须初始化后才能使用. 以下为不同数据类型的默认值. 数据类型 初始值 byte 0 short 0 int 0 long 0L char 'u0000' float 0.0f double 0 boolean false 所有引用类型

  • 解决mybatis查询结果为null时,值被默认值替换问题

    目录 查询结果为null时,值被默认值替换 问题原因 解决办法 mybatis查询结果处理 处理核心流程 返回类型处理ResultHandler 字段类型处理TypeHandler 查询结果为null时,值被默认值替换 问题:pojo种设置了一个默认值,当此字段查询结果为空时,字段值变成了默认值0,经过排查发现,mybatis在赋值时并没有调用set方法赋值,而是直接调用get方法,取了默认值 问题原因 原因是因为mybatis在给map赋值时,如果返回值不是基本数据类型,且返回值为null,就

  • sql2008设置subcategory报表参数可用值和默认值步骤分享

    1.  在"报表数据"窗格的"参数"文件夹中,右键单击 Subcategory,然后单击"参数属性". 2.  单击"可用值". 3.  单击"从查询中获取值". 4.  在"数据集"下拉列表中,单击 SubcategoryValues. 5.  在"值"字段中,单击 Subcategory. 6.  在"标签"字段中,单击 Subcategory

  • 聊聊java变量的初始化之后的默认值

    变量初始化后的默认值 对于类的成员变量 不管程序有没有显示的初始化,Java 虚拟机都会先自动给它初始化为默认值. 1.整数类型(byte.short.int.long)的基本类型变量的默认值为0. 2.单精度浮点型(float)的基本类型变量的默认值为0.0f. 3.双精度浮点型(double)的基本类型变量的默认值为0.0d. 4.字符型(char)的基本类型变量的默认为 "/u0000". 5.布尔性的基本类型变量的默认值为 false. 6.引用类型的变量是默认值为 null.

  • java 如何给对象中的包装类设置默认值

    目录 给对象中的包装类设置默认值 处理方法如下 java属性的默认值 给对象中的包装类设置默认值 处理方法如下 主要适用于,对象中使用了包装类,但是不能给null需要有默认值的情况 /** * 处理对象中包装类,因为快捷签没有用包装类 * * @param object 对象 */ public static void handleParamDefault(Object object) { Class<?> aClass = object.getClass(); Field[] declare

  • 点击提交按钮后DropDownList的值变为默认值实现分析

    在点击提交按钮后,页面上所有的绑定到数据库的控件值都恢复到默认值 原因是要将绑定函数loadData(),写在 if(!IsPostBack) { 你的绑定函数: } 否则,页面会重新加载,所有控件的值变为初始值. IsPostBack是Page类有一个bool类型的属性,用来判断针对当前页是正在为响应客户端回发而加载还是正在被首次加载和访问. 当IsPostBack=true时表示为响应客户端回发而加载. 当IsPostBack=false时表示正在被首次加载和访问. 也就是说只有当IsPos

  • Java tomcat环境变量及idea配置解析

    一.下载Tomcat 1.进入官网http://tomcat.apache.org/,选择download,下载所需Tomcat版本. 二,我们解压后到指定目录,然后配置环境变量 1>CATALINA_BASE和CATALINA_HOME,值都是tomact地址目录 2>CLASSPATH,在值后面添加;%CATALINA_HOME%\lib\servlet-api.jar;(PS::这个符号是有的) 3>添加Path值,%CATALINA_HOME%\bin和%CATALINA_HOM

  • 解决goxorm无法更新值为默认值的问题

    今天遇到个问题,goxorm无法更新某一个字段为0. xxTable := &models.XXTable{Visible: visible} affected, err := eng.Where("id=?", id).Update(xxTable) 这种情况下,因为go的结构初始值都是各自的0值,所以xorm无法识别要更新结构体中的哪个col,如下方法写可以正常解决. xxTable := &models.XXTable{Visible: visible} affe

  • Java八种基本变量作为类的成员变量的默认值操作

    目录 Java类成员变量的默认值 下面我们看看我们的八种数据类型的默认值是什么样的 总结 boolean型变量的默认值问题 1.首先分析Java中的三种不同变量的区别 2.然后判断boolean型变量的类型 Java类成员变量的默认值 基本数据类型作为类的成员变量时可以不赋予初值,在方法中输出也不会报错. 下面我们看看我们的八种数据类型的默认值是什么样的 上代码 package objectandclass; import java.awt.SecondaryLoop; public class

随机推荐