用引用创建对象
用引用操作对象
最好创建引用的同时便进行初始化(字符串可以用带引号的文本初始化)
必须由你创建所有对象
- 存储位置
- 寄存器
- 数量有限,根据需求进行分配
- 位于处理器内部
- 不能直接控制(c和c++允许向编译器建议寄存器分配方式)
- 栈
- 位于RAM
- 通过栈指针从处理器那里获得直接支持
- 指针向下,分配新内存;指针向上,释放内存
- 快速有效,仅次于寄存器
- 创建程序时,java系统必须指定存储在栈内所有项确切的生命周期
- 某些java数据存储于栈(特别是引用),但对象并不是
- 堆
- 一种通用内存池,位于RAM区,存放所有JAVA对象
- 编译器不需要知道存储的数据在堆里存活多长时间
- 用堆进行存储分配和清理比栈花更多的时间
- 常量存储
- 通常放在程序内部
- 嵌入式系统中,放在ROM里
- 非RAM存储
- 流对象:转化为字节流,发送给另一台机器
- 持久化对象:存放于磁盘上
- 把对象转化为可以存储在其他媒介上的事物
- 特例:基本类型
- 对于小的对象而言,用new创建并存储在堆里并不是非常有效
- 与c和c++相同,创建一个并非引用的自动变量,直接存储值
- 置于栈中,更为高效
- 每种基本类型所占空间大小是确定的,因此JAVA比其他语言更具有可移植性
- Boolean所占大小没有确定,仅定义为只能取true或者false
- 高精度数字(BigInteger和BigDecimal)
- 支持与基本类型相似的操作
- 以方法调用取代运算符
- 以速度换取精度
- BigInteger
支持任意精度的整数 - BigDecimal
支持任何精度的定点数
- 数组
- C & c++数组就是内存块,java进行范围检查,确保数组被初始化,而不能在范围外被访问
- 每个数组增加少量内存开销,运行时进行下表检查,提高安全性和效率
- 创建数组对象,实际上是创建了引用数组,并且每个引用都会被自动初始化为特定值null
- 创建存储基本类型的数组,则其所占内存全部置0
- 寄存器
永远不需要销毁对象
- 作用域({})
- 作用域定义的变量只可用于作用域结束之前
- c++ & c允许而java不允许
{
int x = 12;
{
int x = 96; //Illegal
}
}
- new一个对象时,它可以存在于作用域之外,由垃圾回收进行回收。
创建新的数据类型:类
- 基本成员默认值
基本类型 | 默认值 |
---|---|
boolean | false |
char | ‘\u0000’(null) |
byte | (byte)0 |
short | |
int | |
long | |
float | |
double |
- 变量作为类的成员使用时,java才确保给定其默认值,确保其得到初始化
- 局部变量则无初始化,强行使用则产生编译错误
- static关键字
- 当声明一个事物是static,意味着这个域或者方法不会与包含它的那个类的任何对象实例关联在一起
- 用于为某特定域分配单一存储空间
- 或没有创建对象也能调用此方法
注释和嵌入文档
Javadoc
- 只能为public和protected成员进行注释
- @see 引用别的文档
- @link pacage.class#member label,类似@see,只是用于行内
- @docRoot,产生到根目录绝对路径
- @inheritDoc 从这个类最直接的基类继承相关文档
- @version version-information
- @author author-information
- @since 指定jdk最早版本
- @param 用于方法文档
- @return
- @deprecated 指出一些旧特性已被新特性取代
- @throws