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 ...
随机推荐
- 避免Double数据显示为科学记数
显示现象 数据类型 实体类中为 private Double tradeAmount; Oracle数据库中为 NUMBER(19,4) 解决方式 第一种解决方式 - 无效 将Double转 ...
- tomcat大文件上传
当服务器是Tomcat时,通过POST上传的文件大小的最大值为2M(2097152). 如果想修改该限制,修改方法如下: tomcat目录下的conf文件夹下,server.xml 文件中以下的位置中 ...
- 【luogu1325】雷达安装--贪心
题目描述 描述: 假设海岸线是一条无限延伸的直线.它的一侧是陆地,另一侧是海洋.每一座小岛是在海面上的一个点.雷达必须安装在陆地上(包括海岸线),并且每个雷达都有相同的扫描范围d.你的任务是建立尽量少 ...
- vue中mixin的理解与用法
vue中提供了一种混合机制--mixins,用来更高效的实现组件内容的复用.最开始我一度认为这个和组件好像没啥区别..后来发现错了.下面我们来看看mixins和普通情况下引入组件有什么区别? 组件在引 ...
- vscode集成eslint
1. 安装 ESLint 扩展 首先,打开 VSCode 扩展面板并搜索 ESLint 扩展,然后点击安装 2. 项目安装eslint yarn add eslint -D 3. 设置eslint配置 ...
- 内存管理1 retain & release
内存管理法则 1:谁创建谁释放alloc /new/ copy------>release/autorelease.一一对应,不是你创建的就不用你释放. 2:除了alloc /new/ copy ...
- flask 设置配置文件的方式
from flask import Flask from flask import current_app """ 配置参数设置与读取 """ ...
- express利用nodemailer发送邮件(163邮箱)
Nodemailer 是一个简单易用的Node.js邮件发送组件 首先安装这个组件 npm install nodemailer --save 安装之后,可以在某个get请求下,发送邮件,具体路由代码 ...
- tomcat部署web项目的问题
1:启动窗口乱码 原因 Tomcat默认都是UTF-8的,但是控制台是GBK的,要保持一致 解决办法 打开tomcat目录下的conf/目录下logging.properties找到java.util ...
- LSTM_Model
#!/usr/bin/python# -*- coding: utf-8 -*- import tensorflow as tf class TRNNConfig(object): "&qu ...