java基础数组总结

数组的概述

数组(Array)是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。
数组的长度一旦确定,就不能修改. 我们可以直接通过下标(或索引)的方式调用指定位置的元素。数组的下标从0开始。
数组的分类:
按照维度:一维数组、二维数组、多维数组
按照元素的数据类型分:基本数据类型元素的数组、引用数据类型元素的数组(即对象数组)

一维数组的创建与使用

创建一维数组

数组作为对象允许使用new关键字进行内存分配。在使用数组之前,必须首先定义数组变量的数据类型。一维数组的创建有一些两种方式。
1.先声明,再使用new关键字进行内存分配
声明方式:
数组元素类型 数组名字[];
数组元素类型 [] 数组名字;
例如:int arr[];
为数组声明内存空间:
数组名字=new 数组元素类型[数组元素的个数];
例如:arr=new int[5];
2.声明数组的同时为数组分配内存空间
数组元素类型 数组名=new 数组元素类型[数组元素的个数];
例如:int month=new month[12];

初始化一维数组

数组的初始化就是给数组中每个元素赋值
数组初始化的两种形式:
int arr[]=new int[]{1,3,56,7};
int arr2[]={23,67,99,11}

使用一维数组

练习1:使用一维数组将1-12月各月天数输出

public class ArrayTest {
    public static void main(String[] args) {
		int day[]={31,28,31,30,31,30,31,31,30,31,30,31};
		for(int i=0;i<day.length;i++){
			System.out.println((i+1)+"月有"+day[i]+"天");
		}
	}
   
}

练习2:从键盘读入学生成绩,找出最高分,并输出学生成绩等级。
成绩>=最高分-10 等级为’A’
成绩>=最高分-20 等级为’B’
成绩>=最高分-30 等级为’C’
其余 等级为’D’

import java.util.Scanner;

public class ArrayTest2 {
    public static void main(String[] args) {
		System.out.println("请输入学生人数:");
		Scanner sc=new Scanner(System.in);
		int sCount=sc.nextInt();
		int arr[]=new int[sCount];
		System.out.println("请输入"+sCount+"个成绩:");
		Scanner sc1=new Scanner(System.in);
		for(int i=0;i<arr.length;i++){
			arr[i]=sc1.nextInt();
		}
		int max=arr[0];
		for(int j=0;j<arr.length;j++){
			if(max<arr[j])max=arr[j];
		}
		System.out.println("最高分是:"+max);
		for(int i=0;i<arr.length;i++){
			if(arr[i]>=max-10){
				System.out.println("学生"+(i+1)+"的成绩是:"+arr[i]+",等级是A!");
			}else if(arr[i]>=max-20){
				System.out.println("学生"+(i+1)+"的成绩是:"+arr[i]+",等级是B!");
			}else if(arr[i]>=max-30){
				System.out.println("学生"+(i+1)+"的成绩是:"+arr[i]+",等级是C!");
			}else{
				System.out.println("学生"+(i+1)+"的成绩是:"+arr[i]+",等级是D!");
			}
		}

	}
   
}

请输入学生人数:
5
请输入5个成绩:
56
74
89
41
89
最高分是:89
学生1的成绩是:56,等级是D!
学生2的成绩是:74,等级是B!
学生3的成绩是:89,等级是A!
学生4的成绩是:41,等级是D!
学生5的成绩是:89,等级是A!

二维数组的创建及使用

二维数组的创建

二维数组可以看作是特殊的一维数组,与一维数组一样同样有两种创建方式
1:先声明,再使用new关键字进行内存分配
声明方式:
数组元素类型 数组名字[][];
数组元素类型[][] 数组名字;
例如: int arr[][];
为数组分配内存空间
arr=new int[2][5];
2:声明数组的同时分配内存空间
int arr2[][]=new int[2][5];

二维数组的初始化

二维数组的初始化与一维数组类似,同样可以使用大括号完成。
声明语法如下:
type arrayname[][]={value1,value2,…valuen}

使用二维数组

练习1:使用二维数组输出一个3行4列且所有元素都是*的矩阵

public class ArrayTest3 {
   public static void main(String[] args) {
	String arr[][]={{"*","*","*","*",},{"*","*","*","*",},{"*","*","*","*",}};
	for(int i=0;i<arr.length;i++){
		for(int j=0;j<arr[i].length;j++){
			System.out.print(arr[i][j]);
		}
		System.out.println();
	}
   }
}

****
****
****

练习2:使用二维数组打印一个10行杨辉三角

public class ArrayTest4 {
   public static void main(String[] args) {
	   int[][] yangHui=new int[10][];
	   for(int i=0;i<yangHui.length;i++){
		   yangHui[i]=new int[i+1];
		   yangHui[i][0]=yangHui[i][i]=1;
			   for(int j=1;j<yangHui[i].length-1;j++){
				   yangHui[i][j]=yangHui[i-1][j-1]+yangHui[i-1][j];
			   }
	   }
	   
	   for(int i=0;i<yangHui.length;i++){
		   for(int j=0;j<yangHui[i].length;j++){
			   System.out.print(yangHui[i][j]+"  ");
		   }
		   System.out.println();
	   }
   }
}

1  
1  1  
1  2  1  
1  3  3  1  
1  4  6  4  1  
1  5  10  10  5  1  
1  6  15  20  15  6  1  
1  7  21  35  35  21  7  1  
1  8  28  56  70  56  28  8  1  
1  9  36  84  126  126  84  36  9  1  

二分法查找

前提:所要查找的数组必须有序
假设待查找的有序数列为1,3,5,7,9,11,19,21,25,我们要找的元素为19,请用二分查找算法找到对应的下标元素

public class ArrayTest5 {
	
  public static void main(String[] args) {
	int []arr=new int[]{1,3,5,7,9,11,19,21,25};
	int dest=19;
	int head=0;
	int end=arr.length-1;
	while(head<=end){
		int middle=(head+end)/2;
		if(dest==arr[middle]){
			System.out.println(dest+"对应的下标元素为:"+middle);
			break;
		}else if(arr[middle]>dest) {
			end=middle-1;
		}else{
			head=middle+1;
		}
	}
}
}

数组排序算法

冒泡排序

基本思想:
冒泡排序的基本思想是对比相邻的元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把较大的元素移动到元素后面(也就是交换两个元素的位置),这样较小的元素就像气泡一样从底部上升到顶部。

在这里插入图片描述
代码实现:

public class BubbleSort {
    public static void main(String[] args) {
		int []arr={63,1,24,77,45,3};
		System.out.println("原数组为:");
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+" ");
		}
		System.out.println();
		for(int i=1;i<arr.length;i++){
			for(int j=0;j<arr.length-1;j++){
				if(arr[j]>arr[j+1]){
					int temp=arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=temp;
				}
			}
		}
			
	    System.out.println("排序后的数组为:");
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+" ");
		}
	}
}

选择排序

基本思想:
选择排序的基本思想是将指定排序位置与其他数组元素分别对比,如果满足条件就交换元素值。与冒泡排序区别,不是交换相邻元素,而是满足条件的元素与指定的排序位置交换。

在这里插入图片描述
代码实现:

public class SelectSort {
    public static void main(String[] args) {
		int []arr={63,1,24,77,45,3};
		System.out.println("原数组为:");
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+" ");
		}
		System.out.println();
		int index;
		for(int i=1;i<arr.length;i++){
			index=0;
			for(int j=1;j<=arr.length-i;j++){
				if(arr[j]>arr[index]){
					index=j;
				}
			}
			int temp=arr[arr.length-i];
			arr[arr.length-i]=arr[index];
			arr[index]=temp;
		}
			
	    System.out.println("排序后的数组为:");
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+" ");
		}
	}
}

Array工具类的使用

java.util.Arrays类即为操作数组的工具类,包含了用来操作数组(比如排序和搜索)的各种方法。

boolean equals(int[] a,int[] b)判断两个数组是否相等
String toString(int[] a)输出数组信息
void fill(int[] a,int val)将指定值填充到数组之中
void sort(int[] a)对数组进行排序
int binarySearch(int[] a,int key)对排序后的数组进行二分法检索指定的值

使用Array工具类进行数组排序

import java.util.Arrays;
   public class SortTest {
      public static void main(String[] args) {
           int [] numbers = {5,900,1,5,77,30,64,700};
           Arrays.sort(numbers);
        for(int i = 0; i < numbers.length; i++){
        System.out.println(numbers[i]); } 
        }
 }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java数组基础答案如下: Java中的数组是用于存储同一类型数据的容器,它可以存储多个元素,并且这些元素可以通过索引来访问。 声明一个数组的语法是:类型[] 数组名 = new 类型[数组长度]。例如,如果要声明一个整型数组长度为5,可以这样写:int[] array = new int[5]。 可以通过索引来访问数组中的元素,索引从0开始,以数组长度减一为上限。例如,要访问数组中的第一个元素,可以使用array[0]。 可以使用循环来遍历数组中的元素,常见的循环有for循环和foreach循环。 数组的长度是固定的,一旦声明后就不能再改变。如果想要存储更多的元素,需要重新创建一个更大或者更小长度的数组Java提供了一些数组的方法,比如获取数组长度的方法length,复制数组的方法copyOf,比较两个数组的方法equals等。 除了一维数组Java还支持多维数组,可以用来表示矩阵或者表格等复杂的数据结构。 数组是引用类型,它只是一个指向实际存储数据的内存空间的引用。所以,对数组进行复制或者传递参数时,实际传递的是地址而不是数据本身。 在使用数组时,需要注意数组越界的问题,即访问不存在的索引,会导致程序出现错误。 总结来说,Java数组是一种常用的数据结构,用于存储一组相同类型的数据。掌握了数组的基本使用方法,能够更好地处理数据和进行算法的设计。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值