条件循环:
while(条件){
}
for(初始化循环变量;循环条件;改变循环变量){
循环体
}
do{
}while(条件);
break 结束整个循环
continue 结束本次循环 跳过continue下面的语句 直接进行下一次循环
标签
break 标签;
数组: 定义一组变量
变量单个单个定义
保存一个学生的单科成绩 int s = 89;
有三个学生 int s1=89,s2=90,s3=100;
定义数组: 定义数组变量
类型[] 数组名 = new 类型[数组长度];
//定义了一个长为10的数组 数组里存储元素的类型是int
int[] arr = new int[10];
//定义了一个长度为5的数组 数组里在座元素的类型是double
double[] brr = new double[5];
数组里的变量都和数组名同名,只能通过下标的形式来区分每一个变量
下标: 是从0开始递增,到数组长度-1
下标不要越界(不要超过泛围,否则将报错
java.lang.ArrayIndexOutOfBoundsException)
数组下标越界异常
数组名.length 可以获得数组的长度
练习: 定义一个数组,数组长度为10
从键盘输入10个数字保存到数组中
把这10个数字输出来
找出这10个数字里面的最大值
把这个数组中的元素逆序
数组最关键的问题 通过下标访问 下标的取值是从0开始
练习:把100以内的质数 放到一个数组里面
然后再输出
生成6个不重复的[1-31]的数字,然后显示
Random rand = new Random();
int i = rand.nextInt(31) + 1;
数组 缩放
数组在定义之后元素会自动进行初始化
数值 0
布尔 false
字符串 null
数组初始化:
动态初始化: 类名[] 数组名 = new 类型[数组长度];
静态初始化: 类名[] 数组名 = new 类型[]{v1,v2,v3,...};
类名[] 数组名 = {v1,v2,v3,...};
静态初始化时不能指定数组长度,根据{}值的个数来决定
Arrays.toString(数组名);
把数组里面的元素转换化一个字符串
Arrays.copyOf(数组,数组长度)
缩放数组 并且保留元素
如果是对数组扩容,则会复制原数组里面所有的元素 且 扩容部分填充默认值
如果是缩小数组大小,则数组里的元素减少
System.arraycopy(src, srcPos, dest, destPos, length);
src: 源数组
srcPos: 源数组下标位置
dest: 目标数组
destPos: 目标数组下标位置
length: 拷贝长度
从源数组src的下标位置srcPos拷贝length个元素到目标数组dest的下标位置destPos
如果源数组的元素个数不够或者目标数组存储不下都将导致异常
java.lang.ArrayIndexOutOfBoundsException
练习:
交换两个数组的值
int[] arr = new int[]{1,2,3,4};
int[] brr = new int[]{5,6,7,9,10};
基本数据类型 8种
引用数据类型
二维数组:
数据类型[][] 数组名 = new 数据类型[二维数组长度][一维数组长度];
new 数据类型[行][列]
唯一标识一个元素:由行和列才能确定唯一的那个元素
行和列: 下标
下标都是从0开始
练习:nXn的二维数组
逆转矩阵
1 2 3 1 4 7
4 5 6 --> 2 5 8
7 8 9 3 6 9
数组:
基本数据类型 java只有8种
引用数据类型
一维数组:
类型[] 数组名 = new 类型[数组长度];
类型[] 数组名 = {v1,…};
类型[] 数组名 = new 类型[]{v1,v2,…};
下标:从0开始,到数组长度-1
数组名[下标] 访问数组里的元素
数组长度: 数组名.length
for(int i=0;i<数组名.length;i++){
数组名[i]
}
二维数组:
类型[][] 数组名 = new 类型[二维数组长度][一维数组长度];
int[][] crr = new int[3][4];
当访问一个没有引用具体对象的引用变量时将引发以下异常:
java.lang.NullPointerException
练习:
要保存杨辉三角形的前7行
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
练习:
有4个班级
5个学生
6个学生
7个学生
9个学生
控制台输入 保存这些学生的成绩
找出每一个班的最高成绩 以及 所有班级里成绩最高的
39题 约瑟夫问题:
有n个编号(1-n)小孩围成一圈,从第1个小孩开始依次进行重复报数 1-3
报到3数字的小孩出列,求最后剩下的那个小孩子的编号
Arrays.toString();
数组名.length
数组名.copyOf(数名,数组长度);
System.arrayCopyOf(src,srcPos,dest,destPos,length);