数组
为什么需要数组
变量:一个变量只能存放一个数据
数组:数组是一个变量 存储相同数据类型的一组数组
声明一个变量就是在内存空间中划出一块合适的空间
声明一个数组就是在内存空间中划出一串连续的空间
数组的基本要素:
1.标识符 数组的名称 用于区分不同的数组
2.数组元素 向数组中存放的数据
3.元素下标 对数组元素进行编号 从0开始 数组中的每个元素都可以通过下标进行访问
4.元素类型 数组元素的数据类型
声明数组的步骤:
1.声明数组 int[] a;
2.分配空间 a=new int[5];
3.赋值 a[0]=8;
4.处理数据 a[0]=a[0]*10
数组赋值的步骤:
1.边声明边赋值 int score[]=new int[]{89,90,76};
2.动态的从键盘录入信息并赋值
Scanner sc=new Scanner(System.in);
for(int i=0;i<30;i++){
score[i]=sc.nextInt();
}
数组的定义: int array[]=new int[数组的容量];
int array[]=new int[]{1,2,3,4,5,6};
int array={1,2,3,4,5,6};
数组的定义 数据类型 数组名[]=new 数据类型[大小]
数组的引用 通过下标访问 数组下标从0开始
数组的初始化: 1.动态初始化的两种方式 double score[]=new score[5];
double score[];//先声明数组 此时数组为null
score=new score[5];
2.静态初始化 double[] arr2 = {1.1, 2.2, 3.3, 60.6, 100};//int–double
public class Day01 {
public static void main(String[] args) {
int sum=0;
double avg=0.0;
int score[]=new int[5]; //默认值为0
Scanner sc=new Scanner(System.in);
for(int i=0;i<score.length;i++)
score[i]=sc.nextInt();
for(int i=0;i<score.length;i++){
sum+=score[i];
}
avg=sum/score.length;
System.out.println(avg);
}
}
public class Test03 {
public static void main(String[] args) {
//冒泡排序
int array[]=new int[]{8,4,2,1,23,344,12};
int index;
for(int i=0;i<array.length-1;i++){
index=0;
for(int j=0;j<array.length-i-1;j++){
if(array[j]<array[j+1]){
index=array[j];
array[j]=array[j+1];
array[j+1]=index;
}
}
}
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
}
}
public class Day05 {
public static void main(String[] args) {
int array1[]=new int[]{1,2,3,4,5};
int array2[]=new int[]{1,2,3,4,5};
//判断两个数组元素是否相等
boolean Boolean= Arrays.equals(array1,array2);
System.out.println(Boolean);
//把数组转成字符串
String str= Arrays.toString(array1);
System.out.println(str);
//将数组元素填充成指定的值
Arrays.fill(array2,5);
for(int i=0;i<array2.length;i++)
System.out.println(array2[i]);
//数组复制 copyOf()
int array3[]=Arrays.copyOf(array1,5);
for(int i=0;i<array3.length;i++)
System.out.println(array3[i]);
/*查找元素值在数组中的下标 binarySearch()
要求数组已经是升序排列
*/
Arrays.sort(array3);
int index=Arrays.binarySearch(array3,4);
System.out.println("下标的位置:"+index);
}
}
public class Test06 {
public static void main(String[] args) {
//数组的拷贝
int array[]=new int[]{8,4,2,1,23,344,12};
int array1[]=new int[array.length];
for(int i=0,j=0;i<array.length;i++,j++){
array1[j]=array[i];
}
for(int i=0;i<array1.length;i++){
System.out.print(array1[i]+" ");
}
}
}
public class Test07 {
public static void main(String[] args) {
//数组的反转
int array[]=new int[]{8,4,2,1,23,344,12};
int temp=0;
for(int i=0,j=array.length-1;i<=j;i++,j--){
temp=array[i];
array[i]=array[j];
array[j]=temp;
}
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
}
}
public class Test08 {
public static void main(String[] args) {
//数组的添加
int array[]=new int[]{8,4,2,1,23,344,12};
int arr[]=new int[array.length+1];
Scanner sc=new Scanner(System.in);
for(int i=0,j=0;i<array.length;i++,j++){
arr[j]=array[i];
}
arr[arr.length-1]=sc.nextInt();
array=arr;
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
}
public class Test09 {
public static void main(String[] args) {
//求最大值 最小值 并输出下标
int array[]=new int[]{8,4,2,1,23,344,12};
int max=array[0];
int min=array[0];
int index1=0;
int index2=0;
for(int i=0;i<array.length;i++){
if(max<array[i]){
max=array[i];
index1=i;
}
if(min>array[i]){
min=array[i];
index2=i;
}
}
System.out.println(max+" "+index1);
System.out.println(min+" "+index2);
}
}