[Java 基础]数组

数组初始化

定义数组语法格式

定义数组有两种方式,如下两种格式是等价的:

int[] a1;
 int a1[];

 注:在C/C++中,不支持第一种格式。但是,推荐使用这种方式,因为这样似乎更合理,声明了一个整型数组类型的变量,名字为a1。

数组大小

 JAVA中,数组不允许在方括号中指定维度(即在方括号中指定数字来限制数组大小)。那么,如何限定数组的大小呢?有以下两种方式:

●使用初始化列表

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

注:初始化列表的最后一个逗号是可选的(这一特性使维护长列表变得更容易)。

对象数组

基本类型数组就是指保存的数据类型为基本类型的数组,如int、long、double等。

对象数组是指保存的数据类型为非基本类型的数组,如一些内置类或自定义类等。

对象数组和基本类型数组在使用上几乎是相同的唯一区别就是对象数组保存的是引用,而基本类型数组直接保存的是基本类型的

如下代码中,声明一个自定义类apple类型的数组。如果在数组的各元素还未初始化时就引用这些元素,运行时会报错(代码注释处)。

class Apple {
 }
 Apple[] apples;
 apples = new Apple[3];
 //System.out.println(apples[0].toString());
 for (int i = 0; i < 3; i++)
     apples[i] = new Apple();
 System.out.println(apples[0].toString());

使用new int[]

int[] array;
array = new int[5];    //分配一个含有5个int型元素大小的数组,所有元素自动初始化为0

数组赋值

不同于C/C++,在JAVA中,允许将一个数组整体赋值给另一个数组。如下:

int[] array = {1, 2, 3, 4, 5,};
 int[] array2;
 array2 = array;
 for (int i = 0; i < array2.length; i++) {
     array2[i] = array2[i] + 1; //给数组元素赋值
 }
 for (int i = 0; i < array.length; i++) {
     System.out.print(array[i] + " ");
 }

运行结果:

2 3 4 5 6

这里,其实是复制了一个引用。当array的引用复制给array2后,再对array2进行修改实际上等同于修改array。所以两个数组的值同时发生改变。

注:和C/C++一样,JAVA数组计数也是从第0个元素开始,所以下标最大值为length-1。如果超出边界,编译器会提示错误。

数组的特点

数组是一种效率最高存储随机访问对象引用序列的方式。

如果和现在广泛使用的容器相比较,它的优点在于访问效率比较高,缺点在于大小固定,没有容器的大小伸缩性。

Arrays实用功能

java.util.Arrays 类中提供了一套用于数组的static实用方法。以下介绍几个常用的基本方法:

方法名

作用

equals

比较两个数组是否相等,deepEquals用于多维数组

fill

用同一个值填充各个位置。

sort

对数组排序

binarySearch

用于已经排序的数组中查找元素

toString

产生数组的String表示

hashCode

产生数组的散列码

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏javathings

String.intern() 方法有什么作用?

String.intern() 方法可以使得所有含相同内容的字符串都共享同一个内存对象。

1083
来自专栏py+selenium

python爬虫常用正则表达式组合匹配

正则表达式在线测试工具:http://tool.oschina.net/regex/?optionGlobl=global

861
来自专栏郭耀华‘s Blog

Java Arrays工具类的使用

1253
来自专栏Java帮帮-微信公众号-技术文章全总结

07.Java变量类型

07.Java变量类型 Java 变量类型 在Java语言中,所有的变量在使用前必须声明。声明变量的基本格式如下: ? 格式说明:type为Java数据类型。i...

3437
来自专栏郭耀华‘s Blog

Java Arrays工具类的使用

Arrays 类 java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。具有以下功能: 给数组赋值:通过fill方法。 对数组...

3278
来自专栏十月梦想

ES6新的数据结构Set

Set一种新的数据结构,在之前数据的集合分为数组(Array)和对象(Object),ES6出现新的Set数据结构,和Map,这里先介绍一下Set.

1245
来自专栏数据结构与算法

#19. 计数(容斥原理)

时间限制:1s 内存限制:256MB 【问题描述】 给出m个数a[1],a[2],…,a[m] 求1~n中有多少数不是a[1],a[2],…,a[m]的倍数。 ...

2597
来自专栏吾爱乐享

java学习-string类的常用功能

1177
来自专栏程序员互动联盟

【Java概念学习】--数组的初始化

一维数组的声明方式: type var[]; 或type[] var; 声明数组时不能指定其长度(数组中元素的个数), Java中使用关键字new创建数组对象,...

32211
来自专栏个人随笔

sql sever模糊查询和聚合函数

使用is null 的时候 要确保 查询的列 可以为空! null:   01.标识  空值   02.不是0,也不是空串""   03.只能出现在定义 允许...

2936

扫码关注云+社区