创建对象
对象存储的位置
- 寄存器:最快的存储区,位于处理器内部,但是数量大小有限,寄存器根据需求分配,你无法直接控制.
- 栈:位于通用RAM,通过堆栈指针可以从处理器那里获得直接支持,下移分配,上移释放.java的对象引用的存放位置
- 堆:一种通用的内存池(位于RAM区),用于存放所有的java对象,堆的分配处理比堆栈存储需要更多的时间.
- 常量存储:通常直接放在程序代码内部,安全的,不会被改变.
- 非RAM存储:数据完全存活于程序之外,程序没有运行也存在,比如流对象和持久化对象.这种方式技巧在于:把对象转化成可以存放在其他媒介上的事物,在需要时候恢复成常规的,基于RAM的对象.
特例:基本类型
对于简单的,小的变量,使用new创建在堆里,不是很有效,所以对于那些类型,java创建一个并非是引用的”自动”变量,直接存储值在堆栈中,更加高效.
java要确定每种基本类型所占存储空间的大小,它们的大小并不像其他大多数语言那样随机器硬件架构变化而变化,这种不变性是java比其他大多数语言编写的程序更具移植性的原因之一.
所有的类型都有正负号.
使用任何引用前,都必须为其指定一个对象.
作用域
以下代码在c和c++中是合法的,但是在java中却不能这样写:
{
int x = 12;
{
int x = 96;
}
}
编译器会报告x已经定义过,在c或c++中会将作用域大的”隐藏”,在java中不允许.
java中new出来的对象,只要你需要使用,就会一直保留下去,由垃圾回收器来辨别不使用的对象.
类基本成员默认值
类的某个成员是基本数据类型,及时没有初始化,java会自动初始化.
基本类型 | 默认值 |
---|---|
boolean | false |
char | ‘\u0000’(null) |
byte | (byte)0 |
short | (short)0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
但是上面的不适用于”局部”变量,如某个方法中有 int x; 那么x可能是任意值(同c和c++),但是编译时候会报错…
方法参数列表
尽管传递的是对象,然而实际上传递的是对象的引用,八大基础类型是个例外.
名字可见性
由于相同命名的冲突,java通过使用包来避免,自己的名字空间.
java支持向前引用,不过会引发小错误.
static关键字
在static的方法中只能访问静态方法和静态变量.
静态方法是属于类的,而普通方法是属于对象的
第一个java程序
java.lang这个包默认自动导入.其他的需要自己导入.
帮助文档
javadoc test.java
这句命令可以为test.java生成帮助文档,不过只会为public和protected进行文档注释,private和包内可访问成员会被忽略.
编码风格
采用驼峰标识,组成类名的单词第一个字母全大写,方法和字段(成员变量)第一个小写,其他第一个大写.比如
class AllTheColorsOfTheRainbow{
int anIntegerColor;
void changeColor(int color){
//something to do
}
}