惭愧,昨天的日志,留到今天写.今日事今日毕,该打.
首先, java程序结构与c++一样,都有顺序结构,选择结构和循环结构.语法也一模一样. 忽略.
至于数据类型,占用的内存大小都是固定的. 其中比较难的 浮点型数据. float类型数据占用32字节的内存.
引用文档里的说明:"
In all other cases, let s, e, and m be three values that can be computed from the argument:
int s = ((bits >> 31) == 0) ? 1 : -1; int e = ((bits >> 23) & 0xff); int m = (e == 0) ? (bits & 0x7fffff) << 1 : (bits & 0x7fffff) | 0x800000;
Then the floating-point result equals the value of the mathematical expression s·m·2e-150.
浮点数用2进制表示的话,用0-31分别代表各2进制位的话.这里的s代表31位,是浮点数的符号位,决定正负.
e代表30到23位,为浮点数的幂指数. m代表浮点数的有效位.这就是一个浮点数的内存结构,使用上面的表达式可计算出浮点数的值. 浮点数的值可以是无穷大,也可以不是一个数"NaN",也有最大值和最小值. 需要注意的是,由于浮点数是有精度的. 所以浮点数不能进行"相等"的判断,如: float x= 3.141 if( x == 3.14), 这样的判断是错误的. 所以浮点数的判断 一般都用 一个区间来比较, 如:
if( x >3.14 || x < 3.15), 一般采用 大于和小于的判断.
java的数组: (和C++有很大的不同)
首先来定义一个数组: int [] x;
为其分配空间: x = new int[100];
这里的数组,可以理解为一个数组对象,是一个变量. 它不象C++,在c++里它是一个指针常量,定义时一般指定数组大小,如:
int x[5],此时系统就会分配栈的内存给它.
而在java里,数组是一个对象类型, 这个对象类型有点象c++里的指针(java已经取消的指针),必须要用new来分配一个 堆中的空间给它才能使用.它不能象c++里的数组一样,一开始就设定大小. 其实这里的数组同时占用了 栈和堆的内存. 数组申请的是堆的空间, 而数组对象这个变量本身也占用了栈的内存,里面记录堆空间的起始地址.所以说,java比较吃内存. 当x=null时,就会被java的垃圾回收器给回收.所有new所申请的空间,垃圾回收器都会帮我们回收,比c++安全方便多了。不过java保留和c/c++一样的数组使用方法,使用下标来操作数组元素,很容易理解.
不过java的数组还有很多优点,如获得数组的长度. 由于数组是一个对象, 通过访问数组的length成员,就能快速获得.
java的二维数组也比C++中的灵活,它可以规则也可以不规则,如:
int [][] xx = new int[2][3]; 规则
int [][] xx = new int[2][];
xx[0] = new int[3];
xx[1] = new int[4];
所以java中的二维数组应该称为数组的数组才更贴切.
java还提供了许多库,来帮助我门对数组的操作. 如java.util.arrays,里面的函数我门都可以方便使用.
今天先到这里.