Java编程思想(二)一切都是对象
2.1用句柄操纵对象
尽管一切都看作是对象,但是操纵的标识符实际上是指向一个对象的“句柄”(handdle);
拥有一个句柄并不表示必须有一个对象同他连接;
String s; 这里创建的只是句柄,并不是对象。若此时向s发送一则消息,就会获得一个错误。
由于s并未与任何东西相连接。
因此创建一个句柄时,无论如何都进行初始化。
2.2所有对象都必须创建
创建句柄时,我们希望它同一个新的对象进行连接。使用new关键字达到这个目的。
2.2.1保存到什么地方
(1)寄存器。最快的保存区域,因为它位于处理器内部,因为数量有限,必须有编译器分配,因此没有直接的控制权,也不可能在自己的程序里找到寄存器存在的任何踪迹
(2)堆栈。在RAM(随机访问存储器)中,可以通过它的堆栈指针获得处理的直接支持。堆栈指针下移则创建新的内容,若上移则释放哪些内存。对象句柄一般方法堆栈里,但是Java对象并不会放在其中
(3)堆。RAM 堆最吸引人的地方在于编译器不必知道要从堆里分配多少存储空间,也不必知道存储的数据要在堆里停留多长时间,因此,用堆保存数据有很大的灵活性。
(4)静态存储。RAM 程序运行时,静态存储的数据将随时等候调用。可以static关键字指出一个对象的特定元素是静态的。但Java本身永远不会置入静态存储空间
(5)常数存储。ROM
(6)非RAM,若数据完全独立与一个程序之外,则程序不运行是仍可以村子啊,并在程序 的控制范围之外。 两个例子:流式对象和固定对象。
流式对象:对象会变成字节流,通常发给另一台机器,而对于固定对象,对象保存在磁盘中。
2.3.1
C能将一个变量隐藏在一个更大的作用域力。但是这种做法在Java里是不允许的
2.3.2对象的作用域
Java对象和主类型的存在时间不一样。用new关键字创建一个Java对象时,它会超出作用域的范围之外。所以假若使用下面这段代码
{
String s=new String (“a string”);
}//作用域的终点
句柄s会在作用域的终点处消失,然而s指向string对象依然占据着内存空间,所有引入垃圾收集器。
2.4新建数据类型:类
2.4.1字段和方法
一个类包括:数据成员(字段)和成员函数(方法)。
其中数据成员是一种对象(通过它的句柄与其通信),可以为任何类型。
即主类型(并不是句柄)之一,如果是指向对象的一个句柄,则必须初始化那个句柄,用一个名为构建器的特殊函数将其与一个实际对象链接起来(new);
若是一种主类型,则可以在类定义位置直接初始化
学会引用对象成员:对象句柄.成员
一个对象可能包含了另一个对象,而另一个对象里则包含了我们想要修改的数据。此时只需要爆出“连接句点”即可:myplane.leftTank.capacity=100;
1.主成员的默认值
Boolean false char ‘\u000’(null)
对于类中的成员函数中的变量 如果没有赋初值,那么Java会提示错误
2.5方法=函数
2.6.3static关键字
一但将什么东西设为static,数据或方法就不会同那个类的任何对象实例联系在一起。对于函数来说,static一项重要的用途就是帮助我们在不必创建对象的前提下调用那个方法,即省略了new的过程。
2.8.3嵌入HTML
@see;引用其他类@see;类名@see;完整类名 @see:完整类名#方法名
2.8.5类文档标记
@version ;版本信息
@author:作者信息
2.8.7方法文档标记
@param 参数名 说明
@return 说明
@exception 违例
@deprecated 指出旧功能已经由新功能代替
Java编程思想(二)一切都是对象的更多相关文章
- 《java编程思想》一切都是对象
1. 用引用操纵对象 在Java中一切皆对象,我们平常在对java中的类进行操作时,其实操作的不是对象本身而是对象的引用.我们可以将这想象成用遥控器(引用)操作电视机(对象),只要握住这个遥控器,就能 ...
- JAVA编程思想(1) - 一切都是对象
-"假设我们说还有一种不用的语言,那么我们就会发觉一个有些不同的世界" 1. 用引用操纵对象 每种编程语言都有自己的数据处理方式. 有些时候,程序猿必须时刻留意准备 ...
- 阅读java编程思想之一切都是对象
温故而知新--- 1. 用句柄操作对象 现实生活中,我们可以把遥控器当作句柄,电视机当作对象.当我们拿到句柄(遥控器)的时候,我们是可以控制对象的(电视机).比如说调节音量大小,色彩等.那么在程序里, ...
- Java程序员的日常——《编程思想》一切都是对象
今天终于看完了第一章,哈哈,万事开头难....刚开始被编程思想的第一章给蒙住了,讲一堆理论,没什么意思.从第二章开始,真正的开始讲解Java相关的内容,有了一定的开发经验后,再次阅读起来,感觉收获良多 ...
- Java编程思想 4th 第1章 对象导论
所有编程语言都提供抽象机制. 面向对象编程似乎是一种很好的编程思想和方式,面向对象编程中的对象简洁描述是:对象具有状态.行为和标识.状态指的是数据存储,存储的数据能反应状态:行为指的是方法,方法表示对 ...
- 《Java编程思想》笔记 第一章 对象导论
1.抽象过程 Q:什么是对象??? A: 1) 万物皆对象 --- 对象具有状态,行为和标识 2)程序是对象的集合,他们通过发送消息来告诉彼此要做的 3)通过创建包含现有对象的包的方式来创建新类型 ...
- JAVA 编程思想二
1: java 单根继承的优点? 方便垃圾回收: 垃圾回收的设计会方便实现. 多重继承的函数重名的问题. 2: 向下转型和向上转型? 向下转型不安全,向上转型安全. 3: system.g ...
- Java编程思想 - 第11章 持有对象
· 大量笔记存放在Github Java文件中,请移步查看:https://github.com/iGuure/AndroidCodeHub/tree/master/Java%20pratice/Th ...
- Java编程思想读书笔记 第一章 对象导论
抽象过程 纯粹的面向对象程序设计方式: 万物皆为对象: 对象可以存储数据,还可以在其自身执行操作 程序是对象的集合: 通过发送消息告诉彼此要做的 每个对象都有自己的由其它对象构成的存储:可以在程序中构 ...
- 浅谈《think in java》:二 一切都是对象
清晨坐在图书馆,今天聊聊早晨的“果实”. 清单1. 引用操作:对象创建:存储地方:基本类型:数组 “reference”:引用[操作对象的标识符] 例子:创建String类型的引用,并不是对象. St ...
随机推荐
- *51nod 1409
https://blog.csdn.net/stay_accept/article/details/81476358 不懂啊 #include <map> #include <que ...
- RX232串口发送
在进行工程调试的时候有时候需要对变量进行观察,SingnaTap II Logic Analyzer 只能对管脚进行观察,所以要观察内部的变量必须把内部的变量进行输出.一种方法是直接把变量定义成管脚通 ...
- devstack cinder-volume服务状态为down
cinder-manage service list 查看到有一个 xxx状态 Binary Host Zone Status State Updated At RPC Version Object ...
- Selenium执行cdp命令,driver.execute_cdp_cmd用法
Chrome自带的开发者工具DevTools功能非常强大.有时候我们在使用Selenium操作浏览器时需要通过调用一下DevTools的方法来完成一些设置,如模拟移动设备,弱网模拟等等. Seleni ...
- 十二、 RAID
https://blog.51cto.com/sonlich http://note.youdao.com/noteshare?id=17083150f38dd19343f82ea6cc0e0e62& ...
- MySQL group_concat 介绍
在做数据初始化的时候,由于需要修改满足条件的全部订单的状态,因此,想使用group_concat函数提取满足条件的所有订单id,以方便写回滚脚本.测试数据取自表test1,表结构和相关 insert ...
- DB缓存一致性
直接硬核干货,去掉前戏. 方案大致说明 1:假设对redis中存在一对key,value的对应关系是 key=money,value=666 2:当修改线程修改key时先将key设置成value=66 ...
- C语言问答九问
C语言问题观: 一.环境搭建问题:linux,(可以是w10下linux子系统):vim(notepad++),gcc编译器,gdb调试器,make自动编译工具,ddd分析工具和valgrind分析工 ...
- [BJOI2019]奥术神杖——AC自动机+DP+分数规划+二分答案
题目链接: [BJOI2019]奥术神杖 答案是$ans=\sqrt[c]{\prod_{i=1}^{c}v_{i}}=(\prod_{i=1}^{c}v_{i})^{\frac{1}{c}}$. 这 ...
- ORM SQLAlchemy - 基本关系模式
1 一对多 一个parent对多个child,一对多关系添加一个外键到child表,用于保存对应parent.id的值,引用parent.relationship()在parent中指定,引用/保存 ...