条件循环:
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开始
-
List item
练习:nXn的二维数组
逆转矩阵
1 2 3 1 4 7
4 5 6 --> 2 5 8
7 8 9 3 6 9