数组
一、内容回顾
1、数组的声明方式有哪些?
1、int[] ary;
ary=new int[10];
2、int[] ary=new int[10] ; //长度必要的 否则报错
3、int[] ary=new int[]{12,23,34};
4、int[] ary={12,23,34};
2、数组复制的方式有哪些?
强调:创建了长度更长的新数组,把原数组里的内容,复制到新数组中
方式1:编码,通过遍历逐个元素复制到新数组中
方式2:System.arraycopy()
方式3:Arrays.copyOf(aryScore, 7)
3、int[] ary={12,3,20,34,56,50,10};
编写方法,参数是数组,返回值是数组索引为奇数的元素的和
4、int num1=2;
int num2=3;
++num1 + num2++ + ++num1 + num2 的值是多少
5、int[] ary={12,30,23,20,30,35,20}
如何去除数组的重复元素
二、今日内容
1、晨考讲解 作业题
2、数组的排序
3、数组的应用
4、多维数组 扩展
数组的操作:数组的扩容 复制 去重 排序 查找
ArrayIndexOutOfBoundsException 数组越界异常
1、可变参数
调用方法时,实参和形参要一一对应:个数、类型、顺序
形参:可以变化的
public static void main(String[] args) {
// TODO Auto-generated method stub
//调用方法:调用可变参数的方法时,方法的参数不用传递数组,直接传递类型相同的值即可
//getName2("哈淳鑫","王岩","周翔","小肖");
String[] names={"哈淳鑫","王岩","周翔","小肖"};
getName2(names);
printNum(1,2,3,4,5,6,7);
}
//随机点名
//参数:可变参数
public static void getName2(String...names){
//String...names 可变参数,在方法体内部就当做String类型的数组来用
Random rd=new Random();
int index=rd.nextInt(names.length);
String name=names[index];
System.out.println(name+":请回答问题");
}
//方法中既有普通参数又有可变参数,可变参数一定在参数列表的最后
public static void printNum(int num1,int num2,int...nums){
System.out.println(num1);
System.out.println(num2);
for(int i=0;i<nums.length;i++){
System.out.print(nums[i]+" ");
}
}
2、数组的排序 重点
int[] ary={12,100,10,34,3,80,300,56};
升序排序:从小往大排
降序排序:从大往小排
冒泡排序:两两相邻元素进行比较,交换位置
//冒泡排序
int[] ary={2,300,45,100,23};
System.out.println("排序前:");
ArrayUtil.printIntAry(ary);
//外层控制比较的轮数
for(int i=0; i<ary.length-1; i++){
//内层是每一轮中,两两相邻进行比较
for(int j=0; j<ary.length-i-1; j++){
if(ary[j]<ary[j+1]){
//交换
int temp=ary[j];
ary[j]=ary[j+1];
ary[j+1]=temp;
}
}
}
System.out.println("排序后:");
ArrayUtil.printIntAry(ary);
选择排序:某个元素,和其后面的每个元素都进行比较,交换位置
//选择排序
int[] ary={2,300,45,100,23};
System.out.println("排序前:");
ArrayUtil.printIntAry(ary);
//外层循环控制轮数
for(int i=0; i<ary.length-1; i++){
for(int j=i+1;j<ary.length; j++){
if(ary[i]>ary[j]){
int temp=ary[i];
ary[i]=ary[j];
ary[j]=temp;
}
}
}
System.out.println("排序后:");
ArrayUtil.printIntAry(ary);
作业:输入一个数,判断其是否在数组中
类型:数组查找,使用二分法查找
1、先排序
2、二分法
3、二维数组
一维数组:数组的元素就是普通值
二维数组:数组的元素又是一个数组
超级面试题:二维数组,八皇后
声明方式同一维数组
总结:
1、可变参数
2、数组排序:
冒泡排序
选择排序
3、二维数组
声明
赋值
遍历
作业题:
1、梳理技能点
2、重做讲过的案例 重点
3、文档题
4、二分法查找数组元素