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);
FKJAVA读书笔记--第四章--流程控制与数组
最新推荐文章于 2015-10-06 13:44:27 发布