`

【Java基础汇总】数组

 
阅读更多

数组的定义

Java语言支持两种语法格式定义数组:

  • type[] arrayName;
  • type arrayName[];

为了更好的语音及可读性,应该使用第一种定义语法。

数组初始化

数组的初始化方式有两种:

  • 静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度。
  • 动态初始化:初始化时程序员只指定数组长度,由系统为数组元素分配初始值。

 

静态初始化语法如下:

arrayName = new type[]{element1, element2, …}

示例:String[] strs = new String[]{};

此外,还有一种简化语法,使用数组常量,如下:

arrayName = {element1, element2, …}

示例:int[] ints = {1, 2, 3,};

数组初始化列表的最后一个逗号都是可选的,这一特性使维护长列表变得更容易。

 

动态初始化语法如下:

arrayName = new type[length];

示例:double[] ds = new double[0];

动态初始化涉及数组中每个元素的自动初始化问题。当系统为每个元素分配内存空间时,其实是通过将内存空间所有二进制位设为0,以达到分配初始值的目的的。

多维数组

二维数组允许如下的初始化语法:

arrName = new type[length][]

这相当于定义了lengthtype[]类型的变量,并且此时这些变量都是null

更一般的,对于更高维的数组,允许仅指定至少最高维的前任意维的维度,如下:

arrName = new type[length1]…[]…

这导致低维数组元素都是null,所以后续需要对低维数组进行进一步初始化。对低维数组的初始化其实就是数组元素赋值而非定义赋值,所以对于数组常量的赋值方式将不适用。即以下赋值语句将导致编译错误:

intss[1] = {1, 2};

 

当我们说数组时,一般隐含“一维”这个默认前缀,并形象地把其看作一个线性列表;二维数组,我们又赋予矩阵一般的形象,这是“面性”的;三维数组被认为是“体性”的……再高维度的数组似乎就很难形象化了,这使得感观上很难认知。

实质上,Java里的数组可以说只有一维的。

我们先从最简单的多维数组——二维数组来看。一般地,二维数组type[][],该类型的数组变量是一个引用,这个引用指向真实的数组内存对象。此时数组元素类型为type[],也是引用,这个引用指向一维数组内存对象,其元素为type类型。

从这里我们隐隐可以看到递归结构的影子,通过观察更高维数组,这种递归结构很容易归纳出来。对于任意高维数组而言,其本质是一个元素类型为比其低一维的数组组成的一维数组。例如:type[][][][]数组,是一个元素类型为type[][][]的一维数组,type[][][]数组又是一个元素类型为type[][]的一维数组……这样,我们发现,所有数组都是一维的,数组的类型去掉一个[]就是元素类型。

参差数组

由于定义多维数组时,不必定义低维数组的长度,所以这使得多维数组拥有成为“参差数组”的能力,即同一维度下的数组元素中的数组的长度可以是不同的。如下:

              int[][] intss = new int[2][];

              intss[0] = new int[]{1, 2};

              intss[1] = new int[3];

intss是一个二维数组,它有2个元素,都是一维数组,而这2个一维数组,一个长度为2,另一个长度为3。这对于多维数组是允许的。

 

数组的类型

有的书上说,数组不是一个类,因为无法说出数组的类名。这种说法的准确性是值得商榷的。

首先,每个数组都是有类型的,这一点我们可以透过任意数组都有getClass()方法这点得知。

其次,并非我们不能说出数组的类名,只是盛装不同类型元素的数组其类型是不同的。

所以,数组的确不是一个类,因为它是许多类的一个统称,只是这些类都有相同的集合形式。

下面例举一些数组的类型:

数组

类型(类名)

byte[]

[B

short[]

[S

int[]

[I

long[]

[J

float[]

[F

double[]

[D

char[]

[C

boolean[]

[Z

String[]

[Ljava.lang.String;

int[][]

[[I

可以看出,无论什么类型的数组,其类名都是以“[”为前导符的,并且是多少维的数组就会有多少个前导符。另外,对于基本类型的数组而言,其类名都是前导符加上一个特征大写字母组成;而对于常规类型的数组而言,其类名是其元素类型完全限定名加上“L”字母前缀并再加前导符组成。

 

 

分享到:
评论

相关推荐

    Java基础知识笔试题及答案

    本资源汇总了 Java 基础知识笔试题及答案,涵盖了 Java 的基本概念、数据类型、运算符、控制结构、函数、数组、集合框架、泛型等方面的知识点。 一、Java 基本概念 Java 是一种面向对象的编程语言,它具有五个基本...

    java基础知识点汇总

    Java 基础知识点汇总 以下是 Java 基础知识点汇总的详细说明: ### 1. 面向对象的特征 面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它强调使用对象和类来组织和结构化代码。面向对象编程的...

    Java实现求子数组和的最大值算法示例

    此外,本文还提供了一些相关的Java算法和数据结构教程的链接,例如《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》等等,感兴趣的读者可以...

    Java基础知识汇总.pdf

    "Java基础知识汇总.pdf" 本资源摘要信息是关于Java基础知识的总结,涵盖了Java语言的基本概念、语法、数据类型、操作符、控制流程、关键字等方面的知识点。 概念和提纲 Java技术是一种高级的面向对象的编程语言,...

    传智播客_java基础知识汇总

    传智播客的“Java基础知识汇总”提供了全面的学习资源,涵盖了从入门到进阶的诸多核心概念。以下是对这些文件中可能包含的知识点的详细解释: 1. **day01-java开发前奏.doc**:这个文档可能介绍了Java开发环境的...

    java基础编程题目总汇

    Java基础编程题目总汇是针对Java初学者设计的一系列练习题,旨在巩固和深化Java编程基础知识。这些题目覆盖了从基本语法、数据类型到控制结构、类与对象、异常处理等多个核心领域,对于想要系统性地提升Java编程技能...

    Java_Arrays:用Java处理数组-包括用户输入

    Java_Arrays 用Java处理数组-包括用户输入该文件创建包装在菜单系统中的以下数组: TVShows-创建一个新的阵列列表,该列表允许用户根据需要进行多次打印,添加,查看和删除。 MySize Array-包含一个double-用户可以...

    java数组排列组合问题汇总

    java数组排列组合问题汇总 java数组排列组合问题是java编程中的一类经典问题,涉及到数组的排列和组合两个方面。排列和组合是离散数学中的一些基本概念,java数组排列组合问题就是将这些概念应用于java编程中。 在...

    Java实现批量向mysql写入数据的方法

    此外,本文还提供了一些相关的学习资源,例如《Java+MySQL数据库程序设计总结》、《Java数据结构与算法教程》、《Java文件与目录操作技巧汇总》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》,这些资源...

    Java基础知识汇总

    jdk,eclipse使用,循环,数组,基础API,面向对象,循环,运算符,关键字,String详解,IO流

    Java基础知识点汇总

    ### Java基础知识点汇总 ...以上内容总结了Java基础知识点汇总中的一些核心概念,涵盖了变量的存储位置、泛型的基础、静态变量的应用场景、克隆机制以及数组的基本特性。这些知识点对于理解和使用Java语言至关重要。

    java笔试题大集合及答案Java基础方面.doc

    Java 基础知识点汇总 在这篇文章中,我们将总结 Java 基础知识点,涵盖了作用域、匿名内部类、静态内部类、逻辑运算符、集合框架、断言、字符串处理、数学运算、数组操作、多态性等方面。 一、作用域 在 Java 中...

    Java基础教学汇总最新2018

    这份"Java基础教学汇总最新2018"是专为初学者设计的教育资源,特别适合正在学习编程的大学生和高中生。这份教程可能包括了Java语言的基础概念、语法特性、面向对象编程原理以及实际编程实践等内容。 首先,Java基础...

    Java基础思维导图(JAVA基础知识汇总)

    本思维导图汇总了Java的基础知识,对新手小白来说是一份很好的学习资源。 一、Java语法基础 1. 变量:Java中的变量是用来存储数据的容器,分为基本类型(如int、char、boolean)和引用类型(如类、接口、数组)。...

    Java 汇总学习简介6

    Java 汇总学习简介6主要涵盖了数组这一核心编程概念,它是所有程序设计语言中普遍存在的数据结构。学习数组的目的是为了能够有效地管理和操作一组相同类型的数据,这在编程中至关重要。 **数组的概念与类型** 数组...

    Java编程实现统计数组中各元素出现次数的方法

    此外,我们还推荐了几篇相关的文章,例如《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》,这些文章可以帮助大家更好地理解Java编程的相关...

    1+X 初级 Java程序设计基础 1-9 章测试题汇总

    "1+X 初级 Java程序设计基础 1-9 章测试题汇总"是一个针对初级Java程序员的全面学习资源,旨在帮助学习者巩固和提升Java编程技能。这个资料集合了蓝桥官网的1到9章测试题,覆盖了Java语言的基础概念、语法和常用编程...

    Java 基础核心总结 +经典算法大全.rar

    《Java 基础核心总结》 Java 概述 什么是 Java2 Java 的特点Java 开发环境 JDK JRE Java 开发环境配置 Java 基本语法 数据类型基础语法运算符 Java 执行控制流程条件语句 if 条件语句 if...else 条件语句if...else ...

    Java面试汇总,Java基础复习的好帮手

    2. 数据类型:Java有两大类数据类型:基本类型(如int、char、boolean)和引用类型(类、接口、数组)。了解它们的内存分配和作用范围是必要的。 3. 变量与常量:变量用于存储数据,常量一旦初始化后不可更改。理解...

Global site tag (gtag.js) - Google Analytics