<Thinking in Java>读书笔记――数组
数组只是相同类型的,用一个标志符名称封装到一起的一个对象序列或基本数据类型序列。
数组的初始化
在java中,定义数组的格式可以是以下两种方式:
两种方式结果相同,以上只是定义了一个数组的引用,此时编译器不允许指定数组的大小,因为现在拥有的只是对数组的一个引用,并没有为数组分配任何空间。即如下方式定义是错误的:
int[5] a;
int a[5];
若生成的是一个基本数据类型的数组,则java默认将数组中的每个元素设为0(若为boolean型,则设为false),若声明的是一个对象数组,则如下语句:
Object[] obj=new Object[10];
并没有完成初始化工作,必须为obj的每个元素赋值,初始化进程才算完成。
数组的复制
在java中可以将一个数组值赋给另一个数组值,所以可以有如下写法:
int[]a1=newint[5];
int[]a2;
a2=a1;
其实,真正做到的只是复制了一个引用,使a2指向a1的首地址。此时若a1中元素值改变,则a2中对应元素也必然会改变。可用如下例子进行验证:
int[]a1=newint[5];
for(inti=0;i<a1.length;i++)
a1[i]=i;
int[]a2;
a2=a1;
for(inti=0;i<a2.length;i++)
a2[i]++;
for(inti=0;i<a1.length;i++)
System.out.println("a1["+i+"]="+a1[i]);
输出结果依次为:1,2,3,4,5,可以发现a2中元素改变,a1中元素跟着改变。
如果想使a2与a1无关联,即a1的值赋给a2后,a1中元素再改变,a2中对应元素不受影响,可以使用如下方法:
int[]a1=newint[5];
for(inti=0;i<a1.length;i++)
a1[i]=i;
int[]a2=newint[5];
System.arraycopy(a1,0,a2,0,a1.length);
for(inti=0;i<a2.length;i++)
a2[i]++;
for(inti=0;i<a1.length;i++)
System.out.println("a1["+i+"]="+a1[i]);
此时,输出结果将依次为:0,1,2,3,4
但是需要注意的是,如果用System.arraycopy()方法,则a2必须被初始化。否则,会报出空指针的异常。
利用System.arraycopy()方法复制要比利用for()循环复制数组快很多。
数组的比较排序
数组的比较排序,可以直接利用Arrays.sort()方法,不需要自己写函数,如要实现一个字符串数组的正序排列,则用如下程序即可:
String[]b2=...{"b","e","c","d"};
Arrays.sort(b2);
for(inti=0;i<b2.length;i++)
System.out.println("b2["+i+"]="+b2[i]);
若要实现反序排列,则可以使用如下方式:
String[]b1=...{"b","e","c","d"};
Arrays.sort(b1,Collections.reverseOrder());
for(inti=0;i<b1.length;i++)
System.out.println("b1["+i+"]="+b1[i]);
其它
Arrays中还有两个方法值得注意,分别是:
Fill()用于以某个值填充整个数组
binarySearch()用于在排好序的数组中查找某个元素。
分享到:
相关推荐
本人在自学Thinking in Java这本书时所总结归纳的一些重点,希望能帮助大家更好地理解此书
Thinking in Java 自学笔记——第二章 一切皆对象 个人原创,不喜勿喷。
王者归来之--Java编程思想读书笔记 Think in java4th
这是我经过半年的认真研读《thinking in java》这本书的读书笔记,涉及到从容器一章开始的所有后续章节的内容,只有把握我笔记中的内容我想你就差不多弄懂了<thinking in java>这本书的精华
thinking in java读书笔记,内容不多,但觉得精彩,不好您可以在评论里骂我。
Thinking in Java 自学笔记——第一章 对象导论 个人原创,不喜勿喷。
英文版Thinking in java Thinking in Java Fourth Edition Bruce Eckel President, MindView, Inc.
以绝对敏锐的眼光解析thinking in java,彻底让你理解本章!
多年前thinking in java (4 edition)的读书笔记。记录了一些当时认为比较重要的知识点。
Thinking in Java 4th Edition Annotated Solutions Guide!
Thinking in Java(java编程思想) 第三版+第四版(完整中文版电子书+配套习题答案) 本资料包括四部分内容: 1、Thinking in Java 3th Edition.pdf为java编程思想第三版,是中文版,pdf格式,不是扫描版,非常清晰...
Thinking in Java 4Edition 练习题答案
java ,thinking in java ,源码,thinking in java 第四版源码。。欢迎使用
Thinking in java 电子书,经典java书籍
这是我看Thinking in java 做的笔记,和大家分享下,如有不明白的的地方可与我私信,或者直接问度娘。
Thinking in Java 习题答案, 源代码
thinking in java thinking in java thinking in java thinking in java thinking in java
thinking in java 文档
Thinking in Java 4th Edition 英文文字版,带书签 Annotated Solution Guide 有代码
Thinking In Java 练习题答案 第四版 Thinking In Java 练习题答案 第四版 Thinking In Java 练习题答案 第四版