自学内容网 自学内容网

第三章.Java数组

1.基本用法

  • 引入:

    • 变量 是内存的一块空间 存储一个值

    • 数组 也是内存的一块连续空间 存储多个

  • 标识符:

    • 变量名 数组名 类名…
  • 基本要素:

    • 标识符:数组的名称,用于区分不同的数组
    • 数组元素:向数组中存放的数据(内容)
    • 元素下标:对数组元素进行编号,从0开始,数组的每个元素都可以通过下标来访问
    • 元素类型:数组元素的数据类型
    • 数组长度固定不变,避免数组越界
  • 优点:

    • 便于阅读
  • 使用步骤:

    • 声明数组:告诉计算机数据类型是什么
      • 数据类型 数组名[];
      • 数据类型 [] 数组名;(建议这样写)
      • int[]a;
      • int a [];
      • 声明数组时不用规定数组长度
    • 分配空间:告诉计算机数据分配多少空间
      • 数组名 = new 数据类型[大小];
      • 声明数组并分配空间
        • 数据类型[] 数组名 = new 数据类型[大小];
      • a = new int[5];
      • //有new是分配空间
      • 要5个类型的
    • 赋值: 向分配的格子里放数据
    • a [0] = 8;
    • [下标]
    • 边声明分配边赋值(不能指定数组长度)
      • 数据类型[] 数组名 = new 数据类型[]{数值};
      • int[] arr1 = new int[]{1,2,3,4,};
      • 简写为:int[] arr1 = {1,2,3,4,};
      • 当利用{}赋值时,必须在声明分配空间一条语句中,不能换行
    • 动态地从键盘录入信息并赋值
      • image-20241025081822559
      • 数据下标从0开始
      • image-20241025082124839
      • 数组有长度属性(数组名字去点)
      • .lengthimage-20241025082424335 - 处理数据:
    • a [0] = a[0] * 10;

816027383)]

  • 处理数据:
    • a [0] = a[0] * 10;

image-20241024224405313

2.数组排序

  • 引入 java.util.Arrays
  • 导入语句简写:import java.util.*(导入多个语句)
  • 格式:
    - Arrays.sort(数组名);在这里插入图片描述
    -
   import java.util.Arrays;
   public class ArrEq2{
   public static void main(String[] args){
   int[] arr = { 2,34,56,7,7,64,7,2,5,25,3,523};
   //排序一下数组
   Arrays.sort(arr);
   for(int i = 0; i< arr.length; i ++){
   System.out.println(arr[i]);
   }
   //降序显示
   System.out.println("降序显示");
   for( int i = arr.length - 1;i >= 0; i--){
   System.out.println(arr[i]);
   }
   }
   }

3.方法

在这里插入图片描述
(/开头unicode编码)

import java.util.Arrays;
public class ArrEq2{
   public static void main(String[] args){
   //数组的相关工具类方法
   int [] arr1 = {12,34,56};
   int [] arr2 =  new int[]{12,34,66};
   int [] arr3 =  new int[]{12,34,56,0};
   int [] arr4 =  new int[]{56,34,12};
   
   //比较数组内容是否一致
   System.out.println("arr1与arr2相等吗"+ Arrays.equals(arr1,arr2));
   System.out.println("arr1与arr3相等吗"+ Arrays.equals(arr1,arr3));
   System.out.println("arr1与arr4相等吗"+ Arrays.equals(arr1,arr4));
   Arrays.sort(arr4);
   System.out.println("arr4排完序");
   System.out.println("arr1与arr4相等吗"+ Arrays.equals(arr1,arr4));
   
   //数组转字符串
   String arrStr = Arrays.toString(arr3);
   System.out.println(arrStr);

   //填充数据
   int[] arr5 = new int[5];
   arr5[3] = 100;
   Arrays.fill(arr5,99);

   //复制数组(比原本的长或短都可以复制成功)
   int[] arr6 = Arrays.copyOf(arr5,3);
   int[] arr7 = Arrays.copyOf(arr5,10);

   //查询数组中元素的位置
   int[] arr8 = {1,2,3,4,5,9,13,23};
   //查询4的位置
   //binarySearch 数组一定要升序排列
   System.out.println(Arrays.binarySearch(arr8,4));

   }
}

4.增强型for循环

  • 格式:
     for (表达式1:表达式2){
     }
     表达式1:与数据或集合`类型相同`的变量
     表达式2:数组或集合类型
     //变量和数组同一类型或者高一级
     eg://增强型for
    int[] arr8 = {1,2,3,4,5,9,13,23};
for(int a : arr8){
System.out.println(a);
}
System.out.println("___________________________________");
for(int i = 0;i < arr8.length;i ++){
System.out.println(arr8[i]);
}

     
  • 区别:
    • 增强型必须从0开始,全部循环
      - (从头到尾)
    • 基础可以选择开始位置
      - (有选择)

5.冒泡排序

import java.util.*;

public class ArrayEq7 {

public static void main(String[] args) {
// TODO Auto-generated method stub
//冒泡 排序
int[] arr = {76,54,65,75,45};
//找最大值,并交换位置
//for(int i = 1; i < arr.length ; i++) {
//if(arr[0] < arr[i]) {
//int temp = arr[0];
//arr[0] = arr[i];
//arr[i] = temp;
//}
//}

for(int j = 0 ; j < arr.length ; j++) {//求出每一轮
for(int i = j+1; i < arr.length ; i++) {//j+1 每个都是与后面的值比较
if(arr[j] > arr[i]) {
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}

System.out.println(Arrays.toString(arr));
}

}

6.练习题

1.插入成绩并排序

  • 有一组学员的成绩{99,12,44,67,86},将它们升序排列.要增加一个学员的成绩,将它插入成绩序列,并保持排序

//变六位
//public static void main(String[] args) {
//Scanner input = new Scanner(System.in);
//int [] arr = {14,54,534,3,24,0};//0,3,14,24,54,534//变为六位
////排序一下
//Arrays.sort(arr);
//System.out.println("请输入插入的成绩");
//int score = input.nextInt();
//
////得到插入的下标位置
////设定默认插入的位置
//int index = arr.length;//插到后面的位置
//for(int i = 0 ; i < arr.length ; i ++) {
//if(arr[i]>score) {
//index = i;
//break;
//}
//}
////移位操作
//for(int i = 1;i < index;i++) {
//arr[i -1] = arr[i];
//}
////插入
//arr[index - 1] = score;//index-1 因为arr[i]没动,index=i
//System.out.println(Arrays.toString(arr));
//
//}
//
//
//}


// 新建数组
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int [] arr = {14,54,534,3,24};//3,14,24,54,534
//排序一下
Arrays.sort(arr);
int [] newArr = Arrays.copyOf(arr,arr.length+1);//原数组排序后补0
System.out.println("请输入插入的成绩");//25
int score = input.nextInt();

//设置默认操作下标
int index = -1;
for(int i =0 ; i < newArr.length ; i++) {
if (score < newArr[i]) {
index = i;
break;
}
}

//循环往后面开始移
for (int i = newArr.length-2 ; i>= index ;i--) {//减一个移一个
newArr[i+1] = newArr[i];//原本值位置后移一位

}
//填充值
newArr[index] = score;
System.out.println(Arrays.toString(newArr));
}
} 

原文地址:https://blog.csdn.net/pound127/article/details/143224981

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!