2004-09-27
学习java虚拟机规范之前,已经有了心理的准备,像我这种从应用中开始真正了解计算机的人,可能会遇到许许多多的问题,很多关于底层的,硬件级别的概念可能会无法理解,但是只要能开始,就是进步,不是吗。
第一章:前言
************************************************************************************************
java虚拟机假定任何实现技术或主机平台,它并不非得是解释型的,它也可以像传统的程序设计语言一样,通过把它的指令集编译成一个实际的CPU指令集来实现。它也可以直接用微代码或者直接用芯片来实现。
第二章:Java概念
(这个部分是对Java语言的介绍,这里罗列出一些比较细节的概念)
1、Java语言使用Unicode1.1.5版编写。
2、除了注释、字符、字符串、标识符之外,Java程序的所有输入元素都是ascii码形式。
测试证明变量定义可以使用中文。
3、字符串文字以及更一般的常数表达式的值的字符串,被用方法String.inter内部化以共享惟一的实例。
4、整型和引用类型可以转化为boolean型,非零和非null都为true。(以标准C++的方式x!=0和obj!=null)
5、三种引用类型:类引用,接口引用,数组引用,所有对象包括数组都支持Object类的方法。
6、执行顺序:装载类---链接一个类型或者类(检验,准备和可选的解析)---初始化(这个初始化可能引起相关父类的初始化动作)
7、类实例退出的时候自动的调用finalize()方法
8、类卸载的时候自动调用classFinalize()方法。
9、虚拟机退出的条件:1、所有非守护线程中止。2、显式调用了Runtime或者System的exit方法
************************************************************************************************
6、变量是一种存储位置,有相应的类型,称为编译期类型,可以是引用类型,也可以是基本类型。
问题:变量本身是怎样的一个存在,它的结构如何。
7、java语言中多次提到基本数值类型的特殊值NaN,但是不知道其表现和使用。
2004-6-3凌晨1点,读至2、16 执行,31页。
2004-6-3下午五点:读至34页
2004-6-6晚上8:30-10:30,读至第三章:java虚拟机结构:41页
为了了解i=i++的奥秘,我提前阅读了第八章:线程和锁,好像能够理解,结果又被全盘推翻了。(通查网上的说法:i=i++的特殊之处在于i++,或者说是++操作符的实现,i++操作的方式是1:将i值拷贝一份到另一内存区域,2、对原i值执行++操作,3、将i++的结果放入新分配的区域内,而对于i=i++,就多了第四步:4、将i++值回写到i的存储区域中),但java为什么这么实现不是很清楚