第二章 · 一切都是对象
2.1 用引用操纵对象
Object n = new Object();
创建了一个Object类的对象,然后建了一个指向该对象的引用:n。
在Java里,尽管一切都被看作对象,但操纵的标识符实际上是对象的一个“引用”。
2.2必须由你创建所有对象
2.2.1 存储到什么地方
内存是怎么分配的?可以在五个地方存储数据:
- 寄存器
- 堆栈 Java对象引用存储的地方
- 堆 Java对象存储的地方
- 常量存储 可以放在ROM(只读存储器)中
- 非RAM存储器 流对象和持久化对象
2.2.2 特例:基本类型
基本类型不用new来创建变量,而是创建一个并非是引用的“自动“变量。这个变量直接存储”值“,并置于堆栈中,因此较在堆中创建对象更加高效。
高精度数字
BigInteger和BigDecimal,
这俩者为Java提供的专门用于高精度运算的类。
2.2.3 Java中的数组
Java确保数组会被初始化,而且不能在它的范围之外被访问。
2.3 永远不需要销毁对象
变量生命周期的混乱往往会导致大量的程序bug,但Java用一种有趣的机制大大简化了对象清理的问题。
2.3.1 作用域
作用域决定了在其内定义的变量名的可见性和生命周期
在C、C++和Java中,作用域由花括号的位置决定。
{
int x=12;{
int q= 96;//Both x and q available}
}
//Only x available
// q is "out of scope"
}
在作用域里面定义的变量只可用于作用域结束之前
2.3.2 对象的作用域
{
String s = new String("a String");
// End of scope
}
Java对象不具备和基本类型一样的生命周期,当用new 创建一个Java对象时,他可以存活在作用域之外。引用s在作用域终点就消失了,但s指向的String对象仍旧继续占据着内存空间。
为了防止这些对象填满整个内存空间,Java依靠垃圾回收器解决内存问题。
你只需要创建对象,一旦不需要,它们就会自行消失。
2.4 创建新的数据类型:类
class ATypeName {
/* Class body goes here */ }
这就命名了一个新的数据类型:类;
定义了一个类之后(虽然上面的例子仅有一条注释语句),但也可以用new来创建这种类型的对象:
ATypeName a = new ATypeName( );
2.4.1 字段和方法
一旦定义了一个类,就可以在类中定义俩种类型的元素:字段(有时也被称作数据成员)和方法(有时也被称为成员函数)。
基本成员默认值
若类的某个成员是基本数据类型,即使程序员没有对其进行初始化,Java也会确保它获得一个默认值。
基本类型 | 默认值 |
---|---|
boolean | false |
char | null |
byte | (byte)0 |
short | (short)0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
然而“局部”变量(即并非某个类的字段)不会被默认初始化。
2.5 方法、参数和返回值
方法的基本组成部分包括:名称、参数列表、返回值和方法体。
RetureType methodName(/*Argument list*/){
/* Method body*/
}
方法名和参数列表(它们合起来被称为“方法签名”)唯一地标识出某个方法
2.5.1 参数列表
参数列表中必须指定每个所传递对象的类型以及名字
若返回类型是void,return关键字的作用只是用来退出方法。
2.6 构建第一个Java程序
2.6.1 名字可见性
包名——逆用域名
2.6.2 运用其他构件
在自己程序里使用预先定义好的类,可以使用关键字import来准确的告诉编译器你想要的工具类是什么。
2.6.3 static关键字
创建类的过程,换句话说也是对那个类的对象的外观与行为的描述。除非用new创建那个类的对象,否则,实际上并未获得任何对象。执行new来创建对象,数据存储空间才被分配,其方法才可供外界调用。但存在俩种特殊需求是上述方法满足不了的。
一种情形是:只想为某特定域分配单一存储空间;而不去考虑究竟要创建多少对象,甚至根本就不创建任何对象。
另一种情形时,希望某个方法不与包含它的类的任何对象关联在一起;也就是说,即便不创建这个类的对象,也可以调用这个方法。
通过关键字static可以满足上述俩种需要。
使用类名是引用static变量的首选方法,这不仅仅是因为它强调了变量的static结构,而且在某些情况下它还为编译器进行优化提供了更好的机会。
和其他任何方法一样,static关键字可以创建或者使用与其类型相同的被命名对象,因此,static方法常常拿来做“牧羊人”的角色,负责看护与其隶属同一种类型的实例群。
2.7 你的第一个Java程序
2.7.1 编译和运行
JDK:Java Developer’s Kit,Java开发人员工具包。
自行安装编译器
2.8 注释和嵌入式文档
Java有着俩种注释风格。
第一种
第二种
2.8.1 注释文档
javadoc输出的是一个HTML文件,可以同Web浏览器查看。这样,该工具就使得我们只需创建和维护单一的源文件,并能自动生成有用的文档。有了javadoc,就有了创建文档的简明直观的标准。
2.8.2 语法
所有javadoc命令都只能在“/*”注释中出现。
使用javadoc的方式主要有俩种:嵌入式HTML,或使用“文档标签”。
共有三种类型的注释文档,分别对应于注释位置后面的三种元素:类、域、方法。
注意:javadoc只能为public和protect成员进行文档注释。
2.8.3 嵌入式HTML
不要在嵌入式HTML中使用标题标签,因为javadoc会插入自己的标题,而你的标题可能与它们发生冲突。
2.8.4 一些标签示例
这一块暂时略过,写注释是不可能的,手动狗头…
2.8.5 文档示例
2.9 编码风格
Java编程语言编码约定中,提出代码风格:驼峰命名法。
2.10 总结
了解了编写一个简单程序的Java编程知识。此外,对Java语言及它的一些基本思想也有一个总体认识。