(1)分支结构------Switch···case 语法: switch(expression){ case 1: //代码 break; case 2: //代码 break; ... default: }
Java7之前 expression的类型只支持byte、short、int、char
Java7之后添加了String和枚举
switch分支语句的执行是先对expression求值,然后依次匹配case后的值,遇到匹配的值即执行对应的执行体
如果所有的case标签后的值都不与expression表达式的值相等,则执行default标签后的代码块。
注意考点:case后语句满足条件时继续执行、直到遇到break语句时再输出
int i=3;
switch(i) {
case 1:
System.out.println(1);
case 2:
System.out.println(2);
case 3:
System.out.println(3);
case 4:
System.out.println(4);
break;
default:
System.out.println("没有匹配的值");
}
(2)循环结构
循环结构是指在满足某个循环条件的情况下,反复执行同一段代码,直到不满足循环条件为止。
初始化语句:一个或多个语句,这些语句用来完成一些初始化工作,在循环开始之前执行
循环条件:循环条件是一个布尔表达式,该表达式决定是否执行循环体
循环体:这部分是循环的主题,如果循环条件允许,该代码块将被反复执行,如果这个代码块只有一条语句,则代码块的花括号可以省略。
迭代语句:这部分在一次循环体执行结束后执行,在循环条件求值前执行,通常用于控制循环条件中的变量,使得循环在合适的时候结束。
for :
for(循环变量;循环条件;修改循环变量){
//循环体
}
for(::)是合法的
while:
while(循环条件){
//循环体
}
do...while:
do{
//循环体
}while(循环条件);
注意:while和do while的区别:while语句中先执行判断语句,为真执行循环体;do while 中先执行一遍循环体再执行判断,判断为真执行循环体,为假时跳出循环。
(3)使用break结束循环
使用break完全结束一个循环,跳出循环体,不管是哪种循环,一旦循环体中遇到break,系统将完全结束该循环,开始执行循环结构以后的代码。
•
package cn.bytecollege;
public class ForDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i;
for(i = 0;i<=5;i++) {
if(i==3) {
System.out.print("");
break;
}
System.out.println(i);//0 1 2
}
}
}
当变量i的值变为3的时候,满足if条件判断,此时进入if分支结构,进入以后遇到break,此时跳出循环。
break可以视为中断循环,即使循环还没有结束,也再不循环,直接结束,当然break也可以跳出多层循环。
(4)使用continue跳过此次循环
continue的功能和break有点类似,区别是continue只是跳出此次循环,继续执行剩下的循环,并不是完全终止循环。
package cn.bytecollege;
public class ForDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i;
for(i = 0;i<=5;i++) {
if(i==3) {
System.out.print("");
continue;
}
System.out.println(i);//0 1 2 4 5
}
}
}
(5)循环嵌套
当程序遇到循环嵌套是,如果外层循环的循环条件允许,则开始执行外层循环的循环体,而内层循环将被外层循环的循环体来执行,只是内层循环需要反复执行自己的循环体而已。
当内层循环执行结束,且完成循环的循环体执行结束时,在再次计算外层循环的循环条件,决定是否再次执行外层循环的循环体。
如:
package cn.bytecollege;
import java.util.Scanner;
public class TriangleDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入行数:");
int number = scanner.nextInt();
scanner.close();
System.out.println();
for(int i = 1;i<=number;i++) {
for(int k = 0;k<number-i;k++) {
System.out.print(" ");
}
for(int j = 1;j<=2*i-1;j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println();
}
}
(6)数组
概念:具有相同数据类型按照一定次序排练的一组数据的集合。
1. 存放在一个数组的元素必须数据类型相同,不能把不同类型的元素放进同一个数组。
2. 按照一定次序排列,数组中的元素是有序的,这句话包含两层含义,第一:元素是有顺序的。也可以理解为每个数组元素都有一个编号,这个编号是连续的(我们通常把这个编号叫做数组的下标或者索引);第二:元素存放的顺序和取出的顺序是一致的,也就是说存放元素的顺序是10,20,30,40。那么取出的顺序也是10,20,30,40。
3. 一组数据,一组数据是指元素的个数可以是0个,也可以是1个,也可以是多个,Java中允许数组中有0个元素,也就是我们所说的空数组。
(7)数组的声明
数据类型[] 数组名;
数据类型 数组名[];//通常不使用,容易造成混淆
(8)数组的初始化
int[] ary = new int[] {1,2,3};//静态初始化
int[] ary2 = {2,2,3};//静态初始化
int[] ary3 = new int[3];//动态初始化
int[3] ary4 = new int[] {1,2,3};//错误示例1:
int[] ary5 = new int[3] {1,2,3};//错误示例2:
初始化完成后数组在内存中所占的空间将固定下来,数组的大小将不会被改变
数组完成初始化后会在栈内存中开辟空间,其中存储的是堆内存中数组的首地址。
(9)数组的默认值
当数组动态初始化后,JVM会给数组的元素赋默认值,规则如下:
1. 整型的数组,默认值为0;
2. 浮点型的数组,默认值为0.0;
3. char类型的数组,默认值为'\u0000';
4. boolean类型的数组,默认值为false
5. 引用类型的数组,默认值为null//null指没有引用指向堆里面的任何区域
(10)冒泡排序算法
package cn.bytecollege;
import java.util.Arrays;
public class BubbleSort {
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] sortArray = {3,8,5,7,2,1};
for(int i = 0;i<sortArray.length-1;i++) {
for(int j = 0;j<sortArray.length-1-i;j++) {
if(sortArray[j]>sortArray[j+1]) {
int temp = sortArray[j];
sortArray[j] = sortArray[j+1];
sortArray[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(sortArray));//[1, 2, 3, 5, 7, 8]
}
}
今天