第二章 一切都是对象
1. 用引用操作对象
操作对象的方式主要有两种:1.直接操作对象 2. 基于特殊语法的间接表示操作对象
2.必须由你创建对象
2.1存储在什么地方
2.1.1 寄存器
这是最快的存储区,因为它位于不同于其他存储区的地方--- 处理器的内部
2.1.2 堆栈
位于通用RAM(随机访问存储器)中,但通过堆栈指针可以从处理器那里获取直接支持。堆栈指针若向下移动,则分配新的内存;若向上移动,则释放那些内存。这是一种快速有效的分配存储方法,仅次于寄存器。创建程序时,Java程序必须知道存储在堆栈中所有项的确切生命周期,以便上下移动指针。
2.1.3 堆
一种通用的内存池也位于RAM区,用于在存放所有的Java对象。堆不同于堆栈的好处就是:编译器不需要知道存储的数据在堆中能存活多长时间。当需要一个对象时,只需用new 写一行代码。用堆进行存储空间分配和清理可能要比用堆栈进行存储分配需要更长的时间。
2.1.4 常量存储
常量通常直接存放在程序代码里,这样做是安全的。因为它们永远不会改变。在嵌入式系统中,常量本身会和其他部分分隔开。所有这种情况下,可以选择将其存放在ROM(只读存储器)中。
2.1.5 非RAM存储
如果数据完全存活于程序之外,那么它就不受程序的任何控制,在程序没有运行时也可以存在。其中两个基本例子是流对象和持久化对象。在流对象中,对象转换为字节流,通常被发送给另一台机器。在“持久化对象”中,对象被存放在磁盘中,因此,即使程序终止,它们仍可以保持自己的状态。
3.基本数据类型
3.1 存储位置
基本数据类型出现的原因:这种类型是小的,简单的变量。不需要用new在堆上分配存储空间,直接置于堆栈中,这样会高效。
3. 2 Java基本数据类型所占的存储空间的大小
四类八种
3.3 JavaSE5 引入了自动装箱和拆箱机制
3.4高精度数字
主要是:BigDecimal 和BigInteger
4 Java数组
Java的主要目标就是安全性。Java会确保数组会被初始化,而且不能在它的范围之外被访问。这种范围检查是以每个数组上少量的内存开销及运行时的下标检查为代价的。
数组的初始化:存放对象的数组会被初始化null,存放基本数据类型的数组被初始化为0
5.永远不要销毁对象
5.1 作用域
作用域定义了该变量的可见性和生命周期
5.2 对象的作用域
Java对象不具有和基本数据类型一样的生命周期。当用new创建一个Java对象时,它可以存活于作用域之外。
6.创建新的数据类型:类
大多数面向对象的程序设计语言习惯用关键字class来表示,在类中包含两个元素:1.字段 2.方法。在创建这些成员变量的时候,Java会对其进行相应的初始化操作,但这些初始化操作不适合“局部”变量。
7.方法、参数和返回值
在Java中常用方法这个术语来表示“做某些事情的方式". Java的方法决定了一个对象能够接受什么样的消息。方法的基本组成部分包括:名称,参数,返回值和方法体。返回类型描述的是在调用方法之后才能返回的值。参数列表给出了要传给方法的信息的类型和名称。
8.名字可见性
为了给一个类库生成不会与其他名字混淆的名字,Java设计者希望程序员反过来使用自己的Internet域名,因为这样可以保证它们肯定是独一无二的。在Java1.0和Java1.1中,扩展名com,edu,org,net等约定为大写形式。现在整个包名都是小写了。
9.运用其他构件
import 来准确地告诉编译器你想要的类是什么,import java.util.ArrayList;这行代码告诉编译器,你想使用Java的ArrayList类
10.static关键字
1.只想为特定域分配单一的存储空间,而不去考虑究竟要创建多少对象,甚至根本就不要创建任何对象
2.希望某个方法不与包含它的那个类的任何对象实例关联在一起。也就是说,即使没有创建对象,也能够调用这个方法。
只要将static关键字放在定义之前,就可以将字段或方法设定为static。
11.你的第一个Java程序
Java.lang是默认导入每个Java文件中的
12.编译和运行
Javac(编译)和java(运行)
13.注释和嵌入式文档
1.单行注释
/* .... */
2.多行注释
/** ....... **/
3.注释文档
javadoc便是用于提取注释的工具,javadoc输出的是一个HTML文件,可以用web浏览器查看。所有javadoc命令都只能在“/**”注释中出现和通常一样,只是结束于“*/”
4.语法
1. 嵌入式HTML 2.使用“文档标签” 三种类型的文档注释:域,类和方法
5.注意点
javadoc只能为public和protected成员进行文档注释
6.使用
命令行在源文件目录下键入javadoc Document2.Java输出文档