Java 数组基础,java.util.Arrays
定义数组
方式1(推荐,更能表明数组类型)
方式2(同C语言)
方式3定义时直接初始化
数组运用基础
数组长度
equals()
数组元素不为基本数据类型时
二维数组
二维数组基础
变长的二维数组
java.utils.Arrays 类
参考文献:
数组(Array):相同类型数据的集合。
定义数组
方式1(推荐,更能表明数组类型)
type[] 变量名 = new type[数组中元素的个数];
比如:
int[] a = new int[10];
数组名,也即引用a,指向数组元素的首地址。
方式2(同C语言)
type变量名[] = new type[数组中元素的个数];
比如:
int a[] = new int[10];
方式3定义时直接初始化
type[] 变量名 = new type[]{逗号分隔的初始化值};
其中红色部分可省略,所以又有两种:
int[] a = {1,2,3,4};
int[] a = new int[]{1,2,3,4};
其中int[] a = new int[]{1,2,3,4};的第二个方括号中不能加上数组长度,因为元素个数是由后面花括号的内容决定的。
数组运用基础
数组长度
Java中的每个数组都有一个名为length的属性,表示数组的长度。
length属性是public final int的,即length是只读的。数组长度一旦确定,就不能改变大小。
equals()
数组内容的比较可以使用equals()方法吗?
如下程序:
|
public int[] a = { 1, 2, 3 }; int[] b = { 1, 2, 3 };
System.out.println(a.equals(b)); // false System.out.println(Arrays.equals(a, b)); // true } |
输出为:
|
false true |
所以证明不能直接用equals()方法比较数组内容,因为没有override Object中的实现,所以使用的是其内存地址进行比较,也就是采用==实现equals()方法,比较是否为同一个对象。
怎么比较呢?一种解决方案是自己写代码,另一种方法是利用java.util.Arrays的equals方法。
数组元素不为基本数据类型时
数组元素不为基本原生数据类型时,存放的是引用类型,而不是对象本身。当生成对象之后,引用才指向对象,否则引用为null。
如下列程序:
|
package array;
public public Person[] p = new Person[3];
// 未生成对象时,引用类型均为空 System.out.println(p[0]);
// 生成对象之后,引用指向对象 p[0] = new Person(10); p[1] = new Person(20); p[2] = new Person(30);
for (int System.out.println(p[i].age); } } }
class Person { int
public Person(int this.age = age; } } |
输出为:
|
null 10 20 30 |
也可以在初始化列表里面直接写:
Person[] p = new Person[]{new Person(10), new Person(20), new Person(30)};
二维数组
二维数组是数组的数组。
二维数组基础
基本的定义方式有两种形式,如:
type[][] i = new type[2][3];(推荐)
type i[][] = new type[2][3];
如下程序:
|
package array;
public public
int[][] i = new
System.out.println("Is i an Object? " + (i
System.out.println("Is i[0] an int[]? " + (i[0] instanceof
} } |
输出为:
|
Is i an Object? true Is i[0] an int[]? true |
变长的二维数组
二维数组的每个元素都是一个一维数组,这些数组不一定都是等长的。
声明二维数组的时候可以只指定第一维大小,空缺出第二维大小,之后再指定不同长度的数组。但是注意,第一维大小不能空缺(不能只指定列数不指定行数)。
如下程序:
|
package array;
public public // 二维变长数组 int[][] a = new a[0] = new a[1] = new a[2] = new
// Error: 不能空缺第一维大小 // int[][] b = new int[][3]; } } |
二维数组也可以在定义的时候初始化,使用花括号的嵌套完成,这时候不指定两个维数的大小,并且根据初始化值的个数不同,可以生成不同长度的数组元素。
如下程序:
|
package array;
import java.util.Arrays;
public public
int[][] c = new
for (int[] arr : c) { System.out.println(Arrays.toString(arr)); } } } |
输出为:
|
[1, 2, 3] [4] [5, 6, 7, 8] |
java.utils.Arrays 类
public class Arrays
extends Object
此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。
除非特别注明,否则如果指定数组引用为 null,则此类中的方法都会抛出
NullPointerException。
此类中所含方法的文档都包括对实现
的简短描述。应该将这些描述视为实现注意事项,而不应将它们视为规范
的一部分。实现者应该可以随意替代其他算法,只要遵循规范本身即可。(例如,sort(Object[])
使用的算法不必是一个合并排序算法,但它必须是稳定的。)
此类是
Java Collections Framework
的成员。
具体说明请查看下表:
|
方法 |
说明 |
|
asList |
将数组转成List,基本类型的数组。此方法同 Collection.toArray() 一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。 |
|
binarySearch |
使用二分搜索法来获得索引位置 |
|
copyOf |
复制指定的数组,截取或用 null 填充(如有必要),以使副本具有指定的长度。 |
|
copyOfRange |
将指定数组的指定范围复制到一个新数组。 |
|
equals和deepEquals |
区别是deepEquals适用于多维数组 |
|
hashCode和deepHashCode |
deepHashCode基于指定数组的"深层内容"返回哈希码。如果deepEquals的结果是true,则deepHashCode相等 |
|
fill |
将指定的 boolean 值分配给指定 boolean 型数组的每个元素。 |
|
sort |
对数组进行排序 |
|
toString |
返回指定数组内容的字符串表示形式。 |
参考文献:
JDK API 1.6.0 中文版
Java 数组基础,java.util.Arrays的更多相关文章
- [ Java学习基础 ] Java的继承与多态
看到自己写的东西(4.22的随笔[ Java学习基础 ] Java构造函数)第一次达到阅读100+的成就还是挺欣慰的,感谢大家的支持!希望以后能继续和大家共同学习,共同努力,一起进步!共勉! ---- ...
- [ Java学习基础 ] Java构造函数
构造方法是类中特殊方法,用来初始化类的实例变量,它在创建对象(new运算符)之后自动调用. Java构造方法的特点如下: 构造方法名必须与类名相同. 构造方法没有任何返回值,包括void. 构造方法只 ...
- [ Java学习基础 ] Java的抽象类与接口
一.抽象类 1. 抽象类 Java语言提供了两种类:一种是具体类:另一种是抽象子类. 2. 抽象类概念: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的 ...
- 第二十六节:复习Java语言基础-Java的概述,匿名对象,封装,构造函数
Java基础 Java语言概述 Java语言 语言 描述 javaee 企业版 javase 标准版 javame 小型版 JDK JDK(Java开发工具包) Java语言 语言 Java语言 Ja ...
- Java 学习(20):Java Applet 基础 & Java 文档注释
-- Java Applet 基础 -- Java 文档注释 Java Applet 基础 Applet 是一种 Java 程序.它一般运行在支持 Java 的 Web 浏览器内.因为它有完整的 Ja ...
- java数组、java.lang.String、java.util.Arrays、java.lang.Object的toString()方法和equals()方法详解
public class Test { public static void main(String[] args) { int[] a = {1, 2, 4, 6}; int[] b = a; in ...
- Java 数组基础
数组 数组(Array):相同类型数据的集合. 定义数组 方式1(推荐,更能表明数组类型) type[] 变量名 = new type[数组中元素的个数]; 比如: int[] a = new int ...
- java数组基础
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- Java数组操作利器:Arrays工具类
java.util.Arrays提供大量的工具方法来操作数组,这些方法全是静态方法. 1 便捷创建List public static <T> List<T> asList(T ...
随机推荐
- Delphi 7连接MySql 5.5.15
原文:http://blog.csdn.net/akof1314/article/details/6822902/ 网上有很多关于Delphi连接MySql数据库的文章,在这里,我只记录下自己测试过的 ...
- Android学习笔记之百度地图
步行路线搜索及RouteOverlay 方式与驾车路线搜索类似,只需将mMKSearch.drivingSearch(null, start, null, end)修改为mMKSearch.walki ...
- 【每日一摩斯】-Index Skip Scan Feature (212391.1)
INDEX Skip Scan,也就是索引快速扫描,一般是指谓词中不带复合索引第一列,但扫描索引块要快于扫描表的数据块,此时CBO会选择INDEX SS的方式. 官方讲的,这个概念也好理解,如果将复合 ...
- pt-online-schema-change原理解析 博客相关需要阅读
xiaoboluo768 http://www.lai18.com/user/481193.html 都说pt-toolkit工具集中的pt-online-schema-change可以在线不锁 ...
- SQL用法总结
1.创建数据库语句 create table persons( 'id' INT NOT NULL AUTO_INCREMENT, ) NOT NULL, ) NOT NULL, PRIMARY KE ...
- C#_deepCopy
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Run ...
- 小白日记35:kali渗透测试之Web渗透-手动漏洞挖掘(一)-默认安装引发的漏洞
手动漏洞挖掘 即扫描后,如何对发现的漏洞告警进行验证. #默认安装 流传linux操作系统比windows系统安全的说法,是因为windows系统默认安装后,会开放很多服务和无用的端口,而且未经过严格 ...
- Android(java)学习笔记90:泛型类的概述和使用
用法一: 下面我们首先定义泛型类: package cn.itcast_04; /* * 泛型类:把泛型定义在类上 */ public class ObjectTool<T> { //这里 ...
- CSS完成三角形
通过设置div的border属性,来实现! 将div的height和width属性分别设置为0px,将4边的border值设置为一样的宽度,通过调节边框的颜色课看到效果. <style> ...
- cocos2d-x——在一个cpp中展示多个场景
//20秒后自动运行下一个场景 runAction( CCSequence::create(CCDelayTime::create(20.0f), CCCallFunc::create(this, c ...