咸宁网站建设哪家好百度竞价排名事件
java中的数组
- 一、数组的概述
- 二、一维数组
- 三、二维数组
- 四、Arrays工具类的使用
- 五、数组中常见的异常
一、数组的概述
1、数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。
2、数组的常见概念
① 数组名
②下标(或索引)
③ 元素
④数组的长度
3、 数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。
4、创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址。
5、数组的长度一旦确定,就不能修改。
6、 我们可以直接通过下标(或索引)的方式调用指定位置的元素,速度很快。
7、数组的分类:
①按照维度:一维数组、二维数组、三维数组、…
②按照元素的数据类型分:基本数据类型元素的数组、引用数据类型元素的数组(即对象数组)
二、一维数组
1、一维数组的声明
①一维数组的声明方式:
type var[] 或 type[] var;
例如:
int a[];
int[] a1;
double b[];
String[] c; //引用类型变量数组
② Java语言中声明数组时不能指定其长度(数组中元素的数), 例如: int a[5]; //非法
2、一维数组的初始化
- 动态初始化:数组声明且为数组元素分配空间与赋值的操作分开进行
int[] arr = new int[3];
arr[0] = 3;
arr[1] = 9;
arr[2] = 8;String names[];
names = new String[3];
names[0] = “钱学森”;
names[1] = “邓稼先”;
names[2] = “袁隆平”;
- 静态初始化:在定义数组的同时就为数组元素分配空间并赋值。
int arr[] = new int[]{ 3, 9, 8};
或
int[] arr = {3,9,8};
3、一维数组元素的引用
①定义并用运算符new为之分配空间后,才可以引用数组中的每个元素;
②数组元素的引用方式:数组名[数组元素下标]
- 数组元素下标可以是整型常量或整型表达式。如a[3] , b[i] , c[6*i];
- 数组元素下标从0开始;长度为n的数组合法下标取值范围: 0 —>n-1;如int a[]=new int[3]; 可引用的数组元素为a[0]、a[1]、a[2]
③每个数组都有一个属性length指明它的长度,例如:a.length 指明数组a的长度(元素个数)
- 数组一旦初始化,其长度是不可变的
4、一维数组数组元素的默认初始化值
数组是引用类型,它的元素相当于类的成员变量,因此数组一经分配空间,其中的每个元素也被按照成员变量同样的方式被隐式初始化。例如:
public class Test {public static void main(String argv[]){int a[]= new int[5];System.out.println(a[3]); //a[3]的默认值为0 } }
- 对于基本数据类型而言,默认初始化值各有不同
- 对于引用数据类型而言,默认初始化值为null(注意与0不同!)
5、一维数组的创建
Java中使用关键字new来创建数组,例如:
public class Test{public static void main(String args[]){int[] s;s = new int[10];//int[] s=new int[10];//基本数据类型数组在显式赋值之前,//Java会自动给他们赋默认值。for ( int i=0; i<10; i++ ) {s[i] =2*i+1;System.out.println(s[i]);} }
}
6、一维数组的内存解析
三、二维数组
1、如何理解二维数组?
①数组属于引用数据类型
②数组的元素也可以是引用数据类型
③一个一维数组A的元素如果还是一个一维数组类型的,则,此数组A称为二维数组。
2、二维数组的声明与初始化
int[] arr = new int[]{1,2,3};//一维数组
//静态初始化
int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};
//动态初始化1
String[][] arr2 = new String[3][2];
//动态初始化2
String[][] arr3 = new String[3][];
//也是正确的写法:
int[] arr4[] = new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};
int[] arr5[] = {{1,2,3},{4,5},{6,7,8}};//类型推断
3、如何调用二维数组元素?
System.out.println(arr1[0][1]);//2
System.out.println(arr2[1][1]);//nullarr3[1] = new String[4];
System.out.println(arr3[1][0]);
System.out.println(arr3[0]);
4、二维数组的属性:
System.out.println(arr4.length);//3
System.out.println(arr4[0].length);//3
System.out.println(arr4[1].length);//4
5、遍历二维数组元素
for(int i = 0;i < arr4.length;i++){ for(int j = 0;j < arr4[i].length;j++){System.out.print(arr4[i][j] + " ");}System.out.println();}
6、二维数组元素的默认初始化值
规定:二维数组分为外层数组的元素,内层数组的元素
-
int[][] arr = new int[4][3];
-
外层元素:arr[0],arr[1]等
-
内层元素:arr[0][0],arr[1][2]等
针对于初始化方式一:比如:int[][] arr = new int[4][3];
-
外层元素的初始化值为:地址值
-
内层元素的初始化值为:与一维数组初始化情况相同
针对于初始化方式二:比如:int[][] arr = new int[4][];
-
外层元素的初始化值为:null
-
内层元素的初始化值为:不能调用,否则报错。
7、二维数组的内存解析
四、Arrays工具类的使用
1.理解:
① 定义在java.util包下。
② Arrays:提供了很多操作数组的方法。
2.使用:
//1.boolean equals(int[] a,int[] b):判断两个数组是否相等。int[] arr1 = new int[]{1,2,3,4};int[] arr2 = new int[]{1,3,2,4};boolean isEquals = Arrays.equals(arr1, arr2);System.out.println(isEquals);//2.String toString(int[] a):输出数组信息。System.out.println(Arrays.toString(arr1)); //3.void fill(int[] a,int val):将指定值填充到数组之中。Arrays.fill(arr1,10);System.out.println(Arrays.toString(arr1)); //4.void sort(int[] a):对数组进行排序。Arrays.sort(arr2);System.out.println(Arrays.toString(arr2));//5.int binarySearch(int[] a,int key)int[] arr3 = new int[]{-98,-34,2,34,54,66,79,105,210,333};int index = Arrays.binarySearch(arr3, 210);if(index >= 0){System.out.println(index);}else{System.out.println("未找到");}
五、数组中常见的异常
1.数组角标越界异常:ArrayIndexOutOfBoundsException
int[] arr = new int[]{1,2,3,4,5};for(int i = 0;i <= arr.length;i++){System.out.println(arr[i]);} System.out.println(arr[-2]);//报异常,后面的语句不会执行 System.out.println("hello");
2.空指针异常:NullPointerException
//情况一:int[] arr1 = new int[]{1,2,3};arr1 = null;System.out.println(arr1[0]);//情况二:int[][] arr2 = new int[4][];System.out.println(arr2[0][0]);//情况三:String[] arr3 = new String[]{"AA","BB","CC"};arr3[0] = null;System.out.println(arr3[0].toString());
一旦程序出现异常,未处理时,就终止执行。
以上就是关于java中数组的介绍,如果有不当之处或者遇到什么问题,欢迎在文章下面留言~
如果你想了解更多关于Java的内容,可以查看:Java学习之路
转载请注明:https://blog.csdn.net/weixin_44662961/article/details/105447566