[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() 方法可以使得所有含相同内容的字符串都共享同一个内存对象。

1.2K30
来自专栏前端知识分享

js数组常用方法总结

最近工作中经常用到数组操作,每次都傻傻不知道怎么用,今天有时间整理了一下,希望对大家有帮助!这些基础的知识,要熟记于心。

1K30
来自专栏程序员互动联盟

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

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

344110
来自专栏小詹同学

程序员面试必备之排序算法汇总(下)

希望小小詹同学学习同时能便于他人~ ---- 本文用Python实现了快速排序、插入排序、希尔排序、归并排序、堆排序、选择排序、冒泡排序共7种排序算法。上篇已...

356100
来自专栏测试开发架构之路

C++之迭代器

迭代器的概念 迭代器是用来访问string对象或vector对象的元素的,类似于下标运算和指针。 其对象是容器中的元素或string对象中的字符; 使用迭代器可...

31350
来自专栏测试开发架构之路

C++之虚函数的作用和使用方法

在同一类中是不能定义两个名字相同、参数个数和类型都相同的函数的,否则就是“重复定义”。但是在类的继承层次结构中,在不同的层次中可以出现名字相同、参数个数和类型都...

30080
来自专栏步履前行

Java基础系列---static关键字

  今天在和同事讨论的时候谈到了关于static的问题,正巧自己有一些忘记了,就特来学习一番。

14140
来自专栏前端说吧

JS-高程3(更新中...)

35870
来自专栏编程

Python基础2字符串

String 字符串是Python中最常用的数据类型,可以用单引号和双引号创建字 符串,字符串是不可变的。 字符串的基本操作:Python内建序列包括(列表、元...

20490
来自专栏PHP在线

php数组和字符串操作

抽象类 1.抽象类不能实例化 2.抽象方法必须被子类重写的方法 3.如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否包含其他一般方法。 抽象类通常代表一...

35370

扫码关注云+社区

领取腾讯云代金券