欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于初始化

程序员文章站 2022-04-19 18:23:23
...

一、类的初始化

使用new关键字创建一个对象的时候,其实是调用了这个无参对象的构造方法进行的初始化,例如:

1 package day03;
2 
3  
4 
5 class Demo01 {
6 
7     public Demo01(){}
8 
9 }

这个无参的构造函数可以隐藏,由JVM自动添加。因为构造函数能确保类的初始化。

二、成员初始化

Java会尽力保证每个变量在使用前都会获得初始化,初始化的分类如下:

1、编译器默认指定的字段初始化,基本数据类型的初始化

类型

初始值

Boolean

False

Char

/u0000

Byte

(byte)0

Short

(short)0

Int

0

Long

0L

Float

0.0F

Double

0.0D

2、其他对象类型的初始化,String也是一种对象,对象的初始化值都是null,也包括基本类型的包装类。

3、指定数值的初始化,例如:int a = 11,指定a的初始化值不是0而是11。

三、构造器初始化

利用构造器可以都某些方法和动作进行初始化,确定初始值,例如:

 1 public class Demo02 {
 2 
 3     int i;
 4 
 5     public Demo02(){
 6 
 7         i = 100;
 8 
 9     }
10 
11  
12 
13     public static void main(String[] args) {
14 
15         Demo02 d = new Demo02();
16 
17         System.out.println(d.i);
18 
19     }
20 
21 }

结果:

 关于初始化

四、初始化顺序

静态属性—》静态方法块—》普通属性—》普通方法块—》构造函数—>方法

  • 静态属性:static开头定义的属性
  • 静态方法块:static{}包起来的代码块
  • 普通属性:非static定义的属性
  • 普通方法块:{}包起来的代码块
  • 构造函数:类名相同的方法
  • 方法:普通方法
1 package day03;
 2 
 3  
 4 
 5 public class Demo03 {
 6 
 7     //静态属性
 8 
 9     private static String staticField = getStaticField();
10 
11  
12 
13     //静态方法块
14 
15     static {
16 
17         System.out.println(staticField);
18 
19         System.out.println("静态方法块初始化");
20 
21     }
22 
23  
24 
25     //普通属性
26 
27     private String field = getFeild();
28 
29  
30 
31     //普通方法块
32 
33     {
34 
35         System.out.println(field);
36 
37     }
38 
39  
40 
41     //构造函数
42 
43     public Demo03() {
44 
45         System.out.println("构造函数初始化");
46 
47     }
48 
49  
50 
51     public static String getStaticField() {
52 
53         String staticField = "static Filed initial";
54 
55         return staticField;
56 
57     }
58 
59  
60 
61     public static String getFeild() {
62 
63         String filed = "Field initial";
64 
65         return filed;
66 
67     }
68 
69  
70 
71     //主函数
72 
73     public static void main(String[] args) {
74 
75         new Demo03();
76 
77     }
78 
79 }

结果:

关于初始化

可以看到这段代码的执行顺序是:静态属性初始化—》静态方法初始化—》普通属性初始化—》普通方法初始化—》构造函数初始化

五、数值初始化

数组是相同类型的、用同一个标识符封装到一起的一个对象或基本数据序列。数据通过[]定义使用。例如:

int [] arr1;或者int arr1[];这两种格式含义是一样的。

  • 直接给每个元素赋值:int array[3] = {1,2,3];
  • 给一部分赋值,后面的为默认初始化值0。int array{4] = {1,3};
  • 由赋值参数个数决定数组的个数:int array[] = {2,34,1};

六、对象的销毁

虽然Java语言是基于C++的,但是它和C/C++有一个重要的特征就是不需要手动管理对象的销毁工作。Java的对象销毁工作是由Java虚拟机进行管理和销毁的。

对象作用域:这个决定了其内部定义的变量名的可见性和生命周期,通常是由{}的位置决定。例如:

 1 {
 2 
 3   int a = 19;
 4 
 5   {
 6 
 7     int b =20;
 8 
 9   }
10 
11 }

a会在两个{}作用域有效,b变量只在自己的作用域范围{}有效

相关标签: Java