FKJAVA读书笔记--第四章--流程控制与数组

来源:互联网 发布:淘宝法莎莉雅手办 编辑:程序博客网 时间:2024/05/29 18:32

1.使用if..else..语句时,先处理包含更小的情况。

 

2.For循环的循环条件中的两个分号是必须的,里面的内容可以省略

 

3.for循环的初始化条件放在定义之外,并把循环迭代语句放在循环体内===》这样做就非常类似于while循环。

 

4.对于for循环而言,循环条件总比循环体要多执行一次,因为最后一次执行循环条件返回false,将不再执行循环体。

 

5.switch语句必须要搭配break语句,不然会出现错误。根本原因是switch的机制,switch只要判断一个满足,就会执行下面所有的语句,不在判断case,至到遇到break,才会跳出来。

 

6.java1.7版本增加了switch语句对String类型的支持。

 

7.break后面可以接一个标签,用于跳出循环。。这个标签要是外循环才有意义,因为break默认就是跳出自身的循环。

 Continue也可以跟一个标签,用法和break接标签一样。

 

8.continue:结束这次循环,进行下次循环;break结束所有的循环。

 

9.一个数组里的类型必须是唯一的。但可以使多种类型,只是这些类型存在继承关系。

 

10.数组是引用类型。因此使用它定义一个变量时,仅仅表示了一个引用变量(如C中的指针概念)定义数组时不能指定它的长度 初始化之后才可以,因为定义好一个数组之后(仅仅表示定义了一个指针)这个引用并没有指向任何有效的内存,因此定义数组时不能指定数组长度。

 数组初始化之后,就会在内存中分配了一块内存,这个时候即使这块内存中什么都没有,这个数组也是被初始化的,只是初始化值是null

 Int [] a={1,2,5,6};   简化的静态初始化 系统决定了数组的长度

 Int [] a= new int[4];  只指定数组长度,由系统初始化每项的初始值,动态初始化

不要同时静态初始化和动态初始化

 

11.String也是引用类型

 

12.使用foreach循环迭代数组元素时,并不能改变数组元素的值,因此不能对foreach循环变量进行赋值操作。

 

13.内存中的数组:实际的数组对象存放在堆内存中,如果数组的引用时一个局部变量,那么它存在栈内存中。

 

14.每个方法执行时,其内部的局部变量都会在这个方法的内存栈中把自己放进去。随着方法的结束,这个方法的内存栈会被销毁。

  如果一个变量要被全局调用,就把它放进堆内存(运行时数据区)中,但这对象的创建成本就会比较大

  即使后来方法栈销毁了,其对应的堆内存对象也不会一下子消失,说不定有其他的变量在引用它。

 

15.当我们看数组时,需要把它看做两个部分,一个是看得到的数组引用,即我们定义的变量名,还有一个就是看不到的在堆内存中的真实数组数据。我们只能通过引用去访问。

 

16.int[] [] a=new int[4][];   这个看上去是个二维数组,其实是一个一维数组,并且如果为int[0]=new int[2];   这个时候int[0] 不可以再无限扩展下去,因为java是强类型语言,这里int[0][1]只能指向一个int类型的值

 

17.Arrays类下面有许多类方法,非常实用:String toString(array),void sort(arry),int binayrSearch(arry,key);

0 0
原创粉丝点击