- 字符串可以用带引号的文本初始化
- 五个地方可以存储数据:
- 寄存器:最快的存储区,位于处理器内部。数量有限,根据需求进行分配。用户不能直接控制,也不能在程序中感觉到寄存器的存在(C和C++允许向编译器建议寄存器的分配方式)
- 堆栈:位于通用RAM(随机访问存储器)中,通过堆栈指针可以从处理器那里获得直接支持。堆栈指针若向下移动,则分配新的内存。若向上移动,则释放这些内存。堆栈快速有效的分配存储方法,仅次于寄存器。对象的引用存储于对战中,但Java对象并不存储于其中
- 堆:一种通用的内存池(也位于RAM区),用于存放所有java对象。编译器不需要知道存储的数据在堆里存活多长时间。当执行new时,会自动在堆里进行存储分配。为这种灵活性必须要付出相应的代价:用堆进行存储分配和清理可能比用堆栈进行存储分配需要更多的时间。
- 常量存储:常量值通常直接存放在程序代码内部。有时会存放在ROM中
- 非RAM存储
- Java中所有数值类型都有正负号
- 操作的标识符实际上是对象第一个引用,类似于指针
- Java的主要目标之一是安全性,Java确保数组会被初始化,而且不能在它的范围之外被访问。范围检查是以每个数组上少量的内存开销及运行时的下标检查为代价的。
- java提供了两个用于高精度计算的类,BigInteger和BigDecimal,两者没有对应的基本类型,但能用于int或float操作,也同样能作用于BigInteger或BigDecimal。
- BigInteger支持任意精度的整数
- BigDecimal支持任意精度的定点数
- 每个引用都会自动被初始化为一个特定值,为null,java看到null,就知道这个引用还没有指向某个对象
- java对象不具备和基本类型一样的生命周期,当用new创建一个Java对象时,它可以存活于作用域之外。
- java有一个垃圾回收器,用来监视用new创建的所有对象, 并辨别那些不会被再引用的对象,随后释放这些对象的内存空间,以便供其他新的对象使用
- 基本类型及其创建时的默认值为:
- boolean false
- char \u0000
- byte (byte)0
- short (short)0
- int 0
- long 0L
- float 0.0f
- double 0.0d
- 这种确保初始化的方法并不适用于”局部变量“
- 函数传递的变量实际上也是引用
- 当声明一个事物是static时,就意味着这个域或方法不会与包含它的那个累的任何对象实例关联在一起,所以即使从未创建某个类的任何对象,也可以调用其static方法或访问器static域
- 引用一个static变量有两种方法,可以通过一个对象去定位它,也可以通过其类名直接引用,这对于非静态成员是不行的
- 通过一个对象来引用某个静态方法也可以通过特殊的语法形式ClassName.method()加以引用
- java.lang会被自动导入到每个java文件中,它可以被直接使用
- java中的main()方法的参数是一个String对象的数组,用来存储命令行参数
- 一些javadoc标签见 P34~P35,
- 所有的javadoc命令都只能在/**注释中出现,和通常一样,注释结束于*/,javadoc只能为public和protected成员进行文档注释,private和保内可访问成员的注释会忽略掉
- java的编码风格,类名的首字母要大写,如果类名由几个单词构成,那么把它们并在一起,其中每个内部单词的首字母都采用大写形式