理解数组作用:
数组本身是一个变量,存储相同数据类型的一组数据
声明一个变量: 内存空间划出一块合适的空间
声明一个数组: 内存空间划出一串连续的空间
数组基本要素:
标识符——数组名
数组元素——值(必须属于相同的数据类型)数数组中的所有元素必须属于相同的数据类型组中的
元素类型——类型
元素下标——从0开始(即索引,目录的概念)
数组地址——数组本身的值
数组长度固定不变,避免数组越界
如何使用数组:
1. 声明数组 int[] a;//即告诉计算机数据类型是什么,声明数组时不规定数组长度
2. 分配空间 a=new int[5];//空间分配的长度不能空白,0,小数或者负数;用于告诉计算机分配几个连续的空间
3.赋值 a[0]=8;
4.处理数据a[0]=a[0]*10;
PS 同时声明数组并分配空间
数据类型[] 数组名=new 数组类型[大小]
int[] a=new int[5];
数组元素根据类型不同,有不同的初始值
数组赋值:
1. 边声明边赋值 int[] scores={88,99,77};(集合赋值写法只能按范例整行输出,不能第一行声明,第二行赋值scores={})
2. 动态的从键盘录入信息并赋值
Scanner input = new Scanner(System.in);
for(int i = 0; i < 30; i ++){
scores[i] = input.nextInt();
}
范例:
public class Demo { public static void main(String[] args){ int [] a={12,20,32,55,8}; int sum=0; for(int i:a){//增强for,格式(类型 临时变量:数组名) sum+=i;//临时变量i相当于a中每一个元素的值 } System.out.println(sum); } }
声声明一个变量就是在内存空间划出一块合适的空间
public class Demo { public static void main(String[] args){ int[] a={8,4,2,1,23,344,12}; for(int i:a){ System.out.println(i); } } }
public class Demo2 { public static void main(String[] args){ int[] a={8,4,2,1,23,344,12}; int sum=0; for(int i:a){ sum+=i; } System.out.println(sum); } }
public class Demo3 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入整数"); int number=sc.nextInt(); int[] a={8,4,2,1,23,344,12}; int flag=0; for(int i:a){ if(i==number){ System.out.println(number+"数列包含"); flag=1; break; } } if(flag==0){ System.out.println(number+"数列不包含"); } } }
数组求最值:
- 先初始化最值
- 循环遍历,依次与变量比较,不符合条件的替换变量的值
- 循环结束后,得到的变量即为最值
数组插入值:
- 前提:数据本身有序,插入要保证不会越界
- 从后向前遍历
- 每个值要与插入的值进行比较,不符合顺序的后移
- 符合顺序的,在后方插入
- 如果从头到尾没有插入,则插入在首位
数组求最大值
publicclassDemo4{
publicstaticvoidmain(String[]args){
int[]a=newint[10];
for(inti=0;i<a.length;i++){
a[i]=(int)(Math.random()*100);
}
System.out.print("[");
for(inti=0;i<a.length;i++){
System.out.print(a[i]+",");
if(i==a.length-1){
System.out.println(a[i]+"]");
break;
}
}
intmax=a[0];//求最大值,如果是求最小值,只需要把<改成>
for(inti=1;i<a.length;i++){
if(max<a[i]){
max=a[i];
}
}
System.out.println("最大值"+max);
}
}
数组插入一位数,然后按大小排序
packagecn.kgc;
importjava.util.Arrays;
importjava.util.Scanner;
/**
*CreatedbyLLon2021/10/2511:09
*/
publicclassDemo5{
publicstaticvoidmain(String[]args){
int[]a={99,85,82,63,60};//可选择直接在集内加一个0,给后期增加的数据留位置
//1.数据扩容
int[]b=new int[a.length+1];
for(int i=0;i<a.length;i++){
b[i]=a[i];
}
//2.手动输入一个数
Scanner sc=new Scanner(System.in);
Int num=sc.nextInt();
//3.插入数值
//3.1从后向前遍历,最后一位除外,该位是预留位
//3.2比较数值大小,遇到大的数值,直接在后一个插入
//3.3如果遇到小的数值,该小数值后移
//3.4如果从头到尾都没有插入,则插入在首位
int flag=0;
for(int i=b.length-2;i>=0;i--){
if(num<=b[i]){
flag=1;
b[i+1]=num;//3.2
break;
}else{
b[i+1]=b[i];//3.3
}
}
if(flag==0){
b[0]=num;//3.4
}
System.out.println(Arrays.toString(b));
}
}
声明一个数组就是在内存空间划出一串连续的空间
声明一个变量就是在内存空间划出一块合适的空间
声明一个数组就是在内存空间划出一串连续的空间