Thinking in Java第三版读书笔记-第四章:初始化与清理

新手避坑:RT-Thread-Studio外设驱动配置最容易忽略的3个地方(附WDT实例) 本文针对RT-Thread-Studio新手在配置外设驱动时常见的编译报错问题,以看门狗(WDT)为例,详细解析了最易忽略的三个关键配置环节:RT-Thread-Studio的图形化Setting开关、Kconfig中的依赖关系以及SConscript的编译规则。掌握这三层配置模型,能有效避免头文件包含正确却依然编译失败的问题,确保驱动代码被正确加入构建。 阅读详情

第四章:
1、primitive类型的重载慎用。
   (chap4、P7)

2、返回值不能重载,因为存在虽然方法有返回值,但程序中并不关注返回值的情况,如:
   定义:int f(){}; String f(){};
   调用 f(),此时虚拟机就不知道该调用哪个f了。
   (chap4、P11)

3、类中的普通方法不能调用构造函数,构造函数能相互调用,但只能用this关键字。
   (chap4、P13)

4、一般来说,类中无需使用finalize(),因为虚拟机会自动进行垃圾清理,但有种特殊情况,声明了一个对象,但并没有refrence,比如:
   class Aclass(){....};
   ...
   new Aclass();
   因为没有refrence,那么虚拟机会认为它已经没有用了,就可以回收了,但此时如果你不希望它回收,那么可以在finalize函数中实现,具体可参考书本的例子。
   (chap4、P16)

5、内部变量在使用之前必须初始化;所谓“使用”是指出现在表达式右边、方法的参数等,而不是表达式的左边,例如:
   String s = "i love java";
   int i;
   i = s.length();
   是正确的;而
   int i;
   i++;
   是错误的。因为i++相对于i = i + 1
   但是,如果不是内部变量而是类的的成员数据,则不需要初始化,因为编译器不知道会在哪个方法中被初始化。对于primitive的成员数据,Java会自动赋予初始值,如:
   boolean = false
   char  = (char)0  ----空格
   byte  = 0
   int  = 0
   long  = 0
   float = 0
   double = 0
   对于对象的成员数据,没有初始化之前等于null,所以,primitive的成员数据没有初始化之前被使用并不会发生错误,但对象数据在运行时就会发生exception。
   有一种特殊情况,如:
   int [] a = new int[4];
   此时,看上去只初始化了数组的大小而没有初始化数组的成员,但在java中,这也是没有问题的,java给每个数组成员自动进行了初始化。
   (chap4,P22)

6、类实例化的时候总是先执行成员数据的定义(如果在定义的时候进行初始化的话此时就初始化了),然后再执行构造函数,而不管在代码顺序上成员数据在前还是构造函数在前。
   (chap4,P26)

7、对于static类型的成员变量,static类型的成员变量总是比其他成员变量先初始化,static类型的成员变量只初始化一次,只有被用到的static成员变量才会被初始化。
   此处,“被用到”在我来理解,是从main函数开始检查的,如果main函数中定义了静态变量或者被main函数调用的其他类中定义了静态变量,这些静态变量就“被用到”了。
   (chap4,P27)

8、primitive类型的数组可以用new来初始化,如int[] a = new int[]{1,2,3,4},也可以直接用形如int[] a = {1,2,3,4}的方式来初始化,但如果不是primitive的变量就只能用new来初始化。
   (chap4,P34)

9、数组初始化的时候,int[] a = {1,2,3,4,}; 4后面有逗号,对不对?答:对,最后的逗号有与没有都可以。
   (chap4,P35)

XGBoost调参新姿势:Bayesian优化实战指南(附完整代码) 本文详细介绍了如何使用Bayesian优化方法高效调优XGBoost模型参数。通过解析Bayesian优化核心原理和XGBoost关键参数,提供完整的实战代码示例,帮助读者掌握这一智能调参技术,显著提升模型性能。文章特别适合机器学习工程师和数据科学家阅读。 阅读详情

相关推荐

ABAP代码使用OAuth2.0 Client Credential调用外部API

ABAP-OAuth2.0-调用外部API

m0_74015269的博客 1920

Thinking in Java读书笔记---初始化清理

本文深入解析Java编程中的初始化清理机制,阐述了构造器的本质特性、重载机制和执行流程,对比分析了不同变量初始化方式的特点。

顾得泉的博客 1336

如何使用tinyalas接口从usb录音的同时从扬声器播放

3、 以上步骤确认完后,就可以修改tinyhostless.c程序,tinyhostless的本质就是边pcm_read(),边pcm_write();但原本tinyhostless只支持对同一声卡进行操作,所有需要修改其代码,改成录音和播放可支持不同声卡,如果是模拟声卡,有回环测试,可以实现边录边播放,但涉及USB声卡时,就没有现场的类似功能,有时候客户因为硬件特殊性,会有从USB录音的同时从扬声器播放出来的需求,本文简要描述如何使用tinyalsa接口实现该需求;

sdrgtywretyeruet的专栏 953

Thinking In Java——初始化清理读书笔记及摘录

使用构造器确保初始化 从概念上讲,“初始化“创建”是彼此独立的。在Java中“初始化”和“创建”是绑定在一起的; 构造器是一种特殊类型的方法,因为它没有返回值。这返回值为空(void)明显不同。对于空返回值,尽管方法本身不会自动返回什么,但是仍可选择让它返回别的东西。构造器则不会返回任何东西,虽然new表达式确实是返回对新建对象的引用。 清理:终结处理和垃圾回收 在c++中,对象一定会...

qq_40462579的博客 314

Thinking in Java读书笔记---一切都是对象

文章系统阐述了Java面向对象编程的核心概念,涵盖对象引用的本质区别、创建存储机制、生命周期管理、类成员定义等关键知识点。

顾得泉的博客 995

Thinking in Java读书笔记5

第五章 初始化清理 目录 第五章 初始化清理 5.1 用构造器确保初始化 5.2 方法重载 5.2.1 区分重载方法 5.2.2 涉及基本类型的重载 5.2.3 以返回值区分重载方法 5.3 默认构造器 5.4 this关键字 5.4.1 在构造器中调用构造器 5.4.2 static的含义 5.5 清理:终结处理和垃圾回收 5.5.1 finalize()的用途何在...

翔翔的博客 677

Thinking in java 第5章 初始化清理 笔记+习题

Thinking in java 第五章 初始化清理 5.0 序章 1. C中容易忽略初始化清理,导致内存泄漏;C++中引入了构造器的概念;Java中也采用了构造器,并额外提供了“垃圾回收器”。 5.2 方法重载 1. 如果传入数据类型小于方法中声明的形式参数类型,实际数据类型就会被提升。char类型若没有恰好接受char参数的方法,就会被直接提升为int类型。 2. 如果传入数据类型大于方法中声明的形式参数类型,就必须采用强制转换,不然编译器会报错。 5.4 this关键字 1. 当需要

soyamilk233的博客 522

笔记《Thinking in Java》第5章 初始化清理

第五章 初始化清理 1.构造方法 如果没有构造方法,则实行默认的构造方法。如果自己创建了有参的构造方法,那么默认的无参构造方法就失效了。需要的话要自己创建。 构造方法是没有返回值的(跟返回void不一样)。不过在构造方法里还是可以单独的使用return来表示程序结束。 public Test201957(int integerIn){ if (integerIn >= 1) { ...

h2linlin的博客 243

Thinking in Java读书笔记(不断更新中)

概述春节在家乡,家里的电脑都是我上大学时淘汰的,要么运行不起来AS,要么连接不上手机,要么编译不了程序,这Android是写不了了。 记得前几天写插件的时候,用过Intellij IDEA,感觉很流畅,心说在我的小霸王电脑上试一试。于是我就下载了一个Intellij IDEA,运行Hello World畅快无比,OK,那么这几天有空就复习一下Java基础知识吧,温故而知新。 手头正好有一个本《T

zxt0601的博客 5456

JAVA 初始化清理 Thinking in Java

初始化清理 随着计算机革命的发展,“不安全”的编程方式已经逐渐成为变成代价高昂的主因之一。--Thinking in Java初始化清理正是设计安全的两个主要问题。开发者必须清除何时,如何初始化清理内存,否则可能会导致资源无法使用或资源无法释放的bug。 1.用构造器确保初始化。 C++引入了构造器的概念,这是在创建对象时被自动调用的特殊方法。java也引入了构造器,并额外提供...

top_explore的博客 360

Thinking in java目录概述

文章目录目的整书概况总结 目的 为什么要选取《Thinking in java》这本书? 语言本身:Java程序语言在实际场景开发中有非常多的通途,许多互联网产品的basic依托于java语言来实现 书籍:我始终认为思想性的东西是最重要的,可以为自己的行为划定标准,知道什么样的思考方向是合理的,基本的思考框架应该是什么 阅读书籍首先应该对整本书有一个初略的了解和认识。 整书概况 通过阅读目录大...

在黑夜中前行 1343

Thinking in java 第五章 - 初始化清理

Thinking in java 第五章 - 初始化清理 随着计算机革命的发展,“不安全”的编程方式已逐渐成为编程代价高昂的主因之一。 1 用构造器确保初始化 构造器的作用就是确保了在你能操作对象之前,它已经被其当地初始化了。 请注意,由于构造器的名称必须类名完全相同,所以“每个方法首字母小写”的编码风格并不适用构造器。 从概念上来讲,初始化创建是彼此独立的,在代码中却找不到对initialize() 方法的明确调用。在Java中,初始化和创建捆绑在一起,两者不能分离。 ...

Syntactic Sugar 224

Thinking in Java读书笔记 ——第五、六章 初始化清理、访问权限控制

《Think in Java读书笔记 第五章 初始化清理 目录《Think in Java读书笔记第五章 初始化清理一.方法的重载二.清理:终结处理和垃圾回收三.初始化和执行顺序 一.方法的重载 每个重载的方法都需要有一个独一无二的参数列表,甚至参数顺序的不同,而通过返回值区分是行不通的。 如果传入的基本数据类型小于方法中申明的形式参数类型,实际数据类型就会被提升,基本数据类型从小到大的排序是:char < byte < short < int < long &lt

weixin_48922154的博客 755

Thinking in Java-初始化清理

5.初始化清理 5.1 使用构造器确保初始化 命名规范:使用类相同的名称 原因解析:第一,名称可能类中的成员名称冲突;第二,调用构造器是编译器任务,需要让编译器明确识别 注意:由于构造器名称需要和类名相同,因此“每个方法首字母小写”的规则不适用于构造器 分类 默认构造器(无参构造器) 有参构造器 注意点 只有在创建对象时,会为对象分配存储空间,同时调用相应的构造器 无参...

想做开发的产品 171

Thinking in Java 》第五章 初始化清理

用构造器确保初始化Java 中,通过提供构造器,类的设计者可确保每个对象都会得到初始化。创建对象时,如果类具有构造器,Java 就会在用户有能力操作对象之前自动调用相应的构造器,从而保证了初始化的进行。 命名的方案:构造器采用类相同的名称。 从概念上讲,“初始化 “创建” 是彼此独立的,然而在 Java 的代码中,找不到对 initialize() 的方法的明确调用。在 Java ...

努力奋斗 351

Thinking In Java读书笔记——第五章 初始化清理

1 构造器 构造器的名称必须类名完全相同,且没有返回类型的指定。 如果不写,类中会提供一个默认空参数列表的构造器,如果创建了构造器,此默认构造器则不存在。 new对象时默认会调用构造器,并分配内存空间。 当创建子类对象时,需要先调用父类构造器(Object是顶级父类),如果有静态块则优先执行,如果有初始化块则优先于构造器执行 执行结果: 静态初始化块和非晶态初始化块的区别? ...

nickDaDa的博客 240

[Thinking in Java 4th] 第5章 初始化清理

[Thinking in Java 4th] 第5章 初始化清理 初始化清理 初始化: 程序员在开发过程中忘记初始化,而某些程序必须初始化 清理: 使用完成后,忘记回收,会一直占用内存 5.1 用构造器确保初始化Java中,通过提供构造器,类的设计者可确保每个对象都会得到初始化; Java会在用户有能力操作对象之前自动调用相应的构造器,从而确保出了初始化的进行. 如何命名初始...

182

Thinking in Java 系列 ---(三)初始化清理

文章目录Initialization & Cleanup用构造方法来确保初始化 Guaranteed initialization with the constructor构造方法规则方法的重载 Method overloading什么是重载方法重载范围this关键字static静态清理,垃圾回收- clean up成员初始化 Member initialization什么时候初始化变量比...

Charles Ren's Tech Blog 860

读书笔记Java编程思想 - Thinking In Java

Thinking In Java 读书笔记

qq_40690815的博客 747

thinking in java:5. 初始化清理

1.例子:public class ArrayOfPrimitives{ public static void main(String[] args){ int[] a1={1,2,3,4,5}; int[] a2; a2=a1; for(int i=0;i&lt;a2.length;i++) a2[i] = a2[i]+1...

oYeYuanXinZhiZhu1的专栏 498

Thinking In Java 学习笔记 - 初始化清理

为了保证正确的初始化清理Java提供构造器、垃圾回收器。 对象在创建时,系统会自动调用构造器,可以在构造器中完成初始化工作。对不再使用的内存资源,垃圾回收器会自动将其释放。 一、用构造器保证初始化 构造器的基本特征如下图所示: 示例代码: public class Exercise1_constructor { String str1 = "str1"; Stri

Thingking of thingking 1119

Java开源在线考试系统怎么选?从技术选型到落地部署的完整指南

Java开源在线考试系统怎么选?本文从技术选型、核心功能、部署运维、二次开发等维度,梳理了Java开源在线考试系统的选型要点。

麦塔在线考试培训系统 350

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

物联网项目实战开发之基于STM32+W5500以太网RJ45数据上传阿里云aliyun物联网平台MQTT代码程序DHT12温湿度

STM32F103通过SPI口跟W5500以太网模块相连。1、本例程实现的是W5500为TCP客户端,阿里云ALIYUN为服务端,数据通讯采用MQTT协议。2、实例展示了从DHCP动态获取IP、连接服务端、MQTT数据通讯、关闭连接等过程。实现了DHT12温湿度数据的上传。3、代码使用KEIL开发,当前在STM32F103C8T6运行,如果是STM32F103其他型号芯片,依然适用,请自行更改KEIL芯片型号以及FLASH容量即可。4、软件下载时,请注意keil选择项是jlink还是stlink.5、硬件设计、软件开发、数据联网:349014857@qq.com;

上一篇: 如何在PB的程序中注册用到的OCX控件
下一篇: Thinking in Java第三版读书笔记-第一章:对象简介
kingworld
博客等级 码龄24年 2粉丝 11原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值