zoukankan      html  css  js  c++  java
  • 初始化

    一、类的初始化

    使用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];
    • 给一部分赋值,后面的为默认初始化值0int 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变量只在自己的作用域范围{}有效

    欢迎批评指正,提出问题,谢谢!
  • 相关阅读:
    Manjaro19.0.2 electron-酸酸乳 无法添加订阅地址
    cnblogs美化技巧
    manjaro19.0.2+typora+PicGo
    剑指offer 面试题7.重建二叉树
    剑指offer 面试题6.从尾到头打印链表
    add sudo user
    tensorflow 禁用 gpu
    kill screen detached session
    git 修改远程仓库链接
    grub 分辨率修改
  • 原文地址:https://www.cnblogs.com/xxeleanor/p/14348475.html
Copyright © 2011-2022 走看看