2.1 用引用操纵对象
拥有一个引用,并不一定需要有一个对象与它关联。
2.2 必须由你创建所有对象
使用new操作符创建一个新对象。
2.2.1 存储到什么地方
1)寄存器
最快的存储区,位于处理器内部。但数量有限,Java中不可直接控制
2)堆栈(栈)
仅次于寄存器的速度,位于通用随机RAM(随机访问存储器)中,使用堆栈指针进行分配和释放内存。
对象引用存于堆栈,而对象不存于此。
3)堆
存储分配与清理比栈中慢,通用内存池,也位于RAM区中,用于存放所有的Java对象。即new操作后生成的对象在堆中分配。
4)常量存储
直接存放于程序代码内部,或者ROM中(嵌入式系统)
5)非RAM存储
数据完全存活于程序之外,程序不运行时也存在。
典型是:流对象和持久化对象。
流对象是对象转换为字节流,发送给另一台机器。
持久化对象是存放于磁盘上,需要时可以恢复成常规的。
2.2.2 基本类型
存储于栈中。
(1) 4种整形:(注意:Java没任何无符号类型)
long 8字节 64位 -2的63次方 ———+2的63次方-1 Long 必须有一个后缀L(足够大)
int 4字节 32位 -2的31次方 ———+2的31次方-1 Integer
short 2字节 16位 -32768———+32767 Short
byte 1字节 8位 -128 ———+127 Byte
(2) 2种浮点型:
float 4字节 32位 Float 一个后缀F
double 8字节 64位 Double 无后缀F的,默认为double
(3) 1种字符型(表示Unicode编码):
char 2字节 16位 Character
字符串String中的每个字符都是2个字节(16位)。
(4) 1种布尔型:
boolean Boolean 在Java中不可以使用数值或者指针作为判断条件。
使用包装器可在堆中创建一个基本类型对应的对象
高精度数字
两个高精度计算的类:BigInteger(任意精度的整数)和BigDecimal(任意精度的定点数)。必须以方法调用方式取得运算符来进行数值运算
2.2.3 Java中的数组
Java确保数组被初始化,而且不能访问其范围之外。
当创建一个数组对象时,实际是创建了一个引用数组,并且每个引用都会自动被初始化为一个特定值,有自己的关键字null。如果试图使用一个还是null的引用,则运行时会报错。
当创建一个基本类型的数组时,会确保其所占内存全部置0。
2.3 永远不要销毁的对象
2.3.1 作用域
Java中的局部变量不能与外部变量重名,而c,c++可以。
2.3.2 对象的作用域
在局部用new创建的对象引用和对象,在出了局部后,引用的作用域就消失了,而对象却继续占据内存空间。
此时,Java垃圾回收器就自动检测到此对象不会再被引用,则自动将对象所占空间回收。
2.4 创建新的类型:类
2.4.1 字段(数据成员)和方法(成员函数)
若类的某个成员是基本数据类型,会自动被初始化为默认值。
boolean ———— false
char ———— null
byte ———— (byte)0
short ———— (short)0
int ———— 0
long ———— 0L
float ———— 0.0f
double ———— 0.0d
但是对于函数中的基本数据类型的局部变量,不会自动进行初始化,而且Java会要求你必须自己进行初始化赋值后,才能使用该变量。
2.5 方法、参数和返回值
方法名和参数列表(合称“方法签名”)唯一的标示一个方法。
Java中的方法只能作为类的一部分来创建,而方法只有通过对象才能被调用(除了static方法)。
2.5.1 参数列表
参数传递的实际是引用。
2.6 构建一个Java程序
2.6.1 名字可见性
使用域名反转来命名目录结构,及包名
2.6.2 运用其他构件
使用import导入一个包即一个类库。
2.6.3 static关键字
当声明一个方法或域是static时,意味着不会与包含它的那个类额任何对象实例关联在一起 。
引用类的static变量和方法有两种方法,一种是通过一个对象来定位它,一种是直接使用类名来定位它(推荐方式,便于编译器优化)。
2.7 第一个Java程序
2.7.1 编译和运行
Ant用于批量编译和运行Java程序
2.8 注释和嵌入式文档
2.8.1 注释文档
将代码与文档链接起来。使用特殊的注释语法来标记文档,再使用javadoc来提取注释。
javadoc可以查找程序内的特殊注释标签,既可以解析这些标签标记的信息,也将毗邻注释的类名和方法名抽取出来。
javadoc输出的是一个HTML文档。
2.8.2 语法
所有的javadoc命令都只能在"/**"和"*/"之间出现。
共有3种注释文档,分别对应类,域和方法。只可以对public和protected成员进行文档注释。
2.8.3 嵌入式HTML
2.8.4 一些标签示例
2.8.5 文档示例
2.9 编码风格
类名首字母要大写,由多个单词构成时,则每一个字母的首字母要大写。
而方法、成员变量以及对象同类名规则,不过第一个字母要小