流程控制结构:
分支结构
根据分支条件来选择性的执行某段代码。
if:
switch:
case语句后面只能是byte、short、char、int四种整型类型,枚举类型和Java.lang.String类型(从Java 7才允许)。
default语句不省略。
break:
break语句可以结束switch语句、while、do while、for语句但是结束不了if语句。
Java中海油一种break标签,可以结束外层循环:
1 public class BreakTest2{ 2 public static void main(String[] args){ 3 //外层循环,outer作为标识符 4 outer: 5 for(int i = 0; i < 5; i++){ 6 //内层循环 7 for(int j = 0; j < 3; j++){ 8 System.out.println("i的值为:" + i + " j的值为:" + j); 9 if(j == 1){ 10 //跳出outer标签所标识的循环 11 break outer; 12 } 13 } 14 } 15 } 16 }
记住:这个外层循环标签是结束外层循环,不是跳到外层循环重新执行,切记!
break后的标签必须是一个有效的标签,即这个标签必须在其所在循环的外层循环之前定义。
标签和循环语句之间不要加任何语句。
continue:
用在for语句中。
循环结构
根据循环条件,重复执行某段代码。
while:
do while:
for:
foreach(jdk 5):
数组类型:
java的数组要求所有的数组元素具有相同的数据元素,即一个数组中只能存储一种数据类型的数据。
数组也是一种数据类型,它本身是一种引用类型:
int[] arrayName;//推荐使用这种
int arrayName[];
数组初始化:
静态初始化:
int[] arrayName;
arrayName = new int[] {1, 2, 3, 4};
或者定义初始化同时完成:
int[] a = {5, 6, 7, 8};
动态初始化:
int[] arrayName = new int[5];
数组不要同时使用静态初始化和动态初始化:
//错误的写法,int[]是类型,中括号中不能有值。
//错误的写法,不能同时使用静态和动态初始化数组。
Java中各类型的默认值:
整型(byte,short,int,long):0
浮点型(float,double):0.0
字符型(char):‘\u0000’
布尔类型(boolean):false
引用类型(类,接口,数组):null
使用数组:
访问数组元素:
若访问数组元素时指定的索引值小于0,或者大于等于数组长度,编译程序不会出现任何错误,但是运行时会出现异常:java.lang.ArrayIndexOutOfBoundsException:N
(数组索引越界异常),异常信息后的 N 就是程序员试图访问的数组索引。
所有数组都提供了一个length的属性,可以防止越界访问:
for(int i = 0; i < arrayName.length; i++)
foreach循环:
可以循环遍历数组和集合,使用foreach循环遍历数组和集合元素时,无需获得数组和集合的长度,无需根据索引来访问数组元素和集合元素,foreach循环自动遍历数组和集合
每个元素:
1 public class ArrayTest{ 2 public static void main(String[] args){ 3 String[] books = {"疯狂Java讲义", "疯狂Android讲义"}; 4 for(String book : books){ 5 book = "疯狂Ajax讲义"; 6 System.out.println(book); 7 } 8 System.out.println(books[0]); 9 System.out.println(books[1]); 10 } 11 }
想一想上面的输出结果,并理解为什么会有这样的结果?
Java 8增强工具类:Arrays
Arrays类中包含了如下几个Static修饰的方法。//类中静态方法可以用 类名.方法名()调用。省去了创建对象的麻烦。
1.int binarySearch(type[] a, type key);//使用二分法查询key元素在a数组中的索引值,若不包含key,则返回负数。a数组中元素已经按升序排列
2.int binarySearch(type[] a, int fromIndex, int to Index, type key);//使用二分法查询key元素在a数组中的索引值,只搜索a数组中从fromIndex到toIndex索引的元素,若不
包含key,则返回负数。a数组中元素已经按升序排列
3.type[] copyOf(type[] original, int length);//把original数组复制成一个新数组,length是新数组的长度。若length小于original数组的长度,则新数组就是原数组前面length个
元素;若length大于original数组的长度,则新数组的前面元素就是原数组的所有元素,后面按java默认值补充。
4.type[] copyOfRange(type[] original, int from, int to);//和上面方法相似,但是只复制从from到to索引的元素。
5.boolean equals(type[] a, type[] a2);//若a数组和a2数组的长度相同,且两者中元素也一一相同,该方法将返回true
6.void fill(type[] a, type val);//把a数组的所有元素都赋值为val
7.void fill(type[] a, int fromIndex, int toIndex, type val);//与上面方法类似,但是只将fromIndex到toIndex索引的元素赋值为val
8.void sort(type[] a);//对a数组的数组元素进行排序,为升序
9.void sort(type[] a, int fromIndex, int toIndex);//与上面方法相似,但是只将fromIndex到toIndex索引的元素排序,为升序
10.String toString(type[] a);//将一个数组转换为字符串,若数组元素为0,1,2,3,4,则输出为[0, 1, 2, 3, 4],前后有中括号,中间以逗号和空格间隔。