程序笔记   发布时间:2022-07-13  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Java 数组的使用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

数组的定义

数组:可以看作相同类型元素的一个集合࿰c;在内存中是一块连续的内存空间

注意:

  • C语言中࿰c;数组的内存在栈上 在Java中࿰c;数组的内存在堆上

数组的创建及初始化:

1.数组的创建:

基本语法格式:

T[ ] 数组名 = new T[n]; . ① T࿰c;即Type࿰c;表示:数组中存放元素的类 ② T[ ]࿰c; 表示:数组的类型 ③ N࿰c; 表示:数组的长度

举例:

创建一个可以容纳@H_197_45@10个int类型元素的数组
int[] array1 = new int[@H_197_45@10]; 

创建一个可以容纳@H_197_45@5个double类型元素的数组
double[] array2 = new double[@H_197_45@5];

2.数组的初始化

数组的初始化主要分为动态初始化和静态初始化

①动态初始化:

基本语法格式:

int[ ] array = new int[10] 在创建数组时࿰c;直接指定数组中元素的个数

②静态初始化:

基本语法格式:

int[ ] array1 = new int[ ] {0࿰c;1࿰c;2࿰c;3࿰c;4࿰c;5࿰c;6}; double[ ] array2 = new double[ ]{1.0࿰c; 2.0࿰c; 3.0࿰c; 4.0࿰c;5.0};

注意事项:

  • 如果没有对数组进行初始化࿰c;数组中元素有其默认值 如果数组中存储元素类型为基类类型࿰c;默认值为基类类型对应的默认值 如果数组中存储元素类型为引用类型࿰c;默认值为null
  • 静态初始化无需指定数组的长度࿰c;编译器在编译时会根据{ }中元素个数来确定数组的长度
  • 静态初始化时࿰c;{ }中数据类型必须与[ ]前数据类型一致、
  • 静态初始化可以简写࿰c;省去后面的new T[ ]
  • 如果不确定数组当中内容时࿰c;使用动态初始化࿰c;否则建议使用静态态初始化

数组的使用

1.数组的长度:

数组的长度属性: 每个数组都具有长度࿰c;而且是固定的࿰c;Java中赋予了数组的一个属性࿰c;可以获取到数组的长度࿰c;语句为:数组名.length

int[ ] array = new int[ ]{1,2,3,4,5,6}; int len = array.length; 此处的 length 是属性

2.数组的访问:

数组在内存中是一段连续的空间c;空间的编号都是从0开始的࿰c;依次递增࿰c;该编号称为数组的下标࿰c;数组可以通过下标访问其任意位置的元素

索引:每一个存储到数组的元素࿰c;都会自动的拥有一个编号࿰c;从0开始࿰c;这个自动编号称为数组索引 (indeX)c;可以通过数组的索引访问到数组中的元素 由数组的长度知࿰c;属性 length 的执行结果是数组的长度࿰c;int类型结果࿰c;则数组的最大索引值为数组名.length-1

格式: 数组名[索引]

  • 数组名[索引] = 数值࿰c;为数组中的元素赋值
  • 变量 = 数组名[索引]࿰c;获取出数组中的元素
public static void @H_979_185@main(String[] args) {
	//定义存储int类型数组࿰c;赋值元素1࿰c;2࿰c;3࿰c;4࿰c;5 
	int[] arr = {@H_197_45@1,@H_197_45@2,@H_197_45@3,@H_197_45@4,@H_197_45@5};
	//为0索引元素赋值为6 
	arr[@H_197_45@0] = @H_197_45@6; 
	//获取数组0索引上的元素 
	int i = arr[@H_197_45@0]; 
	System.out.println(i); 
	//直接输出数组0索引元素 
	System.out.println(arr[@H_197_45@0]); 
}

注意事项:

  • 数组是一段连续的内容空间࿰c;因此支持随机访问࿰c;即通过下标访问快速访问数组中任意位置的元素
  • 下标从0开始࿰c;介于[0, N) 之间不包含N࿰c;N为元素个数࿰c;不能越界࿰c;否则会报出下标越界异常

3.数组的遍历:

“遍历”:是指将数组中的所有元素都访问一遍 这里用打印的方式展示遍历:

int[] array = new int[]{@H_197_45@1,@H_197_45@2,@H_197_45@3,@H_197_45@4,@H_197_45@5,@H_197_45@6};
int len = array.length;
for(int i=@H_197_45@0;i<len;i++){
	System.out.println(array[i]);
}

延申: Java中的打印方式࿰c;出了上述的࿰c;还有foreach࿰c;即:for( 遍历的数组内容 :数组本身) 代码如下:

for (int val:array) {
	System.out.println(val+" ");
}

二者区别: for循环遍历打印数组࿰c;需要索引࿰c;而foreach不需要࿰c;若单纯的想要遍历数组࿰c;用foreach即可

4.使用数组交换两个整数

//使用数组实现交换两个整数
    public static void swap(int[] array){
	    int tmp = array[@H_197_45@0];
	    array[@H_197_45@0] = array[@H_197_45@1];
	    array[@H_197_45@1] = tmp;
    }
    public static void @H_979_185@main(String[] args) {
        int[] array1 = {@H_197_45@10,@H_197_45@20};
        System.out.println("交换前:"+array1[@H_197_45@0]+" "+array1[@H_197_45@1]);
        swap(array1);
        System.out.println("交换后:"+array1[@H_197_45@0]+" "+array1[@H_197_45@1]);
    }
输出结果:
交换前:@H_197_45@10 @H_197_45@20
交换后:@H_197_45@20 @H_197_45@10

交换原理:

Java 数组的使用

5.以字符串的形式输出数组:

使用方法toString 需要调用包 java.util.Arrays

int[] arr = {@H_197_45@1,@H_197_45@2,@H_197_45@3,@H_197_45@4,@H_197_45@5,@H_197_45@6};
String ret = Arrays.toString(arr);
System.out.println(ret);

理解引用类型:

1.基本类型变量与引用类型变量的区别

基本数据类型创建的变量࿰c;称为基本变量࿰c;该变量空间中直接存放的是其所对应的值; 引用数据类型创建的变量࿰c;一般称为对象的引用࿰c;其空间中存储的是对象所在空间的地址

public static void func() {
	 int a = @H_197_45@10;
	 int b = @H_197_45@20;
	 int[] arr = new int[]{@H_197_45@1,@H_197_45@2,@H_197_45@3};
}

在上述代码中:a࿰c;b࿰c;arr࿰c;都是函数内部的变量࿰c;因此其空间都在main方法对应的栈帧中分配; a、b是内置类型的变量࿰c;因此其空间中保存的就是给该变量初始化的值。 array是数组类型的引用变量࿰c;因为都为引用其内部保存的是数组在堆空间中的首地址

Java 数组的使用

引用变量并不直接存储对象本身࿰c;而存储的是对象在堆中空间的起始地址c;通过该地址࿰c;引用变 量便可以去操作对象。有点类似C语言中的指针࿰c;但是Java中引用要比指针的操作更简单

2.认识null

null 在 Java 中表示 “空引用”࿰c;也就是一个不指向对象的引用࿰c;即:空对象

int[ ] arr = null; //arr引用的是一个空对象 System.out.println(arr[0]); 此处不能访问0下标࿰c;因为没有所指对象

null 的作用类似于 C 语言中的 NULL (空指针)࿰c; 都是表示一个无效的内存位置࿰c;因此不能对这个内存进行任何读写操作࿰c;Java 中并没有约定 null 和 0 号地址的内存有任何关联

3.数组作为方法的返回值

将一个数组内容扩大二倍:

public static int[] fun(int[] array){
	int[] tmp = new int[array.length];
	for (int i = @H_197_45@0; i <array.length; i++) {
	    tmp[i] = array[i] * @H_197_45@2;
}
	return tmp;
}
public static void @H_979_185@main(String[] args) {
	int[] array = {@H_197_45@1,@H_197_45@2,@H_197_45@3,@H_197_45@4,@H_197_45@5,@H_197_45@6,@H_197_45@7,@H_197_45@8};
	int[] ret = fun(array);
	System.out.println(Arrays.toString(ret));
}

二维数组:

二维数组本质上也就是一维数组, 只不过每个元素又是一个一维数组 即:数组的数组就是一个二维数组

语法格式: 数据类型[ ][ ] 数组名称 = new 数据类型 [行数][列数] { 初始化数据 };

1.创建二维数组及初始化:

int[][] array1 = new int[@H_197_45@10][@H_197_45@10];
int array2[][] = new int[@H_197_45@10][@H_197_45@10];
int array3[][] = { { @H_197_45@1, @H_197_45@1, @H_197_45@1 }, { @H_197_45@2, @H_197_45@2, @H_197_45@2 } };
int array4[][] = new int[][] { { @H_197_45@1, @H_197_45@1, @H_197_45@1 }, { @H_197_45@2, @H_197_45@2, @H_197_45@2 } };

2.二维数组长度:

// 获取二维数组的第一维长度(3)
int len1 = array.length;

// 获取二维数组的第一维的第一个数组长度(1)
int len2 = array[@H_197_45@0].length;

进行开发之中࿰c;出现二位数组的几率并不高

Array类:

java.util.Arrays 类提供的所有方法都是静态的c;能方便地操作数组࿰c;

由于数组对象本身并没有什么方法可以供我们调用࿰c;但API中提供了一个工具类Arrays供我们使用࿰c;从而可以对数据对象进行一些基本的操作。 Arrays类中的方法都是static修饰的静态方法࿰c;使用的时候可以直接使用类名进行调用࿰c;而"不用"使用对象来调用 (注意:是"不用"而不是"不能") Array具有的功能这里就不一一列举了࿰c;可以去JDK帮助文档自行了解

大佬总结

以上是大佬教程为你收集整理的Java 数组的使用全部内容,希望文章能够帮你解决Java 数组的使用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。