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

网友投稿 252 2022-12-16

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

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

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

初始值(默认值)

参考:官方文档

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

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

数据类型

初始值

byte

0

short

0

int

0

long

0L

char

‘u0000'

float

0.0f

double

0

boolean

false

所有引用类型

null

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

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

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: 可能尚未初始化变量SMQAsa”

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

实例变量(非静态字段)

系统会初始化默认值

字段未被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 inhttp://t[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}。

}

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:解释:int型默认值为0的问题
下一篇:你知道Spring中为何不建议使用字段注入吗
相关文章

 发表评论

暂时没有评论,来抢沙发吧~