数组的定义
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][] |
这相当于定义了length个type[]类型的变量,并且此时这些变量都是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 基础知识点汇总的详细说明: ### 1. 面向对象的特征 面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它强调使用对象和类来组织和结构化代码。面向对象编程的...
此外,本文还提供了一些相关的Java算法和数据结构教程的链接,例如《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》等等,感兴趣的读者可以...
"Java基础知识汇总.pdf" 本资源摘要信息是关于Java基础知识的总结,涵盖了Java语言的基本概念、语法、数据类型、操作符、控制流程、关键字等方面的知识点。 概念和提纲 Java技术是一种高级的面向对象的编程语言,...
传智播客的“Java基础知识汇总”提供了全面的学习资源,涵盖了从入门到进阶的诸多核心概念。以下是对这些文件中可能包含的知识点的详细解释: 1. **day01-java开发前奏.doc**:这个文档可能介绍了Java开发环境的...
Java基础编程题目总汇是针对Java初学者设计的一系列练习题,旨在巩固和深化Java编程基础知识。这些题目覆盖了从基本语法、数据类型到控制结构、类与对象、异常处理等多个核心领域,对于想要系统性地提升Java编程技能...
Java_Arrays 用Java处理数组-包括用户输入该文件创建包装在菜单系统中的以下数组: TVShows-创建一个新的阵列列表,该列表允许用户根据需要进行多次打印,添加,查看和删除。 MySize Array-包含一个double-用户可以...
java数组排列组合问题汇总 java数组排列组合问题是java编程中的一类经典问题,涉及到数组的排列和组合两个方面。排列和组合是离散数学中的一些基本概念,java数组排列组合问题就是将这些概念应用于java编程中。 在...
此外,本文还提供了一些相关的学习资源,例如《Java+MySQL数据库程序设计总结》、《Java数据结构与算法教程》、《Java文件与目录操作技巧汇总》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总》,这些资源...
jdk,eclipse使用,循环,数组,基础API,面向对象,循环,运算符,关键字,String详解,IO流
### Java基础知识点汇总 ...以上内容总结了Java基础知识点汇总中的一些核心概念,涵盖了变量的存储位置、泛型的基础、静态变量的应用场景、克隆机制以及数组的基本特性。这些知识点对于理解和使用Java语言至关重要。
Java 基础知识点汇总 在这篇文章中,我们将总结 Java 基础知识点,涵盖了作用域、匿名内部类、静态内部类、逻辑运算符、集合框架、断言、字符串处理、数学运算、数组操作、多态性等方面。 一、作用域 在 Java 中...
这份"Java基础教学汇总最新2018"是专为初学者设计的教育资源,特别适合正在学习编程的大学生和高中生。这份教程可能包括了Java语言的基础概念、语法特性、面向对象编程原理以及实际编程实践等内容。 首先,Java基础...
本思维导图汇总了Java的基础知识,对新手小白来说是一份很好的学习资源。 一、Java语法基础 1. 变量:Java中的变量是用来存储数据的容器,分为基本类型(如int、char、boolean)和引用类型(如类、接口、数组)。...
Java 汇总学习简介6主要涵盖了数组这一核心编程概念,它是所有程序设计语言中普遍存在的数据结构。学习数组的目的是为了能够有效地管理和操作一组相同类型的数据,这在编程中至关重要。 **数组的概念与类型** 数组...
此外,我们还推荐了几篇相关的文章,例如《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》,这些文章可以帮助大家更好地理解Java编程的相关...
"1+X 初级 Java程序设计基础 1-9 章测试题汇总"是一个针对初级Java程序员的全面学习资源,旨在帮助学习者巩固和提升Java编程技能。这个资料集合了蓝桥官网的1到9章测试题,覆盖了Java语言的基础概念、语法和常用编程...
《Java 基础核心总结》 Java 概述 什么是 Java2 Java 的特点Java 开发环境 JDK JRE Java 开发环境配置 Java 基本语法 数据类型基础语法运算符 Java 执行控制流程条件语句 if 条件语句 if...else 条件语句if...else ...
2. 数据类型:Java有两大类数据类型:基本类型(如int、char、boolean)和引用类型(类、接口、数组)。了解它们的内存分配和作用范围是必要的。 3. 变量与常量:变量用于存储数据,常量一旦初始化后不可更改。理解...