`

java 数组总结

    博客分类:
  • java
 
阅读更多
数组是可以保存一组数据的一种数据结构,它本身也会占用一个内存地址,因此数组是引用类型
一个数组中只能保存一种类型的数据,可以保存基本类型,也可以保存Object。一个int,一个String是不能同时保存在一个数组内的(如果是对象型数组,注意存放的每一个对象都必须被实例化,,如果这样定义就可以 Object[] o ={1,"2"})。
数组的长度规定好即固定,无论其保存的数据是否填满数组
数组一旦定义好就不可以修改长度,如果要修改就必须重新定义一个新数组或者引用其他的数组,因此数组的灵活性较差
数组拥有边界检查,尝试获取不在数组范围内的值时,会抛出ArrayIndexOutOfBoundsException异常
数组是一个有界的线性序列,大小被固定、随机访问速度非常快(超过集合);
数组如果没被初始化则为null,数组如果没被显式初始化,则会自动初始化。其中的值与数组元素类型的默认初始化值相同;
数组可以有多维的,但是,一维数组要比多维的快很多。在对效率要求很高的程序中,一般都不用多维数组,需要用的时候,也常常将多维数组转换为一维的存储方式;
数组的声明不能使用泛型,其实也没必要在数组上使用泛型;

二、数组的初始化

1、系统默认自动初始化
比如int[] a = int[3]; 实际上与int[] a= {0,0,0}相同。
如果是引用类型则其中自动初始化为null值。

2、显式指定初始化
int[] a= {0,0,0};
int[][] a1 = {{1,2,3},{4,5,6}};

3、使用工具初始化
int[] c = new int[3];
Arrays.fill(c,3);

三、java.util.Arrays

Arrays类是一个非常有用数组工具类,里面有很多工具方法,检索、填充、排序、比较、toString()等。

下面给个例子:
import java.util.Arrays;

/**
* 数组综合测试
*
* @author leizhimin 2009-7-28 12:35:41
*/
public class TestArrays {
        public static void main(String[] args) {
                int[] i = new int[10];
                //填充数组
                Arrays.fill(i, 2);
                //遍历数组
                for (int x : i) {
                        System.out.print(x + " ");
                }
                //toString()数组
                System.out.println("\n" + Arrays.toString(i));
                //复制数组
                int[] b = new int[12];
                System.arraycopy(i, 0, b, 2, 5);
                System.out.println(Arrays.toString(b));
                //一维数组的比较
                int[] c = new int[3];
                int[] d = new int[3];
                Arrays.fill(c, 3);
                Arrays.fill(d, 3);
                System.out.println(c.equals(d));
                System.out.println(Arrays.equals(c, d));
                System.out.println("-------------");
                int[][] a1 = {{1, 2, 3}, {4, 5, 6}};
                int[][] a2 = {{1, 2, 3}, {4, 5, 6}};
                System.out.println(a1.equals(a2));
                System.out.println(Arrays.equals(a1, a2));
                System.out.println(Arrays.deepEquals(a1, a2));
                //深度toString()
                System.out.println(Arrays.toString(a1));
                System.out.println(Arrays.deepToString(a1));

                //数组的排序
                int[] a3 = {3, 2, 5, 4, 1};
                System.out.println(Arrays.toString(a3));
                Arrays.sort(a3);
                System.out.println(Arrays.toString(a3));
                //一维数组数值检索
                int index1 = Arrays.binarySearch(a3, 4);
                int index2 = Arrays.binarySearch(a3, -12);
                int index3 = Arrays.binarySearch(a3,;
                System.out.println(index1 + " " + index2 + " " + index3);
        }
}

执行结果:
2 2 2 2 2 2 2 2 2 2   
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
[0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0]
false
true
-------------
false
false
true
[[I@3e25a5, [I@19821f]
[[1, 2, 3], [4, 5, 6]]
[3, 2, 5, 4, 1]
[1, 2, 3, 4, 5]
3 -1 -6

Process finished with exit code 0

四、数组的复制

java.lang.System

public static void arraycopy(Object src,
                             int srcPos,
                             Object dest,
                             int destPos,
                             int length)
参数:
    src - 源数组。
    srcPos - 源数组中的起始位置。
    dest - 目标数组。
    destPos - 目标数据中的起始位置。
    length - 要复制的数组元素的数量。

具体用法参看上例。

    五、补缺

1、数组的长度:数组名.length;
2、数组元素的访问:数组名[index],或数组名[index1][index2];

六、Array类
    java.lang.reflect.Array 提供了动态创建和访问 Java 数组的方法。
    java.sql.Array SQL 类型 ARRAY 在 Java 编程语言中的映射关系。

七、陷阱

1、填充数组,Arrays.fill()方法只能填充一维基本类型数组。

2、数组复制,不但适合一维数组,也适合多维数组,只是多维数组赋值时候要特别小心,有时候会出一些莫名其妙的问题

                int[][] a1 = {{1, 2, 3}, {4, 5, 6}};
                int[][] ax = new int[3][3];
                System.arraycopy(a1,1,ax,1,1);
                System.out.println(Arrays.deepToString(ax));

输出结果:
[[0, 0, 0], [4, 5, 6], [0, 0, 0]]

如果改为:
                int[][] a1 = {{1, 2, 3}, {4, 5, 6}};   
                int[][] ax = new int[2][4];
                System.arraycopy(a1,0,ax,0,1);
                int[] x1 = ax[0];
                System.out.println("二维数组第一个元素的长度:"+x1.length);
                System.out.println("-----");
                for (int[] t : ax) {
                        for (int _i : t) {
                                System.out.println(_i);
                        }
                        System.out.println("-----");
                }

输出结果:
二维数组第一个元素的长度:3
-----
1
2
3
-----
0
0
0
0
-----

这个结果看起来就太迷惑了!

3、数组的排序,只能排序基本类型数组,如果是其他类型,可以考虑使用集合工具Collections来做。

4、尽可能不要使用多维数组,多维数组效率会有很大的损失。


以上部分转自http://lavasoft.blog.51cto.com/62575/183878/
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java数组总结共9页.pdf.zip

    在这个"java数组总结共9页.pdf.zip"的文档中,我们很可能会找到关于Java数组的全面概述,包括其定义、创建、初始化、操作以及一些重要的特性。下面是对Java数组的详细解释。 一、数组的定义 在Java中,数组是一种...

    java数组总结使用手册

    ### Java数组总结使用手册 #### 一、数组基础概念 **1.1 什么是数组** 数组是一种基本的数据结构,用于存储一系列相同类型的元素。在Java中,数组是一种对象,它包含固定数量的相同类型的元素。数组中的每一个...

    Java数组与内存控制

    ### Java数组与内存控制 #### 一、Java数组在内存分配方面的知识 ##### 1.1 数组初始化 - **声明数组的时候如何分配内存:** - 在Java中,数组的声明并不直接分配内存,而仅仅是创建了一个数组引用变量。例如: ...

    java数组结构图

    对数组的总结和分析,通过这个结构记住它,在开发的过程中使用

    Java数组操作方法总结2.pdf

    本篇文章总结了十个重要的Java数组操作方法,适用于学习和复习Java编程知识。 1. **声明数组**: 在Java中声明数组时,我们需要指定数组的类型,然后用大括号{}初始化数组。例如,声明一个包含五个字符串的数组: ...

    java数组

    总结,Java数组作为基本的数据结构,是程序设计的基础。理解其创建、访问、遍历和操作方法,以及与字符串、集合的区别和联系,对于编写高效、可靠的Java代码至关重要。同时,熟练掌握`Arrays`类的使用能进一步提升...

    java 数组 PPT

    总结,Java数组是编程基础,理解其概念、创建和操作方法对于编写高效、可靠的代码至关重要。在实际编程中,根据需求选择合适的数据结构,如数组或集合,是解决问题的关键。通过深入学习和实践,可以更好地掌握数组这...

    java 数组和字符串

    ### Java数组和字符串详解 #### 实验目标与背景 本次实验旨在深化理解Java中的数组与字符串操作,聚焦于`String`类与`StringBuffer`类的掌握,包括它们的常用方法、相等性判断的不同方式、数组的创建及引用机制,...

    Java数组讲解

    ### Java数组讲解 #### 1. 数组基本概念与初始化 - **定义**: 数组是一种基本的数据结构,用于存储相同类型的多个元素。这些元素在内存中是连续存储的。 - **初始化**: 可以通过两种方式进行初始化:动态初始化和...

    Java数组操作方法总结1.pdf

    Java数组操作方法总结 Java数组操作方法总结是Java编程语言中一种基本的数据类型,数组是由一组相同类型的变量所组成的数据类型,它们以一个共同的名称表示,数组中的个别元素则以标注来表示其存放的位置。本文将...

    数组总结资源文档.xmind

    java数组总结文档

    Educoder题目:Java入门 - 数组进阶答案解析.md

    Educoder题目:Java入门 - 数组进阶答案解析

    java数组与字符串用法小结

    ### Java数组与字符串用法小结 在Java编程语言中,数组和字符串是两种非常重要的数据类型,它们在处理大量数据或文本时扮演着至关重要的角色。本文将围绕标题“java数组与字符串用法小结”及描述中的知识点进行详细...

    java数组 遍历方法集合

    ### Java数组遍历方法集合 在Java编程语言中,数组是一种基本的数据结构,用于存储同类型数据元素的集合。为了处理这些数据元素,通常需要遍历数组中的每一个元素来进行访问或操作。本文将详细介绍三种常用的Java...

    java数组与方法数组的定义及使用

    在Java编程语言中,数组是一种特殊的对象,它用于存储同类型的多个数据项。数组的定义、创建和使用是Java编程的基础,而方法数组则引入了更高级的概念,允许我们在一个数组中存储方法引用。让我们深入探讨这两个主题...

    java 数组元素类型不匹配异常(ArrayStoreException)

    在Java编程语言中,数组是一种固定...总结来说,理解Java中的数组类型和`ArrayStoreException`是编写安全、无错代码的关键。避免此异常的最佳实践是确保在存储元素时类型兼容,并在必要时进行适当的类型检查和转换。

    Java中数组常用方法的总结

    我对Java中数组的方法做了一下总结,希望能帮到各位

Global site tag (gtag.js) - Google Analytics