一、流程控制
package Capter4_流程控制与数组;
public class Process_structure {
public static void main(String[] args){
System.out.println("------------------分支结构if、switch--------------");
String season="夏天";//整数类型、String类型、枚举类型,不能是boolean类型
switch (season) {
case "春天":
System.out.println("春暖花开");
break;//表达式与case标签的值相等,则执行该case后所有的代码,不再进行条件判断,因此需要有break语句
case "夏天":
System.out.println("夏日炎炎");
break;
case "秋天":
System.out.println("秋高气爽");
break;
case "冬天":
System.out.println("冬雪皑皑");
break;
default:
System.out.println("季节输入错误");
}
System.out.println("------------------循环结构while、do while、for--------------");
int count=0;
//满足条件则执行循环体
while(count<2){
System.out.println(count++);
}
do{
System.out.println(count++);
}while(count<4);
//do while 先执行循环体再判断,因此无论如何都会执行一次
for(int i=0;i<2;i++){
System.out.println(i);
}
//for循环判断条件、执行循环体、执行循环迭代条件。如果循环体不能完全执行(如使用continue结束),循环迭代条件会执行
//while与do while的循环迭代条件紧跟着循环体,如果循环体不能完全执行(如使用continue结束)则循环迭代条件不会执行
System.out.println("------------------控制循环结构continue、break、return--------------");
for(int i=0;i<2;i++){
for(int j=0;j<3;j++){
System.out.println("i的值是:"+i+","+"j的值是:"+j);
if(j==1){
break;//break结束的是本层的循环
}
}
}
System.out.println("the first break is off");
outer:
for(int i=0;i<2;i++){
for(int j=0;j<3;j++){
System.out.println("i的值是:"+i+","+"j的值是:"+j);
if(j==1){
break outer;//结束标记所在的循环
}
}
}
System.out.println("the break test is off");
//continue
for(int i=0;i<3;i++){
for(int j=0;j<5;j++){
System.out.println("i的值是:"+i+","+"j的值是:"+j);
if(j==3){
continue;//与break类似,区别在于只是忽略了continue后面语句的执行
}
System.out.println("执行continue语句");//即是continue时,不执行该句
}
}
System.out.println("the first continue is off");
outer:
for(int i=0;i<3;i++){
for(int j=0;j<5;j++){
System.out.println("i的值是:"+i+","+"j的值是:"+j);
if(j==3){
continue outer;//忽视标签所指定的循环所剩下的语句
}
}
System.out.println("执行continue语句");
}
System.out.println("the continue test is off");
//return
//return不专门用于结束循环,return的功能是结束一个方法,return直接结束整个方法,不管处于多少层循环之内
for(int i=0;i<3;i++){
for(int j=0;j<5;j++){
System.out.println("i的值是:"+i+","+"j的值是:"+j);
if(j==1){
return;
}
System.out.println("未执行return语句");
}
}
}
}
二、数组
package Capter4_流程控制与数组;
import java.util.Arrays;
import Reference_class.Person;
public class Array_type {
public static void main(String[] args){
System.out.println("------------------基本类型数组初始化--------------");
//静态初始化与动态初始化
//数组初始化完成后,在内存的空间就会固定下来,因此数组的长度不可变。即使将数组清空、其空间仍然保留下来
int[] a1={1,2,3,4};
int[] a2=new int[4];
System.out.println("------------------引用类型数组初始化--------------");
Person[] students = new Person[2];
Person zhang = new Person();
zhang.setAge(15);
zhang.setHeight(158);
Person lee = new Person();
lee.setAge(15);
lee.setHeight(158);
students[0]=zhang;
students[1]=lee;
//引用变量students、zhang、lee位于方法的栈区,其实际的元素对象位于堆区。
//lee、students[1]指向同一个堆内存,因此共享操作
lee.info();
students[1].info();
System.out.println("------------------JAVA 8 Arrays工具类--------------");
int[] a = {3,-4,25,16,30,18};
int[] b = Arrays.copyOf(a, a.length);
System.out.println( Arrays.equals(a, b ) ? "两数组长度一致,对应元素相等":"两数组不相等");
Arrays.fill(b, 0,1,1);//范围为左闭右开的形式
Arrays.sort(b);
System.out.println(Arrays.toString(b));
System.out.println("------------------JAVA 8 Arrays并行处理工具类--------------");
Arrays.parallelSort(a);
Arrays.parallelPrefix(a, (int x,int y)->x*y );
//一个XxxBinaryOperator函数式接口类,left表示数组中前一个索引(计算第一个元素时left=1),right表示数组中的当前索引
//这些方法都是直接对数组本身的操作,也加入操作的元素所在的范围
Arrays.parallelSetAll(a, (int x)->(x/5));//设置数组元素的值
//spliterator转化为spliterator对象
}
}