数组的定义
【变量】声明一个变量就是在内存空间划出一块空间
【数组】声明一个数组就是在内存空间划出一 串连续的相同类型的空间
数组的概念
开发公司开发部每月要统计40名员工平均工资、最高工资、最低工资。如果用变量记录的话:
double staff1 = 4050;
double staff2 = 6000;
double staff3 = 5500;
……
double avgPrice = (staff4+staff5+staff6…+staff7)/36;
变量声明太多 太繁琐 不利于数据处理
数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器
数组既可以存储基本数据类型,也可以存储引用数据类型
数组是一组相关数据的集合,一个数组实际上就是一连串的变量.
数组的声明规则
数据类型[] 数组名 = 初值
int[] array = new int[5];
注意:[ ]中5就是数组array的长度
数组的长度一旦给定 就不能修改
1.其中数据类型代表: 数组中盛放数据的 数据类型
2.数组使用下标(角标)来访问元素(保存元素) 下标从0开始
数组在内存中如何存储
第一步 声明数组(申请内存空间
)
第二步 分配内存空间(将申请到的内存分为几块
)
第三步 数组元素赋值(将信息放在内存空间中)
第四步 使用数组元素(使用内存空间中的信息
)
数组的常规状态
声明数组的两种方式
数据类型[ ] 数组名 = new 数据类型[大小] ;
数据类型[ ] 数组名 = null;
数组的常用方式
给分配好的空间格子放数据
方法一:边声明边赋值
int[ ] salary= {2000, 3000, 4000};
int[ ] salary= new int[ ]{2000, 3000, 4000};
方法二:动态地从键盘录入信息并赋值
Scanner input = new Scanner(System.in);
for(int i = 0; i < salary.length; i ++){
salary[i] = input.nextInt();
}
数据排列
public static void main(String[] args) {
int[] ages = {21,42,35,31,61};
double[] salary = {3000,2500,1500,6000,3400};
for (int i = 0; i < args.length-1; i++) {
for (int j = 0; j < ages.length-1-i; j++) {
if (ages[j]>ages[j+1]){
int temp = ages[j+1];
ages[j+1] = ages[j];
ages[j] = temp;
}
}
}
for (int i = 0; i < salary.length-1; i++) {
for (int j = 0; j < salary.length-1-i; j++) {
if (salary[j]<salary[j+1]){
double temp = salary[j+1];
salary[j+1] = salary[j];
salary[j] = temp;
}
}
}
System.out.println(Arrays.toString(ages));
System.out.println(Arrays.toString(salary));
}
取最值
public static void main(String[] args) {
int[] array = {51,74,2,65,23,15};
//取最大值
// int max = array[0];
// for (int i = 0; i < array.length; i++) {
// if (max<array[i]){
// max = array[i];
// System.out.println(max);
// }
// }
//取最小值
int min = array[0];
for (int i = 0; i < array.length; i++) {
if (min>array[i]){
min = array[i];
System.out.println(min);
}
}
}
数组元素的位移
public static void yiwei1(int []a){
for(int i=1;i<a.length;i++){
int temp=a[0];
a[0]=a[i];
a[i]=temp;
}
}
冒泡排序
int num = 0;
for (int i = 0; i < age.length - 1; i++) {
for (int j = 0; j <age.length - 1 - i ; j++) {
if (age[j] > age[j+1]){
num = age[j+1];
age[j+1] = age[j];
age[j] = num;
}
}
}
二维数组
<数据类型> [ ][ ] 数组名; 或者 <数据类型> 数组名 [ ][ ];
方法一、int [ ][ ] scores; //定义二维数组
scores=new int[5][50]; //分配内存空间
//或者
方法二、int [ ][ ] scores = new int[5][50];
注意:定义二维数组时,要定义最大维数
int [ ][ ] scores = new int[5][];
Arrays的使用
1 Arrays.toString(array) 数组的打印
System.out.println(Arrays.toString(array));
一般在服务器上打印日志的时候,会使用到这个方法
2 Arrays.sort(array); 数组的排序
会在原来的数组上修改
一般有自然排序的时候,会使用到这个方法
3 Arrays.copyOf(要复制的数组,指定新数组的长度)
会得到一个新的数组
一般在数组扩容的时候,会使用到这个方法
常见错误
使用数组时常见的错误
int[] age = new int[3];
age[0]=1;
age[1]=2;
age[2]=3;
age[3]=4;
System.out.println(age[2]);
//编译出错,数组越界
int[] age = new int[];
//编译出错,没有写明数组的大小
int[] age = new int[5];
age = {1,2,3,4,5};
double[] salary;
salary = {2000,3000,4000,5000,6000};
//编译出错,创建数组并赋值的方式必须在一条语句中完成