1. 存储位置
寄存器:位于处理器内部,不能直接控制
堆栈:位于RAM中,通过堆栈指针移动可以进行内存分配和释放。java系统必须知道存储在堆栈内所有项的确切生命周期,以便移动指针(这限制了程序的灵活性),对象引用和基本类型就存储在堆栈中(函数执行)。
堆:用于存放所有java对象,编译器不需要知道其存活多长时间。只要new即可在堆中分配。
常量存储:通常直接存放在代码内部。嵌入式系统可能存放在ROM中
非RAM存储:流对象(对象转化为字节流被发送给另一个机器)和持久化对象(磁盘)
2. 类型
基本类型:
- boolean,char(16 bit),byte(8 bit),short(16 bit),int(32 bit),long(64bit),float(32 bit),double(64 bit),void
- 基本类型变量直接存储值并置于堆栈中
- 基本类型具有包装器类,使得可以在堆上创建一个非基本类型对象。
- 自动包装功能将自动地将基本类型转换为包装器类型。
- 作为局部变量如果没有被初始化,java会在编译时返回错误。
高精度数字:
- BigInteger(任意精度整数)和BigDecimal(任意精度定点数),没有对应的基本类型。
- 必须以方法调用的方式取代运算符来实现。
数组:
- java会确保数组会被初始化,且保证在范围内访问(少量的内存开销)。
- 对于基本类型的数组,编译器保证了数组的初始化,全部置为0。
- 当创建一个数组对象,实际上就是创建了一个引用数组,其中每个引用都会被初始化为null。
类:
- 类中包含两类元素:字段和方法
- 字段
字段可以是任何类型的对象,如果是引用,必须初始化该引用,以便与实际对象相关联。
如果字段是基本数据类型,java会确保它获得一个默认值。(这并不适用于局部变量,即非类字段) - 方法
返回类型描述了调用方法之后的返回值。
参数列表给出了要传递给方法的类型和名称。对于对象来说,传递的是对象的引用,而基本数据类型例外。
方法名称和参数列表(合起来称为方法签名)唯一标识了方法。
调用方法通常被称为发送消息给对象。 - static
当域被声明为static,意味着这个域不与任何对象实例关联在一起。
对于static方法,不能简单地调用其他非static域或方法而没有指定某个命名对象。 - static的需求
只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象。
希望某个方法不与包含它的类的任何对象关联在一起,即使不创建对象,也能调用该方法。
static通常用来当做牧羊人角色,负责看护与其隶属同一类型的实例群。
对象:
- 操纵对象的标识符是对象的一个引用
- 引用不一定需要和对象关联,如果向没有关联对象的引用发送消息,会返回一个运行时错误。
- 对象只要需要,就可以一直保留下去。
3. 注释
注释文档:
- 将代码与文档链接起来,必须使用特殊的注释语法来标记文档,还需要一个工具提取注释javadoc
- javadoc查找程序内的特殊注释标签,解析这些标签标记的信息,也将类名或方法提取
语法:
- 所有的javadoc命令只能在‘/**’注释中出现。
- 三种类型的注释文档,分别对应于位于注释后面的三种元素:类,域和方法
- javadoc只能为public,protected成员进行注释。
- 使用javadoc的方式主要有两种:嵌入式HTML和文档标签。
嵌入式HTML:
- 可以通过html元素对注释进行格式化
- 不要在嵌入式HTML中使用标题标签<h>
标签:
- @see:引用其他类的文档。
- @version:包含版本说明的重要信息。
- @author:作者信息。
- @since:指定程序代码的最早使用版本。
- @param:参数和具体信息
- @return:返回值描述
- @throws:异常和具体说明
- @Deprecated:建议用户不要再使用的特性
4. 其他
- java的作用域不允许隐藏:较大作用域的变量不能再较小作用域中被再次定义。
- java.lang是默认导入到每个java文件中。