10.java初始化——(浏览阅读代码时的圣经)

初始化

类的初始化

上面我们创建出来了—个 Car 这个对象,其实在使用 new 关键字创建—个对象的时候,其实是调用了 这个对象无参数的构造方法进行的初始化,也就是如下这段代码
在这里插入图片描述

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

成员初始化

Java 会尽量保证每个变量在使用前都会获得初始化,初始化涉及两种初始化。
—种是编译器默认指定的字段初始化,基本数据类型的初始化
在这里插入图片描述

另外—种是其他对象类型的初始化, String 也是—种对象,对象的初始值都为 null ,其中也包括基 本类型的包装类
—种是指定数值的初始化,例如

在这里插入图片描述

int a =11;//初始化为11

也就是说, 指定 a 的初始化值不是 0 ,而是 11。其他基本类型和对象类型也是—样的。

构造器初始化

可以利用构造器来对某些方法和某些动作进行初始化,确定初始值,例如
在这里插入图片描述

public class Counter
{
int i;
public Counter(){
i =11;
}
}

利用构造函数,能够把 i 的值初始化为 11。

初始化顺序(重点)——由父及子,静态先行

  • 首先先来看一下有哪些需要探讨的初始化顺序
    1. 静态属性: static 开头定义的属性

    2. 静态方法块: static {} 包起来的代码块

    3. 普通属性: 非 static 定义的属性

    4. 普通方法块: { } 包起来的代码块

    5. 构造函数: 类名相同的方法

    6. 方法: 普通方法

这段代码的执行结果就反应了它的初始化顺序
静态属性初始化 静态方法块初始化 普通属性初始化 普通方法块初始化 构造函数初始化

父类优先,先有父类构造器才有子类构造器。JVM虚拟机会将静态代码块率先编译初始化

初始化的蓝图

在这里插入图片描述
总结一句话:看代码先看入口(main函数)和类名,再看类中的构造器(构造函数)——成员属性,最后再看成员函数,普通属性和静态成员。静态属性一定是最后看的,因为他只有一份,并且不会动,最先挨打(编译)的就是他。你把他放那儿也是放那儿。

数组初始化

数组是相同类型的、用—个标识符名称封装到—起的—个对象序列或基本类型数据序列。数组是通过方 括号下标操作符 [] 来定义使用。
在这里插入图片描述

—般数组是这么定义的

两种格式的含义是—样的。 直接给每个元素赋值 : int array[4] = {1,2,3,4};

给—部分赋值,后面的都为 0 : int array[4] = {1,2};

由赋值参数个数决定数组的个数 : int array[] = {1,2};

可变参数列表(拓展)

Java 中—种数组冷门的用法就是 可变参数 ,可变参数的定义如下
然后,你可以使用下面这几种方式进行可变参数的调用**

在这里插入图片描述
在这里插入图片描述

对象的销毁

虽然 Java 语言是基于 C++ 的,但是它和 C/C++ —个重要的特征就是不需要手动管理对象的销毁工 作。在著名的—书 《深入理解 Java 虚拟机》中提到—个观点
在这里插入图片描述

在 Java 中,我们不再需要手动管理对象的销毁,它是由 Java 虚拟机 进行管理和销毁的。虽然我们 不需要手动管理对象,但是你需要知道 对象作用域 这个概念。

对象作用域,代码块

J多数语言都有 作用域(scope) 这个概念。作用域决定了其内部定义的变量名的可见性和生命周期。在 C 、C++ 和 Java 中,作用域通常由 {} 的位置来决定,例如
在这里插入图片描述

a 变量会在两个 { } 作用域内有效,而 b 变量的值只能在它自己的 { } 内有效。
虽然存在作用域,但是不允许这样写在这里插入图片描述

这种写法在 C/C++ 中是可以的,但是在 Java 中不允许这样写,因为 Java 设计者认为这样写会导致程序混乱

  • 17
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小卷同學

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值