JavaSE基础知识(十二)--Java的成员初始化

本文详细介绍了Java中成员初始化的各种方式,包括局部变量的强制初始化、类成员变量的默认和指定初始化、构造器初始化、初始化顺序、静态数据初始化以及非静态实例的初始化。Java确保变量在使用前得到正确初始化,避免潜在错误。文章通过代码示例展示了各种初始化方法及其执行顺序,帮助读者理解Java成员初始化的机制。
摘要由CSDN通过智能技术生成

Java SE 是什么,包括哪些内容(十二)?

本文内容参考自Java8标准
本篇博文描述的都是有关Java成员初始化的问题
Java尽力保证:所有的变量在初始化前,都能得到正确的初始化。

1、Java局部变量初始化(强制初始化)

局部变量就是存在于Java代码块以及方法中的变量。
Java通过编译期错误的形式来保证局部变量的正确初始化。
代码示例:
局部变量i未初始化就使用,直接报错!
i是局部变量,为初始化就直接进行自增操作,Java编译器直接报错。
初始化后能通过编译:
初始化后能通过编译!
本来编译器可以给局部变量默认赋一个初始值,但是未初始化局部变量更有可能是程序员的一个疏忽,如果直接赋默认值,可能会掩盖这种错误,因此强制程序员提供一个初始值,往往能够找出程序中的缺陷。

2、类成员变量初始化(默认初始化)

如果是类成员变量,那么情况就会变得不同,正如前面博文中提到的一样:类成员,Java能确保它们在使用前都会有初始值,不要求程序员强制赋值,如果程序员忘记初始化(赋值)操作,Java会给类成员赋一个默认值。
⑴、每种基本类型都会有自己对应的默认初始值。
代码示例:每种基本类型的默认初始值分别是什么:

// 每种基本类型的默认初始值分别是什么。
   //类名称InitialValues
   public class InitialValues {
   
    //boolean类型类变量。
	boolean t;
	//char类型类变量。
	char c;
	//byte类型类变量。
	byte b;
	//short类型类变量。
	short s;
	//int类型类变量。
	int i;
	//long类型类变量。
	long l;
	//float类型类变量。
	float f;
	//double类型类变量。
	double d;
	//方法printInitialValues()
	void printInitialValues() {
   
	    //打印字符串"Data type       Initial value"(中间的空白是有效的)
		System.out.println("Data type       Initial value");
		//打印boolean类型的默认初始值(中间的空白是有效的)
		System.out.println("boolean            "+t);
		//打印char类型的默认初始值(中间的空白是有效的)
		System.out.println("char               ["+c+"]");
		//打印byte类型的默认初始值(中间的空白是有效的)
		System.out.println("byte               "+b);
		//打印short类型的默认初始值(中间的空白是有效的)
		System.out.println("short              "+s);
		//打印int类型的默认初始值(中间的空白是有效的)
		System.out.println("int                "+i);
		//打印long 类型的默认初始值(中间的空白是有效的)
		System.out.println("long               "+l);
		//打印float类型的默认初始值(中间的空白是有效的)
		System.out.println("float              "+f);
		//打印double类型的默认初始值(中间的空白是有效的)
		System.out.println("double             "+d);
	}
	//程序的执行入口main方法
	public static void main(String[] args) {
   
	    //创建对象
		InitialValues iv = new InitialValues();
		//调用方法
		iv.printInitialValues();
	}
}

以上代码的执行结果:
每种基本类型对应的初始值!
可见,尽管没有给这些数据成员进行初始化,但是他们确实有了初始值。
有一点需要强调一下,char类型的默认初始值是0,所以结果是空白。
⑵、引用类型的默认初始值是:“null”。
代码示例:引用类型的默认初始值分别是什么:

// 引用类型的默认初始值分别是什么
    //类名称InitialValues
    public class InitialValues {
   
    //引用类型类变量。
	InitialValues reference;
	//方法printInitialValues()
	void printInitialValues() {
   
	    //打印引用类型的默认初始值(中间的空白是有效的)
		System.out.println("reference          "+reference);
	}
	//程序的执行入口main方法
	public static void main(String[] args) {
   
	    //创建对象
		InitialValues iv = new InitialValues();
		//调用方法
		iv.printInitialValues();
	}
}

以上代码的执行结果:
引用类型的默认初始值是null!
在类里定义一个对象引用时,如果不将其初始化,此引用就会获得一个特殊值null。

3、类成员变量初始化(指定初始化)

如果想为某个变量赋初始值,有一种很直接的办法,就是在定义变量的时候直接赋值(C++中是不允许这样做的)。
代码示例:

// 每种基本类型的默认初始值分别是什么。
  //类名称InitialValues
  public class InitialValues {
   
   //boolean类型类变量。
   boolean t = true;
   //char类型类变量。
   char c = 'x';
   //byte类型类变量。
   byte b = 47;
   //short类型类变量,初始化的形式为八进制,还能以二进制和十六进制进行初始化。
   short s = 0xff;
   //int类型类变量。
   int i = 999;
   //long类型类变量。
   long l = 1;
   //float类型类变量。
   float f = 3.14f;
   //double类型类变量。
   double d = 3.14159;
}

也可以用同样的方法初始化引用类型的对象,如果Depth是一个类,那么可以像下面这样创建一个对象并初始化它:

// 创建引用类型的对象
     //类Depth
     class Depth{
   
      //类内容省略
     }
     //类Measurement
     public class Measurement{
   
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值