Java是建立在C++之上的更为“纯粹”的面向对象的语言,Java中一切都是对象。
C或C++是通过指针间接的操控对象,而Java是通过reference操控对象。Java中除了primitive(原始)类型以外,所有类型的对象须程序创建。为了效率,primitive类型的对象可不用new来创建,而且创建的是一个“非reference”的“自动”变量,这个变量保存的值存储在栈中,所以效率更高。Primitive类型包括boolean(t/f),char(16bit,unicode),byte(8bit),short(16bit),int(32bit),long(64bit),float(32bit),double(64bit)和void;另外还有两个比较特殊的BigInteger和BigDecimal。在Java中创建数组,实际上是在创建reference的数组,这些reference会自动被初始化为一个null,所以在使用reference以前,必须用对象进行赋值。
Java中数据可以存储到六个地方:1.寄存器(registers):速度最快,由编译器分配;2.栈(stack):位于“常规内存区”,处理器可以通过栈指针直接访问,栈指针下移创建新空间,Java一般把对象的reference放在栈里,但对象没有放在这里;3.堆(heap):是一段“多用途的内存池”,所有Java对象都保存在这里。同栈不同,堆的优点是分配空间时,编译器无需知道该分配多少空间,或者这些数据会在堆里呆多长时间,因为使用堆比较灵活,直接用new就行了;4.静态存储(static storage):还是存放在RAM中,整个程序运行期间都可以访问,可以用static申明;5.固定存储(constant storage):常量值通常直接放在程序里,这样就更安全;6.非内存的存储(Non-RAM storage):完全独立于程序,主要有“流对象”和“persistent对象(保存在磁盘上)”。
作用域:eg:{ String s = new String (“a string”); },S这个reference会在作用域结束之后消失,但是S所指的那个String仍然还占着内存。Java的垃圾回收器会自动回收由new创建的且已经没有reference所指的对象。
构建Java程序:namespace一般用域名来避免重复,net.yanhuohy;用import导入其他包中的类,只有java.lang是被默认import进去的;static数据和方法在没有被连到类的任何一个实例之上,也可以直接访问。
注释可以采用/** .. */,这样可以用Javadoc提取,也可以嵌入HTML命令,详细参照javadoc的语法。
编程风格:第一个字母大写来表示一个类的名称,第一个字母小写来表示其他的如方法,数据成员,变量等;对所有都一样的是,如果一个名称里面有多个单词,不要用下滑线,直接连接在一起,但后面的单词首字母都采用大写。