数组

1.1 数组的特殊性

数组与其他种类的容器区别有三方面:效率,类型,保存基本类型的能力。

1.1.1

在java中,数组是一种效率最高的的存储和随机访问对象引用序列的方式。数组就是一个简单的线性序列,这使得元素访问非常快速。为这种速度的代价就是数组对象的大小被固定,并且其生命周期不可变。

1.1.2

数组可以持有基本类型,而泛型之前的容器不能。

int[]  arr = new int[5]; //正确
List<int> list = new ArrayList<int>(); //编译不通过

1.2 数组是第一级对象

1.2.1

length是数组唯一一个可以访问的字段或方法,用于访问数组长度(表示数组可容纳多少个元素,无法知道数组中确切的有多少个元素)。

1.2.2

[] 语法是访问数组对象的唯一方式

1.2.3

数组的初始化方式

//未初始化的数组
String[] a;
//容量为5的空数组,初始化为`null`
String[] b = new String[5];
//初始化有元素的数组
String[] c = {new String("A"),new String("B"),new String("C")}
//
String[] d = new String[]{new String("D"),new String("E")}

基本类型的数组如果是数值型的,初始化为0;char类型的,初始化为空(不是null,控制台输出空格);boolean初始化为false。

表达式:a=d; 说明如果将指向某个数组对象的引用赋给另一个数组对象,a与d都指向堆中的同一个数组对象。

1.2.4 Arrays实用功能

在讨论Arrays之前,先看一个不属于Arrarys但很有用的方法。

复制数组

java标准类库中提供有static方法System.arraycopy(),效率比for循环高很多。
arraycopy()需要的参数有:源数组,表示从源数组中的什么位置开始复制的偏移量;目标数组,表示从目标数组的什么位置开始复制的偏移量;个数,表示需要复制的元素个数。
当然,对数组的任何越界操作都会导致异常。

int[] i = new int[3];
int[] j = new int[5];
Arrays.fill(i,47);
Arrays.fill(j,99);
System.arraycopay(i,0,j,0,i.length);
print(Arrays.toString (j));//[47,47,47,99,99]

fill() 用同一个值填充各个位置,而正对对象而言,就是复制同一个引用进行填充

int[] a = new int[3];
Arrays.fill(a,2);
print("a=" + Arrays.toString(a));
/**
a=[2,2,2]
*/

equals 用于比较两个数组是否相等(deepEquals()用于多维数组),基于内容比较。

//数值比较
int[] a1 = new int[3];
int[] a2 = new int[3];
Arrays.fill(a1,47);
Arrays.fill(a2,47);
print(Arrays.equals(a1,a2)) //true

a2[1]=45;
print(Arrays.equals(a1,a2)) //false

//字符串比较
String[] s1 = new String[3];
Arrays.fill(s1,"HI")
String[] s2 = {new String("HI"),new String("HI"),new String("HI")}
print(Arrays.equals(s1,s2));//true

sort()用于对数组排序

String[] s = {new String("C"),new String("D"),new String("A"),new String("B"),new String("F")}
print(Arrays.toString(a));//[C,D,A,B,F]
Arrays.sort(s);
print(Arrays.toString(a));//[A,B,C,D,F]

binarySerach()用于在已经排序的数组中查找元素。如果找到目标,产生的返回值就是元素的角标。

int[] a= {2,3,4,6,7,8,10};
int location=Arrays.binarySerach(a,6);
print(location); // 3

toString()产生数组的String表示。
hashCode()产生数组的散列码。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,110评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,443评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,474评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,881评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,902评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,698评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,418评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,332评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,796评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,968评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,110评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,792评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,455评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,003评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,130评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,348评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,047评论 2 355

推荐阅读更多精彩内容

  • 数组是一种特殊的对象,保存零个或多个基本类型或引用类型的值。这些值是数组的元素,是通过所在位置或索引引用的无名变量...
    郭艺宾阅读 506评论 0 1
  • 第四天 数组【悟空教程】 第04天 Java基础 第1章数组 1.1数组概念 软件的基本功能是处理数据,而在处理数...
    Java帮帮阅读 1,599评论 0 9
  • 第五章 数组 数组是一个基础的数据结构,它用来存储一组相同类型的元素的集合。数组非常有用,例如Java提供的集合...
    光剑书架上的书阅读 503评论 0 6
  • 1 数组No11 数组:存放一组相同类型数据的数据结构 数组本身是引用数据类型,数组中的元素可以是基本数据类型...
    征程_Journey阅读 647评论 0 1
  • 修改php.ini文件添加 extension=swoole php.ini文件目录:/usr/local/php...
    StevenQin阅读 381评论 0 0