Java基础学习第六讲:数组

2022/1/5 20:11:05

本文主要是介绍Java基础学习第六讲:数组,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

数组

一、数组概述

1、什么是数组?

数组是相同类型数据的有序集合。数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们。

2、数组的特点

  • 长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
  • 其元素必须是相同类型,不允许出现混合类型。元素的类型可以是java 支持的任意类型。
  • 数组类型可以是任何数据类型,包括基本类型和引用类型。
  • 数组的元素在堆内存中被分配空间,并且是连续分配的
  • 使用new 关键字对数组进行 内存的分配。每个元素都会被jvm 赋予默认值。默认规则:整数:0 浮点数:0.0 字符:\u0000 布尔:false 引用数据类型:null。
  • 数组的元素都是有序号的,序号从0开始,0序的。称作数组的下标、索引、角标。

3、数组的声明

  • 声明的时候并没有实例化任何对象,只有在实例化数组对象时,JVM才分配空间,这时才与长度有关。
  • 声明一个数组的时候并没有数组真正被创建。
  • 构造一个数组,必须指定长度。

4、数组的格式
元素类型[ ] 数组名 = new 元素类型 [元素个数或数组长度]
元素类型 数组名[ ] = new 元素类型 [元素个数或数组长度]

int[] intArray=new int[4];

int intArrays[]=new int[4];
  • 元素类型:是指数组存储的数据的数据类型
  • []:代表这是数组类型。
  • 数组名:一个合法的标识符,命名规范 和 局部变量 规范一致。
  • new:是java 的关键字。用来向JVM申请内存的。
  • 元素类型[元素个数] :决定了向JVM申请的内存空间的大小(大小:元素类型字节数 * 元素个数)
  • 元素的个数:只要是一个合法的java 表达式就可以。 返回一个int 类型的值即可
    在这里插入图片描述
    5、数组的创建
  • 声明数组时,给出了数组的初始值,这种创建方法叫做创建静态数组
int[] intArray={1,2,3,4};

String[] strArray= {"Java","C","C++",".NET"};
  • 声明数组时,没有给出数组的初始值,但是指定了数组的长度,这种创建方法叫做创建动态数组。可以通过数组下标找到数组元素,给指定的元素赋值
		int intArrays[]=new int[4];
		intArrays[0]=1;
		intArrays[1]=2;
		intArrays[2]=3;
		intArrays[3]=4;

6、二维数组
二维数组其实是一位数组的嵌套(每一行看做一个内层的一维数组)
示例:

int[][] arr = {{1, 2}, {3, 4}, {5, 6}};//创建静态二维数组

int[][] arr1 = new int[3][2];//创建动态二维数组
arr1[0] = new int[]{1, 2};
arr1[1] = new int[]{3, 4};
arr1[2] = new int[]{5, 6};

7、数组的注意事项

  • 数组下标必须是int、short、byte,或是char
  • 数组下标从0开始计数
  • 元素的个数就是数组的长度,可以通过arrayName.length引用
  • 数组下标最大值为arrayName.length -1如果超过最大值,程序将会抛出数组下标越界异常(ArrayIndexOutOfBoundsException)

8、数组的优缺点

优点:

  • 可以保存若干个数据。
  • 随机访问的效率很高。根据下标访问元素效率高(元素连续分配空间)。

缺点:

  • 数组的元素的类型必须一致。元素类型必须一致。
  • 连续分配空间在堆中,如果数组的元素很多,对内存的要求更加的严格。
  • 根据内容查找元素效率比较低,需要逐个比较。
  • 删除元素、插入元素效率比较低,需要移动大量的元素。
  • 数组定长,不能自动扩容。
  • 数组没有封装,数组对象只提供了一个数组长度的属性,但是没有提供方法用来操作元素。

二、数组的应用

1、求数组中最大值

int arr[] = {1, 8, 7, 4, 5, 9};
int k = arr[0];
for(int i=0; i<arr.length; i++){
	if(arr[i]>k){
		k = arr[i];
	}
}
System.out.println(k);

2、求数组中的最小值

int arr[] = {1, 2, 7, 4, 0, 9};
int k = arr[0];
for(int i=0; i<arr.length; i++){
	if(arr[i]<k){
		k = arr[i];
	}
}
System.out.println(k);

3、数组排序

		 int[] a={1,4,-1,5,0};
         Arrays.sort(a);//数组a[]的内容变为{-1,0,1,4,5}
         for(int i=0;i<a.length;i++){
            System.out.print(a[i]+"  ");
         }

4、数组成员10个,找出数组中最大数连同位置一起输出

		    int[] n = new int[]{1, 2, 3, 4, 5, 6, 0};
		    int max = n[0];
		    int index=0;
		    for (int i = 0; i < n.length;i++){
		      if(max<n[i]){
		        max=n[i];
		        index=i;
		      }
		    }
		    System.out.println("最大值是:"+max);
		    System.out.println("最大值位置是:"+index);

5、冒泡排序
冒泡排序就是重复的遍历要排序的数列,每次比较相邻的两个元素,如果他们的顺序不满足排序条件就把他们交换过来。遍历数列的工作是重复地进行直到不再需要交换(排序已完成)。
算法原理:(比如从小到大排)

  • 比较相邻的元素。如果第一个比第二个大,就交换他们的顺序。
  • 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  • 针对所有的元素重复以上的步骤,除了最后一个。
  • 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
//冒泡排序法
int arr[] = {1, 9, 7, 4, 0};
for(int i=0; i<arr.length-1;i++){
	for(int j=0; j<arr.length-1;j++){
		if(arr[j]>arr[j+1]){
			int temp = arr[j+1];
			arr[j+1] = arr[j];
			arr[j] = temp;
		}
	}
}
//以下代码是将数组中的所有元素输出到控制台
for(int i=0; i<arr.length; i++){
	System.out.println(arr[i]);
}


这篇关于Java基础学习第六讲:数组的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程