变量的初始化及默认值

关于初始化
--------------------------------------------------------------------------------------------------------------------------------
1 成员变量初始化

1.1 自动初始化

boolean -----初始值----> false
char -----初始值----> (char)0
byte -----初始值----> 0
short -----初始值----> 0
int -----初始值----> 0
long -----初始值----> 0
float -----初始值----> 0.0
double -----初始值----> 0.0
对象 -----初始值----> null
数组内部元素的初始值按上面的要求初始化.

1.2 指定初始化

指定初始化就是在变量后跟一个值.如:int i = 12;

1.3 构造器初始化.

构造器初始化就是在构造器中为成员变量赋值.
如:
class A{
int i;
A(int n){
this.i = n;
}
}

2 局部变量初始化

局部变量不能自动初始化,不能构造器初始化,一定要直接初始化.否则是不可用的.

--------------------------------------------------------------------------------------------------------------------------------

成员变量的初始化: 自动初始化先于直接初始化, 直接初始化先于构造器初始化.

--------------------------------------------------------------------------------------------------------------------------------

成员变量初始化顺序:

在类的内部,变量定义的先后顺序决定了初始化的顺序.即使变量定义散布于方法定义之间,它们仍然会在任何
方法(包括构造器)被调用之前得到初始化.

--------------------------------------------------------------------------------------------------------------------------------

静态成员变量初始化:

静态成员变量初始化与非静态成员变量初始化是一样的.
只是静态成员变量只初始化一次.而且静态成员变量的初始化先于非静态成员变量.
静态成员变量的初始化前提是: 创建该类的对象时或引用该类的静态变量时或调用该类的静态方法时.

--------------------------------------------------------------------------------------------------------------------------------

测试代码
1.package test;
2.
3./**
4. * 关于成员变量初始化
5. *
6. * @author fhd001
7. */
8.public class ValueTest {
9.
10. int n = 2; // 指定初始化
11. boolean flag; // 自动初始化
12. static int n1;
13. static boolean flag2;
14.
15. static{
16. //静态初始化先于非静态初始化.
17. System.out.println("静态初始化: "+n1);
18. flag2 = true;
19. System.out.println("静态初始化: "+flag2);
20. }
21.
22. public ValueTest() {
23. }
24.
25. public ValueTest(int k, boolean f) {
26. // 指定初始化先于构造器初始化
27. System.out.println(n);
28. // 自动初始化先于构造器初始化.
29. System.out.println(flag);
30. this.n = k;
31. this.flag = f;
32. System.out.println(n);
33. System.out.println(flag);
34. // 自动初始化先于指定初始化,无法测试.略.
35. }
36.
37. public static void main(String[] args) {
38.
39. ValueTest t = new ValueTest(38, true);
40. }
41.}
package test;

/**
* 关于成员变量初始化
*
* @author fhd001
*/
public class ValueTest {

int n = 2; // 指定初始化
boolean flag; // 自动初始化
static int n1;
static boolean flag2;

static{
//静态初始化先于非静态初始化.
System.out.println("静态初始化: "+n1);
flag2 = true;
System.out.println("静态初始化: "+flag2);
}

public ValueTest() {
}

public ValueTest(int k, boolean f) {
// 指定初始化先于构造器初始化
System.out.println(n);
// 自动初始化先于构造器初始化.
System.out.println(flag);
this.n = k;
this.flag = f;
System.out.println(n);
System.out.println(flag);
// 自动初始化先于指定初始化,无法测试.略.
}

public static void main(String[] args) {

ValueTest t = new ValueTest(38, true);
}
}


结果代码
1.静态初始化: 0
2.静态初始化: true
3.2
4.false
5.38
6.true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值