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 设计者认为这样写会导致程序混乱

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/320967.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DoIP学习笔记系列:(八)车厂一般关于DoIP的相关测试分析

文章目录 1. 前言2. 基本项测试2.1 协议版本默认值2.2 车辆标识请求报文格式2.3 带EID的车辆标识请求报文格式2.4 带VIN的车辆标识请求报文格式2.5 否定响应码0x002.6 否定响应码0x012.7 否定响应码0x022.8 否定响应码0x042.9 路由激活应答码0x002.10 路由激活应答码0x012.11 路…

写了个在线 SQL 转换工具,支持 Oracle、Mysql、SQLServer 语句互转。

原本用户公司要迁移 oracle 到 mysql 上,数据库方言上有一定的区别,老的 SQL 又臭又长转起来也不太方便,尤其是日期类的完全无法适用,所以才写了这个工具:不同类型sql互转在线工具-开发者工具 可以用于不同数据库之间的…

CSS transition详解

文章目录 属性transition-propertytransition-durationtransition-timing-functiontransition-delaytransition 简写属性 方法Element:transitionrun 事件Element:transitionstart 事件Element:transitionend 事件Element:transit…

【AI】DETR模型可视化操作

Detr作为目标检测的算法,不同于之前算法的就是注意力机制,注意力机制能够直观看出来模型对图像关注的点,这个直观到底怎么直观呢,我们只听别人说肯定是不行的,上手测试才是最好的方式,像论文中插图那样的使…

静态网页设计——校园官网(HTML+CSS+JavaScript)

前言 声明:该文章只是做技术分享,若侵权请联系我删除。!! 使用技术:HTMLCSSJS 主要内容:对学校官网的结构进行模仿,对布局进行模仿。 主要内容 1、首页 首页以多个div对页面进行分割和布局…

用贪心算法编程求解任务安排问题

题目:用贪心算法编程求解以下任务安排问题 一个单位时间任务是恰好需要一个单位时间完成的任务。给定一个单位时间任务的有限集S。关于S的一个时间表用于描述S中单位时间任务的执行次序。时间表中第1个任务从时间0 开始执行直至时间1 结束,第2 个任务从时…

Python之安装和环境配置

python的下载 1.可以去python官网下载,https://www.python.org/ 2.下载完成后,安装即可。 python的检测 1.打开开始-运行-cmd(快捷键winR)。 如果是mac,打开使用工具-终端。 2.在终端里输入python,以下…

如何向嵌入式设备中添加tcpdump工具

说明:tcpdump是一个在网络设备调试中一个非常重要的工具,它并不像hexdump等工具集成在busybox里面,也不像其他的软件一样只需要依赖linux标准的库就可以实现,它需要pcap相关的库和加密的相关库。 本文主要是基于realtek 83系列的…

知虾分析——深入了解Shopee平台的知虾分析工具

Shopee是一家知名的电商平台,为了帮助卖家提高业务表现,他们提供了一款强大的数据分析工具——知虾分析。这个工具可以帮助卖家监控店铺的运营状况,优化销售策略,并提高整体的业务表现。本文将深入解析知虾分析的关键功能和用途&a…

第十四章 14.2案例:使用KVM命令集管理虚拟机

查看命令帮助 [rootLinux01 ~]# virsh -h—————————————————————————————————————————— 查看KVM的配置文件存放目录〈test01 , xml是虚拟机系统实例的配置文件) [rootLinux01 ~]# ls /etc/libvirt/qemu —————————————…

代码随想录27期|Pthon|Day31|贪心算法|理论基础|455.分发饼干|376. 摆动序列|53. 最大子序和

理论基础 首先,贪心算法基本靠“做题感觉”,所以没有规范的总结和做题技巧,只能说见到过之后还能想起来。 一般情况可以看成是对于一个大的问题的子问题的局部最优的求解,然后可以推导出全局的最优。 这个过程没有证明&#xf…

Python小细节之Gui图形化界面库的对比和选择(一分钟版)

引言 我想要把打包的python程序变得好看 交互起来变得简单 遂 图形化界面 然 相关的库有很多 所以 对比! 开整 8个图形化界面库 在Python中,有多种图形用户界面(GUI)库可以用来创建丰富的图形化应用程序。以下是一些主要的图…