[学习笔记]Thinking in Java (the 2nd edition) Study Note (1)

如何评价智能座舱的好坏之指标拆分? 智慧服务实际上是有一些比较实用的功能的,常用的有后视镜自动伸展、离车自动落锁、座椅记忆等,但这部分前装率较高,各家的区分度不高,所以一级指标中占比最低(10%)。不过呢,规则里的权重仅有5%,或许是考虑到比较成熟,没有区分度。全景环视明显拔得头筹,占比85%,这对于我这种没有倒车影像不敢倒车的人,举双手赞成,但还是要看其效果,比如,现在,测评规则的颁布实际上也让我们看到,智能座舱的技术方案正走向成熟,并将走进规范化运作。,占比 60%,这与我们对座舱最直接的认知符合, 阅读详情

Thinking in Java (the 2nd edition) Study Note

第1章 对象入门

Alan Kay总结了Smalltalk的五大基本特征。这是第一种成功的面向对象程序设计语言,也是Java的基础语言。
通过这些特征,我们可理解“纯粹”的面向对象程序设计方法是什么样的:

(1) 所有东西都是对象。可将对象想象成一种新型变量;它保存着数据,但可要求它对自身进行操作。理论上讲,
可从要解决的问题身上提出所有概念性的组件,然后在程序中将其表达为一个对象。

(2) 程序是一大堆对象的组合;通过消息传递,各对象知道自己该做些什么。为了向对象发出请求,需向那个对象“发送一条消息”。
更具体地讲,可将消息想象为一个调用请求,它调用的是从属于目标对象的一个子例程或函数。

(3) 每个对象都有自己的存储空间,可容纳其他对象。或者说,通过封装现有对象,可制作出新型对象。所以,尽管对象
的概念非常简单,但在程序中却可达到任意高的复杂程度。

(4) 每个对象都有一种类型。根据语法,每个对象都是某个“类”的一个“实例”。其中,“类”(Class)是“类型”(Type)
的同义词。一个类最重要的特征就是“能将什么消息发给它?”。

(5) 同一类所有对象都能接收相同的消息。这实际是别有含义的一种说法,大家不久便能理解。由于类型为“圆”(Circle)
的一个对象也属于类型为“形状”(Shape)的一个对象,所以一个圆完全能接收形状消息。这意味着可让程序代码统一指挥
“形状”,令其自动控制所有符合“形状”描述的对象,其中自然包括“圆”。这一特性称为对象的“可替换性”,是OOP最重要的概念之一。

第2章 一切都是对象
2.1  用句柄操作对象

创建一个String句柄:
String s;
这里创建的只是句柄,并不是对象。若此时向s发送一条消息,就会获得一个错误(运行期)。这是由于s实际并未与任何
东西连接(即“没有电视机”)。因此,一种更安全的做法是:创建一个句柄时,记住无论如何都进行初始化:
String s = "a";

创建句柄时,我们希望它同一个新对象连接。
通常用new关键字达到这一目的。new的意思是:“把我变成这些对象的一种新类型”。所以在上面的例子中,可以说:
String s = new String("a");

2.2
程序运行时,我们最好对数据保存到什么地方做到心中有数。特别要注意的是内存的分配。有六个地方都可以保存数据:
(1)寄存器

(2)堆栈:驻留于常规RAM(随机访问存储器)区域
可通过它的“堆栈指针”获得处理的直接支持。这是一种特别快、特别有效的数据保存方式,仅次于寄存器。创建程序时,
Java编译器必须准确地知道堆栈内保存的所有数据的“长度”以及“存在时间”。这是由于它必须生成相应的代码,以便向上
和向下移动指针。这一限制无疑影响了程序的灵活性,所以尽管有些Java数据要保存在堆栈里——特别是对象句柄,但Java
对象并不放到其中。

(3)堆:一种常规用途的内存池(也在RAM区域)
其中保存Java对象。和堆栈不同,“内存堆”或“堆”(Heap)最吸引人的地方在于编译器不必知道要从堆里分配多少存储
空间,也不必知道存储的数据要在堆里停留多长的时间。因此,用堆保存数据时会得到更大的灵活性。要求创建一个对象时,
只需用new命令编制相关的代码即可。执行这些代码时,会在堆里自动进行数据的保存。当然,为达到这种灵活性,必然会
付出一定的代价:在堆里分配存储空间时会花掉更长的时间

(4)静态存储:这儿的“静态”(Static)是指“位于固定位置”(尽管也在RAM里)
程序运行期间,静态存储的数据将随时等候调用。可用static关键字指出一个对象的特定元素是静态的。Java对象本身永远
都不会置入静态存储空间。

(5)常数存储
常数值通常直接置于程序代码内部。这样做是安全的,因为它们永远都不会改变。有的常数需要严格地保护,
所以可考虑将它们置入只读存储器(ROM)。

(6)非RAM存储
若数据完全独立于一个程序之外,则程序不运行时仍可存在,并在程序的控制范围之外。其中两个最主要的例子便是“流式对
象”和“固定对象”。对于流式对象,对象会变成字节流,通常会发给另一台机器。而对于固定对象,对象保存在磁盘中。即使
程序中止运行,它们仍可保持自己的状态不变。对于这些类型的数据存储,一个特别有用的技巧就是它们能存在于其他媒体中。
一旦需要,甚至能将它们恢复成普通的、基于RAM的对象。Java 1.1提供了对Lightweight persistence的支持。

2.3 对象的作用域
{
  String s = new String("a string");
} /* 作用域的终点 */
那么句柄s会在作用域的终点处消失。然而,s指向的String对象依然占据着内存空间。在上面这段代码里,我们没有办法
访问对象,因为指向它的唯一一个句柄已超出了作用域的边界。

2.4 javadoc注释

1. @param
格式如下:
@param 参数名 说明
其中,“参数名”是指参数列表内的标识符,而“说明”代表一些可延续到后续行内的说明文字。一旦遇到一个新文档标记,
就认为前一个说明结束。可使用任意数量的说明,每个参数一个。

2. @return
格式如下:
@return 说明
其中,“说明”是指返回值的含义。它可延续到后面的行内。

3. @exception
违例标记的格式如下:
@exception 完整类名 说明
其中,“完整类名”明确指定了一个违例类的名字,它是在其他某个地方定义好的。而“说明”(同样可以延续到下面的行)
告诉我们为什么这种特殊类型的违例会在方法调用中出现。

4. @deprecated
这是Java 1.1的新特性。该标记用于指出一些旧功能已由改进过的新功能取代。该标记的作用是建议用户不必再使用一种
特定的功能,因为未来改版时可能摒弃这一功能。若将一个方法标记为@deprecated,则使用该方法时会收到编译器的警告。

第3章 控制程序流程
“就象任何有感知的生物一样,程序必须能操纵自己的世界,在执行过程中作出判断与选择。”

3.1 赋值
在为对象“赋值”的时候,情况却发生了变化。对一个对象进行操作时,我们真正操作的是它的句柄。所以倘若“从一个对象
到另一个对象”赋值,实际就是将句柄从一个地方复制到另一个地方。这意味着假若为对象使用“C=D”,那么C和D最终都会
指向最初只有D才指向的那个对象。

3.2 == 问题
Integer n1 = new Integer(47);
Integer n2 = new Integer(47);
System.out.println(n1.equals(n2)); 
//结果是false ,因为比较的是n1和n2的引用(即比较的是指向n1和n2的指针)

每个类都有一个默认的equals()方法,因为Object 就有这样一个方法;所有的类默认继承它,但比较的是引用

【1】Java 部分笔试题解析 解析A.abstract关键字应该放在class关键字之前。C.抽象方法不能有方法体。D缺少了class关键字。 阅读详情

相关推荐

Vue3结合vue-office实现Word文档上传与预览全流程解析

本文详细解析了如何在Vue3项目中集成vue-office插件实现Word文档上传与预览功能。从项目初始化、插件安装到文件上传处理(包括ArrayBuffer转换)、预览优化及常见问题解决方案,提供了一套完整的实现流程,帮助开发者快速实现高效的文档预览功能。

weixin_29001327的博客 464

java编程思想读书笔记(一)

第一章给我印象比较深的是这段话。 Alan Kay总结了Smalltalk的五大基本特征。这是第一种成功的面向对象程序设计语言,也是Java的基础语言。通过这些特征,我们可理解“纯粹”的面向对象程序设计方法是什么样的: (1) 所有东西都是对象。可将对象想象成一种新型变量;它保存着数据,但可要求它对自身进行操作。理论上讲,可从要解决的问题身上提出所有概念性的组件,然后在程序中将其表达为...

badengfu3999的博客 195

Rust 与 Golang 深度对决:从语法到应用场景的全方位解析

Rust 定义函数以fn关键字开头,参数需明确指定类型,返回值类型紧跟在箭头->之后。// 定义函数add,接收两个i32类型参数a和b,返回i32类型结果,功能为两数相加a + bRust 和 Golang 各有千秋,在不同领域展现独特优势。Rust 凭借强大的内存安全与高性能,在系统编程、网络编程以及对内存安全和性能要求高的场景中表现突出;Golang 则以简洁语法和出色并发性能,在云计算、分布式系统、Web 开发等领域占据一席之地。

muyouking 1769

java编程思想学习(1)

Smalltalk           这是第一种成功的面向对象程序设计语言,也是Java 的基础语言。Smalltalk (java的基础语言)的五大基本特征:        (1) 所有东西都是对象。可将对象想象成一种新型变量;它保存着数据,但可要求它对自身进行操作。理论上讲,可从要解决的问题身上提出所有概念性的组件,然后在程序中将其表达为一个对象。        (2) 程序是一大堆对

wojiaohuangyu的专栏 1381

Keil5实战:如何高效导出变量数据并实现可视化分析

本文详细介绍了在Keil5开发环境中,如何利用调试脚本高效导出程序运行时变量数据的方法。通过编写脚本自动捕获数据并保存为文件,再结合Excel或Python进行可视化分析,为嵌入式调试与算法优化提供了数据支撑,显著提升开发效率。

silver的专栏 1104

基于深度学习的水质预测:多参数监测与预测

首先,我们需要收集水质监测的多参数数据。收集到的数据应包括不同时间点的水质参数值以及相应的水质等级标签,用于训练和评估深度学习模型。同时,数据的质量和数量对于模型的性能也有重要影响,因此在实际应用中需要充分考虑数据的采集和处理过程。总之,基于深度学习的水质预测可以通过收集水质监测的多参数数据并使用适当的深度学习模型进行训练和预测来实现。通过以上的深度学习模型,我们可以利用水质监测的多参数数据进行水质预测。这种基于深度学习的方法可以提高水质预测的准确性和稳定性,为水质监测和环境保护提供有力支持。

web_bug407的博客 1103

[学习笔记]Thinking in Java (the 2nd edition) Study Note (2)

第4章 初始化和清除“随着计算机的进步,‘不安全’的程序设计已成为造成编程代价高昂的罪魁祸首之一。”“初始化”和“清除”是这些安全问题的其中两个。4.1 构造函数不能用返回值来区分不同的函数,比如:void f() {}int f() {}我们可能调用一个方法,同时忽略返回值;通常把这称为“为它的副作用去调用一个方法”,因为我们关心的不是返回值,而是方法调用的其他效果。所以假如我们象下

忘却的悲伤 1538

知识图谱-KGE-语义匹配-双线性模型-2018:SimplE

【paper】 SimplE Embedding for Link Prediction in Knowledge Graphs 【简介】 本文是加拿大英属哥伦比亚大学的两位学者发表在 NIPS 2018 上的工作,文章提出了 SimplE(Simple Embedding)。这篇和前面一篇差不多,也是对 1927 年的 CP 进行改进(简化),传统CP为实体分配的两个向量是独立训练的,SimplE利用关系的逆在三元组打分函数中加上了一个对称项,使得每个实体的两个向量依赖学习,并且 SimplE 的复杂度随

u013250861的博客 958

[学习笔记]Thinking in Java (the 2nd edition) Study Note (3)

第9章 违例差错控制Java的基本原理就是“形式错误的代码不会运行”。在Java中,对那些要调用方法的客户程序员,我们要通知他们可能从自己的方法里“掷”出违例。这是一种有礼貌的做法,只有它才能使客户程序员准确地知道要编写什么代码来捕获所有潜在的违例。当然,若你同时提供了源码,客户程序员甚至能全盘检查代码,找出相应的throw语句。但尽管如此,通常并不随同源码提供库。为解决这个问题,Java提供了一

忘却的悲伤 1731

【Go语言实战】(3) Gin + Gorm 简单备忘录 | 含接口文档

Go语言实战:TodoList 备忘录

面向生活编程 6139

MATLAB基础应用精讲-【深度强化学习】SAC(Soft Actor-Critic)算法(附MATLAB和python代码实现)

Actor 网络:用于选择动作。Critic 1 和 Critic 2 网络:用于估计 Q 值。Target Critic 1 和 Target Critic 2:与 Critic 网络架构相同,用于生成更稳定的目标 Q 值。,即在保证探索的情况下选择高价值动作。软更新目标 Q 网络参数,使得目标网络参数缓慢向当前网络靠近,避免振荡。

qq_36130719的博客 454

[学习笔记]Thinking in Java (the 2nd edition) Study Note (4)

第13章 创建窗口和程序片略第14章 多线程多线程的实现基本可以有2种方法:从Thread类继承 和 实现Runnable 接口1.从线程继承为创建一个线程,最简单的方法就是从Thread类继承。这个类包含了创建和运行线程所需的一切东西。Thread最重要的方法是run()。但为了使用run(),必须对其进行过载或者覆盖,使其能充分按自己的吩咐行事。因此,run()属于那些会与程序中的其他线程“并

忘却的悲伤 1444

Linux ARM平台开发系列讲解(摄像头V4L2子系统) 2.12.5 V4L2 control的原理和实现

既然涉及到视频输入,就会有很多与 相关的效果,比如对比度、饱和度、色温、白平衡等等,这些都是通用的、必须的控制项,并且大多数仅需要设置一个整数值即可。 内核中已经为我们提供了这个控制类型的,我们只需要明确自己需要添加什么控制类型,然后将其添加进内核中即可。该部分摄像头代码一半厂家会提供驱动或者相对应的参数,否则没有图像处理知识很难开发出来。 返回总目录...

DSMGUOGUO的博客 1435

[Java学习]使用digester 解析xml配置文件

Java离不开xml配置文件,而Apache的Digester是解析xml的一个很好的工具。Digester的运行依赖下列包:一个遵循Jaxp(1.1版本及以后)的XML解析器Jakarta commons beanutils包(1.5版本及以后)Jakarta commons collections包(2.1版本及以后)Jakarta commons logging包(1.0.2版本及以后)(请

忘却的悲伤 9870

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Introduce yourself in English

My name is ABC and I was born in Qingdao city in Shandong province, which is a littoral and beautiful place. I graduated from SDFI in 2003. I majored in Information Management & Infomation System , a

忘却的悲伤 3577

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Python学习

Fromhttp://www.hetland.org/python/instant-hacking.phpInstant Hacking<!--//code,pre { color: #dd440f }code,pre { color: #990000 }pre { font-size: 90% }//em { color: green }.comment { color:

忘却的悲伤 3495

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

自动备份,批处理,windows计划任务

自动备份,批处理,windows计划任务写了个自动备份的批处理,每天18:18 自动执行,mmd,让老子老是手动备份,1个多月,靠谁的大爷;n久没写java程序了,老是加班做vb,mmd,再靠一次//autobak.bat@echo offd:cd /HBPS_SRC/hbps/xcopy client /BackUP/ /E /Y /Cxcopy client D:/BackUP/Clien

忘却的悲伤 3291

[JAVA]Java 打包与批处理执行

编译好的项目,在WINDOWS下可以这样打包与执行:1、工程目录设置为 $/proj2、代码文件放到   $/proj/snake/Frame1.java/**最简单的一个frame*/package snake;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Frame1{ public

忘却的悲伤 3191

在Struts框架下定制自己的标签

Struts的html标签是个很好用的东东,但有时候不能完全满足要求,我们也许需要定制自己的标签。一点困难在于我们如何为其赋值呢?用Struts提供的一个工具类, org.apache.struts.util.RequestUtils,它的lookup方法将在pageContext范围内搜索bean的属性值RequestUtils.lookup(super.pageContext, Constan

忘却的悲伤 3018

Java核心编程:卷I——学习小记

《Core Java2 Volume I: Fundamentals》(原书第5版)机械工业出版社以前看过的关于Java的东西都很零碎,感觉有必要重新学习一下Java的一些基础知识,特记。第1章 Java 简介1、我们认为Java的种种优势在它应用于新型设备或新应用领域中才能体现,而不是用它来重写那些已存在的应用程序。///所谓各领风骚十来年,大致就是这个意思;同时,泛泛地比较语言之间

忘却的悲伤 2862

J2EE 面试题综合

J2EE 面试题综合/** * By metaphy 2005-12-23 * Version: 0.022 * 注:题目答案来源于metaphy过去的知识或网络,metaphy不能保证其正确或完整性,仅供参考*/[基础问答]1.下面哪些类可以被继承?java.lang.Thread (T)java.lang.Number (T)java.lang.Double (F)java.lang.Math

忘却的悲伤 2847

"生命游戏",VB

出差tmd累死,还用VB 做,还tmd这点米,无聊,写个小东西:“生命游戏”本世纪70年代,人们曾疯魔一种被称作“生命游戏”的小游戏,这种游戏相当简单。假设有一个像棋盘一样的方格网,每个方格中放置一个生命细胞,生命细胞只有两种状态:“生”或“死”。游戏规则如下:1、如果一个细胞周围有3个细胞为生(一个细胞周围共有8个细胞),则该细胞为生,即该细胞若原先为死,则转为生,若原先为生,则保持不变

忘却的悲伤 2786

关于Web Service

这是从网上搜集的一些关于Web Service的知识。1.WebService必须用.net写吗?PHP可否?[2005-9-5]能够满足以下5点即可:用XML描述数据;用SOAP发送消息;用WSDL描述方法;提供能被发现的方法,遵守Disco协议;进行UDDI注册2.什么是Webservice?[2005-9-5](a)回复人: ZengXi(var Mm: TObject) 通过规范的协议(s

忘却的悲伤 2422

robocode 笔记

2005-9-1[Robocode]1.Download robocode-setup.jar from http://www.ai-code.org/download/detail.php?id=1 (Im so sorry that I dont know my downloads version)2.Setupjava -jar robocode-setup.jar3.After se

忘却的悲伤 2112

正则表达式学习小记

身为一名程序员却不了解正则表达式(Regular Expression), 除了懒惰,估计没有其他的原因可以搪塞过去,此记.  1.定义正则表达式由一些普通字符和一些元字符(metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义.元字符   描述 ---------------------------------------------------------

忘却的悲伤 2093
上一篇: Google从入门到精通[转载]
下一篇: [pop]心愿——四个女生
Gooing
博客等级 码龄24年 4粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值