Think In Java 第二章 一切皆对象
句柄 & 对象
尽管将一切都“看作”对象,但操纵的标识符实际是指向一个对象的“句柄”,例s为句柄,String("abcdef")为对象
String s = new String("abcdef");
注:创建一个句柄时,记住无论如何要初始化
内存分配
寄存器:根据需要由编译器分配,我们对此没有直接的控制权
堆栈:驻留于常规 RAM(随机访问存储器)区域,但可通过它的“堆栈指针”获得处理的直接支持。对象句柄一般保存在其中。
堆:一种常规用途的内存池(也在 RAM区域),其中保存了Java 对象。
静态存储:程序运行期间,静态存储的数据将随时等候调用,可用static 关键字指出一个对象的特定元素是静态的。
常数存储:常数值通常直接置于程序代码内部
非RAM 存储:若数据完全独立于一个程序之外,则程序不运行时仍可存在,并在程序的控制范围之外。两个最主要的例子便是“流式对象”和“固定对象”。
基本类型
这些变量容纳了具体的值,并置于堆栈中,能够更高效地存取。
>boolean 1位 - - Boolean
char 16位 Unicode 0 Unicode 2的16次方-1 Character
byte 8位 -128 +127 Byte
short 16位 -2 的15次方 +2的 15次方-1 Short
nt 32位 -2的31次方 +2的31次方-1 Integer
long 64位 -2的63次方 +2的63次方-1 Long
float 32位 IEEE754 IEEE754 Float
double 64位 IEEE754 IEEE754 Double
Void
高精度数字
高精度的计算:BigInteger和 BigDecimal
作用域
在作用域里定义的一个变量,它只有在那个作用域结束之前才可使用
注:Java中同c++不同,下面写法Java认为是非法的
{
int x = 12;
{
int x = 96; /* illegal */
}
}
构建Java程序
名字的可见性:java的设计者鼓励程序员反转使用自己的Internet域名
使用其他组件:import 关键字准确告诉Java 编译器我们希望的类是什么
static关键字:静态对象、静态变量
注释和嵌入文档
//:Property.java
import java.util.Date;
import java.util.Properties;
/** The first Thinking in Java example program.
* Lists system information on current machine.
* @aurhor Bruce Eckel
* @author http://www.BruceEckel.com
* @version 1.0
* */
public class Property {
/** Sole entry point to class & application
* @param args array of string arguments
* @return No return value
* @exception exception No exception thrown
*
* */
public static void main(String [] args) {
System.out.println(new Date());
/** 一个变量注释 */
Properties p = System.getProperties();
p.list(System.out);
System.out.println("---Memory Usage:");
Runtime rt = Runtime.getRuntime();
System.out.println("Total Memory = "
+ rt.totalMemory()
+" Free Memory ="
+ rt.freeMemory());
}
}///:
用于提取注释的工具叫作javadoc,javadoc输出的是一个 HTML 文件,可用自己的Web 浏览器查看。