1.对象存在什么地方。
a.寄存器
c和c++允许操作,java不允许。
b.堆栈
java的引用存这里,java知道堆栈里所有项的生命周期,以便上下移动。c和c++在此创建对象。
c.堆
存放java对象,编译器不知道对象的存活周期。
d.常量存储
直接存代码内部。
e.静态存储区
static的字样的数据存在这里,ram,java对象则不存这里。
f.非ram存储
存活在程序之外,如流对象,对象转化为字节流发送给另一台机器。
持久化对象,对象被放在磁盘上。
2.基本类型
new 的对象都在存在堆里。基本类型由于简单,所以存在栈里,高效。
boolean
char 16bits
byte 8bits -128 +127
short 16bits from -32768 to 32767
int 32bits from -2147483648 to 2147483647
long 64bits from -9223372036854775808 to 9223372036854775807
float 32bits
double 64bits
void
3.高精度数字
BigInteger 任意精度整数
BigDecimal 任意精度定点数。
速度换精度。
4.java数组
java数组确保初始化,且有范围检查,以少量内存开销和运行时下标检查为代价换来安全性和效率提高。
java数组存基本类型的话,编译器确保数组初始化为零。
5.作用域
{
int x=1;
{
int x=2;
}
}
为防止混乱,java认为重复定义,c++则会隐藏较大作用域变量。
6.对象作用域
{
String s = new String(“a string”);
}
作用域外 s引用失效。但是对象仍存在。
7.类的基本成员
当类的成员是基本类型,即使没有初始化,也会确保有个默认值。
当变量作为类的成员使用,java才确保给定默认值。(c++没有这样)
如果在某方法里定义 int x; x没有初始化,可能范围任意值。
8.方法名和参数列表 合成 方法签名 唯一标识出某个方法。
实验 public String method()
private int method()
被java认为是同一方法,报错。
9.注释
常见的注释 /* */ 或者//
注释文档 类,域,方法
//: object/Documentation1.java
/** A class comment */
public class Documentation1 {
/** A field comment */
public int i;
/** A method comment */
public void f() {}
} ///:~
还有一些标签,如@author,@param,@return ,@Deprecated