Java 数组基础,java.util.Arrays

定义数组

方式1(推荐,更能表明数组类型)

方式2(同C语言)

方式3?定义时直接初始化

数组运用基础

数组长度

equals()

数组元素不为基本数据类型时

二维数组

二维数组基础

变长的二维数组

java.utils.Arrays 类

参考文献:

?

数组(Array):相同类型数据的集合。

定义数组

方式1(推荐,更能表明数组类型)

type[] 变量名 = new type[数组中元素的个数];

比如:

int[] a = new int[10];

数组名,也即引用a,指向数组元素的首地址。

方式2(同C语言)

type变量名[] = new type[数组中元素的个数];

比如:

int a[] = new int[10];

方式3?定义时直接初始化

type[] 变量名 =?new type[]{逗号分隔的初始化值};

其中红色部分可省略,所以又有两种:

int[] a = {1,2,3,4};

int[] a = new int[]{1,2,3,4};

其中int[] a = new int[]{1,2,3,4};的第二个方括号中不能加上数组长度,因为元素个数是由后面花括号的内容决定的。

数组运用基础

数组长度

Java中的每个数组都有一个名为length的属性,表示数组的长度。

length属性是public final int的,即length是只读的。数组长度一旦确定,就不能改变大小。

equals()

数组内容的比较可以使用equals()方法吗?

如下程序:


public
static
void main(String[] args) {

????????int[] a = { 1, 2, 3 };

????????int[] b = { 1, 2, 3 };

?

????????System.out.println(a.equals(b)); // false

????????System.out.println(Arrays.equals(a, b)); // true

????}

输出为:


false

true

所以证明不能直接用equals()方法比较数组内容,因为没有override Object中的实现,所以使用的是其内存地址进行比较,也就是采用==实现equals()方法,比较是否为同一个对象。

怎么比较呢?一种解决方案是自己写代码,另一种方法是利用java.util.Arrays的equals方法。

数组元素不为基本数据类型时

数组元素不为基本原生数据类型时,存放的是引用类型,而不是对象本身。当生成对象之后,引用才指向对象,否则引用为null。

如下列程序:


package array;

?

public
class ArrayTest2 {

????public
static
void main(String[] args) {

????????Person[] p = new Person[3];

?

????????// 未生成对象时,引用类型均为空

????????System.out.println(p[0]);

?

????????// 生成对象之后,引用指向对象

????????p[0] = new Person(10);

????????p[1] = new Person(20);

????????p[2] = new Person(30);

?

????????for (int
i = 0; i < p.length; i++) {

????????????System.out.println(p[i].age);

????????}

????}

}

?

class Person {

????int
age;

?

????public Person(int
age) {

????????this.age = age;

????}

}

输出为:


null

10

20

30

也可以在初始化列表里面直接写:

Person[] p = new Person[]{new Person(10), new Person(20), new Person(30)};

二维数组

二维数组是数组的数组。

二维数组基础

基本的定义方式有两种形式,如:

type[][] i = new type[2][3];(推荐)

type i[][] = new type[2][3];

如下程序:


package array;

?

public
class ArrayTest3 {

????public
static
void main(String[] args) {

?

????????int[][] i = new
int[2][3];

?

????????System.out.println("Is i an Object? " + (i
instanceof Object));

?

????????System.out.println("Is i[0] an int[]? " + (i[0] instanceof
int[]));

?

????}

}

输出为:


Is i an Object? true

Is i[0] an int[]? true

变长的二维数组

二维数组的每个元素都是一个一维数组,这些数组不一定都是等长的。

声明二维数组的时候可以只指定第一维大小,空缺出第二维大小,之后再指定不同长度的数组。但是注意,第一维大小不能空缺(不能只指定列数不指定行数)。

如下程序:


package array;

?

public
class ArrayTest4 {

????public
static
void main(String[] args) {

????????// 二维变长数组

????????int[][] a = new
int[3][];

????????a[0] = new
int[2];

????????a[1] = new
int[3];

????????a[2] = new
int[1];

?

????????// Error: 不能空缺第一维大小

????????// int[][] b = new int[][3];

????}

}

二维数组也可以在定义的时候初始化,使用花括号的嵌套完成,这时候不指定两个维数的大小,并且根据初始化值的个数不同,可以生成不同长度的数组元素。

如下程序:


package array;

?

import java.util.Arrays;

?

public
class ArrayTest5 {

????public
static
void main(String[] args) {

?

????????int[][] c = new
int[][] { { 1, 2, 3 }, { 4 }, { 5, 6, 7, 8 } };

?

????????for (int[] arr : c) {

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

????????}

????}

}

输出为:


[1, 2, 3]

[4]

[5, 6, 7, 8]

java.utils.Arrays 类

public class Arrays
			
extends Object
			

此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。

除非特别注明,否则如果指定数组引用为 null,则此类中的方法都会抛出
NullPointerException。

此类中所含方法的文档都包括对实现
的简短描述。应该将这些描述视为实现注意事项,而不应将它们视为规范
的一部分。实现者应该可以随意替代其他算法,只要遵循规范本身即可。(例如,sort(Object[])
使用的算法不必是一个合并排序算法,但它必须是稳定的。)

此类是
Java Collections Framework
的成员。

具体说明请查看下表:


方法


说明


asList


将数组转成List,基本类型的数组。此方法同 Collection.toArray() 一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。


binarySearch


使用二分搜索法来获得索引位置


copyOf


复制指定的数组,截取或用 null 填充(如有必要),以使副本具有指定的长度。


copyOfRange


将指定数组的指定范围复制到一个新数组。


equals和deepEquals


区别是deepEquals适用于多维数组


hashCode和deepHashCode


deepHashCode基于指定数组的"深层内容"返回哈希码。如果deepEquals的结果是true,则deepHashCode相等


fill


将指定的 boolean 值分配给指定 boolean 型数组的每个元素。


sort


对数组进行排序


toString


返回指定数组内容的字符串表示形式。

?

?

?

?

?

参考文献:

Java?数组基础

菜鸟教程——Java数组

JDK API 1.6.0 中文版

时间: 2024-12-22 13:32:45

Java 数组基础,java.util.Arrays的相关文章

[ Java学习基础 ] Java构造函数

构造方法是类中特殊方法,用来初始化类的实例变量,它在创建对象(new运算符)之后自动调用. Java构造方法的特点如下: 构造方法名必须与类名相同. 构造方法没有任何返回值,包括void. 构造方法只能与new运算符结合使用. 示例代码如下: 1 //Rectangle.java文件 2 package com.a51work6; 3 4 // 矩形类 5 public class Rectangle { 6 7 // 矩形宽度 8 int width; 9 // 矩形高度 10 int hei

java数组与java.util.Arrays工具类

概念 Java中数组属于引用类型.数组使用场合较多,对于数组的操作具有一定重复性,例如:数组拷贝,转换字符串,转换成数组,排序等等.既然重复的操作与需求多,那么对于数组操作的支持就成了JDK中的一大需求.java.util.Arrays中提供了很多对数组操作的支持. System.arraycopy: 数组元素拷贝 public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int l

Java 数组基础

数组(Array):相同类型数据的集合. 定义数组 方式1(推荐,更能表明数组类型) type[] 变量名 = new type[数组中元素的个数]; 比如: int[] a = new int[10]; 数组名,也即引用a,指向数组元素的首地址. 方式2(同C语言) type变量名[] = new type[数组中元素的个数]; 如: int a[] = new int[10]; 方式3 定义时直接初始化 type[] 变量名 = new type[]{逗号分隔的初始化值}; 其中红色部分可省

JAVA数组与排序(Arrays.sort(数组名))

import java.util.Scanner; import java.util.Arrays; public class ArrayTest03 { public static void main(String[] args) { System.out.println("请输入数组的长度:"); InPut in = new InPut();                                      //调用类InPut int n =in.in_put();  

Java数组操作利器:Arrays工具类

java.util.Arrays提供大量的工具方法来操作数组,这些方法全是静态方法. 1 便捷创建List public static <T> List<T> asList(T... a) 返回一个受指定数组支持的固定大小的列表. public static <T> List<T> asList(T... a) { return new ArrayList<>(a); } 典型用法:List<String> stooges = Arr

13-02 Java 数组高级算法,Arrays类

冒泡排序 冒泡排序原理 冒泡排序代码: package cn.itcast_01; /* * 数组排序之冒泡排序: * 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处 */ public class ArrayDemo { public static void main(String[] args) { // 定义一个数组 int[] arr = { 24, 69, 80, 57, 13 }; System.out.println("排序前:"); printArr

浅析Java 数组-基础详解

什么是数组:数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. Java 数组:用来存储固定大小的同类型元素. 一 声明.创建,初始化Java 数组 写在前面:定义Java 数组包括声明和创建:可以先声明,再创建(两步):也可以同时声明和创建(一步). 1.声明 方法1(首选):dataType[] arrayName;  示例:String[] country; 方法2:dataType arrayName[]; : 示例:String country

java数组基础知识

数组的定义:int[] array=new array[n];int array[]={, , , ,};定义了数组,JVM就会给其一个空间,数组是应用类型的数据类型,其存储方式是随机存储. 数组的遍历,一般是通过循环来遍历其元素的,二维数组可以是通过霜或双重循环来遍历.数组的下标是从0开始的. 数组的替换,数组提供了一个方法,两种重载的形式,此方法为fill(),可以通过此方法来填充数组或者替换数组指定位置的元素. public class Array_Fill { public static

JAVA总裁--Java数组基础知识

1.数组的定义: 数组是由一组类型相同的数据元素构成的有序集合,每个数据元素称为一个数组元素(简称为元素),每个元素受n(n≥1)个线性关系的约束,每个元素在n个线性关系中的序号i1.i2.-.in称为该元素的下标,并称该数组为 n 维数组. 2.数组的特点: 元素本身可以具有某种结构,属于同一数据类型: 数组是一个具有固定格式和数量的数据集合. 3.数组的语法: package com.eduask.test; import java.util.Scanner; public class Ar