第5章(3) 初始化

简介:

所有成员都要初始化:

1. Java尽力保证所有变量都能在使用前得到正确的初始化。若被定义成相对于一个方法的“局部”变量,这一保证就通过编译期的出错提示表现出来。

2. 基本类型的情况这是不同的,一个类的所有基本类型的数据成员都会保证获得一个初始值。即使作为局部变量,也是如此。

3. 类中定义一个对象的引用时,如果不将其初始化,则自动初始化为null

 

指定初始化:

对某个变量赋初值,可以直接在定义的地方为其赋值,这和C++很不一样。

 

构造器初始化

可以利用构造器来进行初始化,但构造器被调用前,自动初始化已经进行了。自动初始化的顺序与变量定义的顺序相同。

比如下面的代码:

class Counter {

int i;

Counter() { i = 7; }

// . . .

i先自动初始化为0,然后变为7

静态变量的初始化在第一次创建一个对象或是第一次访问静态数据时进行。

显式的静态初始化:

可以将多个静态初始化语句组织成一个特殊的静态句子。

像下面的例子:

class Spoon {

  static int i;

  static {

    i = 47;

  }

  // . . .

非静态实例初始化:

与显式的静态初始化的语句一样,只不过少了static关键字。

  Mug c1;

  Mug c2;

  {

    c1 = new Mug(1);

    c2 = new Mug(2);

  }

最后也是最重要的,初始化的顺序:

父静态->子静态->父非静->父构造方法->子非静->子构造方法

 

数组的初始化:

下面的代码可以看出与C++的不同之处。

  int[] a1 = { 1, 2, 3, 4, 5 };

  int[] a2;

a2 = a1;

Java中可以将一个数组赋值给另一个数组,其实质只是复制了一个引用

Java中,一旦下标越界,就会出现运行时错误(异常),而不会错误的访问其他的内存。

对于基本类型int[] a=new int[20];完成了对数组的初始化,所有元素被置为默认值0

而对于非基本类型来说,实际只是创建了一个引用数组,还需要给每个引用创建新对象并赋值才算初始化完成。

如果忘记了创建对象,而引用了数组中的空引用,就会出现运行时异常。

也可以使用花括号括起来的列表来初始化对象数组,有下面两种形式:

 Integer[] a = {

      new Integer(1),

      new Integer(2),

      new Integer(3),

};

 Integer[] b = new Integer[] {

      new Integer(1),

      new Integer(2),

      new Integer(3),

};

初始化列表的最后一个逗号是可选的,第二种形式明显更加灵活。

目录
相关文章
|
4天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
3天前
|
云安全 人工智能 自然语言处理
阿里云x硅基流动:AI安全护栏助力构建可信模型生态
阿里云AI安全护栏:大模型的“智能过滤系统”。
|
3天前
|
人工智能 自然语言处理 自动驾驶
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
|
4天前
|
Linux 虚拟化 iOS开发
VMware Workstation Pro 25H2 for Windows & Linux - 领先的免费桌面虚拟化软件
VMware Workstation Pro 25H2 for Windows & Linux - 领先的免费桌面虚拟化软件
942 4
VMware Workstation Pro 25H2 for Windows & Linux - 领先的免费桌面虚拟化软件
|
6天前
|
存储 机器学习/深度学习 人工智能
大模型微调技术:LoRA原理与实践
本文深入解析大语言模型微调中的关键技术——低秩自适应(LoRA)。通过分析全参数微调的计算瓶颈,详细阐述LoRA的数学原理、实现机制和优势特点。文章包含完整的PyTorch实现代码、性能对比实验以及实际应用场景,为开发者提供高效微调大模型的实践指南。
603 2
|
5天前
|
JavaScript API 开发工具
如何在原生App中调用Uniapp的原生功能?
如何在原生App中调用Uniapp的原生功能?
300 139
|
4天前
|
编解码 自然语言处理 文字识别
Qwen3-VL再添丁!4B/8B Dense模型开源,更轻量,仍强大
凌晨,Qwen3-VL系列再添新成员——Dense架构的Qwen3-VL-8B、Qwen3-VL-4B 模型,本地部署友好,并完整保留了Qwen3-VL的全部表现,评测指标表现优秀。
353 7
Qwen3-VL再添丁!4B/8B Dense模型开源,更轻量,仍强大