java标准定义数组方法: int [] sums;
c/c++定义方法演变过来的方法: int sums[];
数组的特点:内存空间大小 “上面的[20]” 定义以后就不能改变了。
数组的初始化
定义数组方案1:
int[] grade;
grade = new int[20];
定义数组方案2:
int[] value = new int[20];
double[] money = new double[10];
String[] str = new String[20];
int double String是最常见的三种类型的数组
数组的赋值
数组赋值的第一种方案
获取指定位置空间的值
int[] numbers = new int[10];
//获取第五个位置的值
System.out.println(numbers[4]);
//给数组里第一个 第二个空间赋值
numbers[0]=12;
numbers[2]= 20;
输入数组内每一个位置的值
先把值默认为0,后面再来动
数组赋值的第二种方案
用于在初始化数组的时候就知道用这些数据了,一些固定的数据
数组赋值的第三种方案
用于在初始化数组的时候就知道用这些数据了,一些固定的数据
问题:下标越界
数组定义了10个数,numbers【10】是第十一个数据了
数组在定义的时候空间就已经规定了,无法越界定义、越界查询
查询数组长度
用第三个方法初始化的时候,不能分开两行写 必须写在一起,。只有第一种new方法的时候才可以。
《《《考试题:判断该命名方式是否有问题》》》
练习:从数组中到最小值:把数组中第一个值作为判断标准
课堂练习:
把一个数组从小到大排列
因为一次循环,只能找到一个最大值,所以需要在这个循环外面再套一个循环
优化:当找到最大值以后,不需要再把倒数第二个数和倒数第一个数进行比较了,仅需对比之前的数
修改i的值。
这种方法称为冒泡排序法。
面试常出
/*用选择排序:
思路:
1. 将数组中剩下的没有排序的元素中选出最小的一个, 插入已经排序的后面
*/
public class xuanzePaixu {
public static void sort(int[] arrays){
int minIndex;//保存选择最小值的索引
for (int i = 0; i < arrays.length-1; i++) {
minIndex=i;
int minValue=arrays[minIndex];//保存每次循环最小值为循环的第一元素的值
for (int j = i; j < arrays.length-1; j++) {
//与每个元素比较如果小于最小值则交换值并且保存交换值的索引为最小值索引
if(minValue>arrays[j+1]){
minValue=arrays[j+1];
minIndex=j+1;
}
}
if(i!=minIndex)//判断如果最小值索引改变则把当前最小值与以排序的最后一个元素交换
{
int temp=arrays[i];
arrays[i]=arrays[minIndex];
arrays[minIndex]=temp;
}
}
}
public static void main(String[] args) {
int[] scores={90,70,50,80,60,85};
sort(scores);
for(int score:scores){
System.out.print(score+",");
}
}
}