本章介绍Java程序的基本组成部分。
2.1 用引用操纵对象 操纵对象的标识符就是引用。例如: String str = “asdf”;
2.2 必须由你创建所有对象 存储区域的分类: 1) 寄存器
最快的存储区,位于处理器内部,但数量有限,且不能直接控制。2) 堆栈
位于通用RAM(随机访问存储)中,堆栈指针向下移动,则分配新的内存,向上移动则释放内存,仅次于寄存器,存储Java程序的对象引用,但不存储Java对象。创建程序时,Java系统必须明确知道存储在该区域所有项的确切生命周期3) 堆
位于RAM区,是一种通用的内存池,用于存储所有的Java对象。与堆栈不同的是,无需知道存储的数据在堆内的存活时间。4) 常量存储
常量值通常直接存放在程序代码内部5) 非RAM存储
数据完全存活于程序之外,不受程序控制,典型的例子是流对象和持久化对象。这种存储方式在于,把对象转化成可以存放在其他媒介上的事物,在需要时,可以恢复成常规的、基于RAM的对象。基本类型(无需new来创建变量)
基本类型大小最小值最大值包装器类型boolean---Booleanchar16-bitUincode 0Uicode 2^16-1Characterbyte8 bits-128+127Byteshort16 bits-2^15+2^15-1Shortint32 bits-2^31+2^31-1Integerlong64 bits-2^63+2^63-1Longfloat32 bitsIEEE754IEEE754Floatdouble64 bitsIEEE754IEEE754Doublevoid---void java SE5后的自动包装功能能自动地将基本类型和对应的包装类型互相转换。高精度数字
BigInteger和BigDecimal,前者用于任意位数的整数,后者用于任意精度的数字的计算。Java中的数组
与C和C++不同,Java中的数据会被初始化,并且不能在它的范围之外被访问(即数组下标不能越界)。2.3 永远不需要销毁对象 2.3.1 作用域
作用域决定其内定义的变量名的可见性和生命周期,其由花括号决定。2.3.2 对象的作用域
Java对象不具备和基本数据类型一样的生命周期。当使用new关键字新建对象时,该对象可以存活于作用域之外。 { String str = new String("a string"); } 当引用s在作用域终点消失时,String对象并没有消失,依然占据内存空间,它最终的销毁是由Java中"垃圾回收机制"来完成。2.4 创建新的数据类型:类
类中包含两种元素:字段(数据成员)和方法(成员方法)。 class ATypeName{ /* Class body goes here */ }2.5 方法、参数和返回值
调用方法就是向对象发送消息。 ReturnType methodName(/* Argument list */){ /* Method body */ } 参数类型为基本数据类型,则传递的是引用;参数类型为对象数据类型,则传递的是对象。2.6 构建一个Java程序 名字可见性
包名:域名反转,小写。运用其他构建
使用关键字import导包。static关键字
当声明一个事物为static时,意味着这个域或者方法不会与包含它的那个类的任何实例对象关联。2.7 你的第一个Java程序
import java.util.Date; public class HelloDate { public static void main(String[] args){ System.out.println("Hello, it's: "); System.out.println(new Date()); } } 编译javac HelloDate.java,运行java HelloDate。2.8 注释和嵌入式文档 注释
单行注释:// 多行注释:/* ... */嵌入式文档
javadoc:/** ...(使用HTML或者文档标签) */ 可在类、字段和方法上使用嵌入式HTML
/** * You can <em>even</em> insert a list: * <ol> * <li>Item one</li> * <li>Item two</li> * <li>Item three</li> * </ol> */ 不要使用标题标签,如<h1>或<hr>等。 所有类型的注释文档(类、字段和方法)都支持嵌入式HTML。标签 1. @see: 引用其他类
该标签格式如下: @see classname @see fully-qualified-classname @see fully-qualified-classname#methodname2. {@link package.class#method label}
与@see类似,但只用于行内。3. {@docRoot}
产生到文档根目录的相对路径。4. {@inheritDoc}
该标签从当前的类的最直接基类继承相关文档到当前的注释文档中。5. @version
该标签格式如下: @version version-information6. @author
该标签格式如下: @author author-information7. @since
该标签允许指定程序代码最早使用版本。8. @param
该标签用于方法文档中,方法的每一个参数都有一个这样的标签,其格式为 @param parameter-name description9. @return
该标签用于方法文档,其格式为: @return description10. @throws
该标签用于方法文档,其格式为: @throws fully-qualified-class-name description11. @deprecated
该标签用于指出一些旧特性已被新特性取代,建议用户不要再使用这些旧特性。2.9 编码风格
类名:每个单词首字母大写 包名:域名反转,全部小写 其余:驼峰风格,一个单词全部小写,后面单词首字母大写。