《疯狂Java讲义》 4-流程控制与数组
总结
1、流程控制
和C++类似。
switch用的较少,留意一下:Java7后expression还可以是字符串类型。
switch与if不同,起始点非常清晰,故每个case的花括号可以省略。
break不能少,否则一旦匹配则不再判断之后,都会输出。
while,do while,for Java也有,而且用法一致
break,continue,return亦同。
break还可以结束外层循环,这时break后紧跟标签(一个紧跟冒号的标识符,放在循环语句前)。continue也是。
return结束整个方法。
2、数组
2.1 Java的数组
存储同种类型数据的一种数据结构。
注意:Java定义数组时,不能指定长度。得在初始化中指定以分配内存空间。
其中 new type[]可省略,直接与定义同时进行。
type应是定义的子类,此时初始值根据类型确定,为0或null等。
!不要同时使用静态和动态初始化。
Java数组索引从0开始!Java数组有.length属性,可用于循环。
该形式无需获得数组长度。
2.2 深入数组
数组引用变量指向有效内存。
实际数组对象存储在堆内存中,引用变量如果是局部变量,存储在栈内存中。
定义并初始化数组后,内存中分配了两个空间,引用变量&数组本身。故引用变量可以随时指向同类型的其它数组,造成长度可变的假象。emmm,C++中动态数组又是什么呢?
如果从数组底层运行机制来看,没有多维数组,只是数组元素为引用类型。
同时初始化为0;
Java的Arrays类有很多应用于数组的方法。如equals,fill,sort,toString等,见P128.
及一些并发支持方法,如parallelSort()。
问题
1、C++的数组实现原理和Java一样吗,它的动态数组是怎么实现的?