<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 读书笔记知识点总结 #### 一、万事万物皆对象 1. **对象存储位置** - **寄存器**:程序无法直接控制。 - **栈(Stack)**:存储基本类型数据和对象引用,但对象本身不在此处。 - **堆(Heap)...
### Thinking in Java 自学笔记——第二章 一切皆对象 #### 重要概念解析 ##### 2.1 用引用操纵对象 在Java中,一切都被视为对象,这意味着无论是字符串、数字还是其他数据类型都可以被视为对象来进行操作。当...
《Thinking in Java》是一本深度解析Java编程语言的经典著作,其深入浅出的讲解和丰富的实例使得读者能够全面理解Java的精髓。以下是对书中部分关键知识点的总结: 1. **Java 泛型**:泛型是Java SE 5.0引入的重要...
### Thinking in Java 读书笔记知识点总结 #### 一、构造器与方法重载 1. **构造器的特点**: - 构造器不返回任何值,与返回`void`不同。 - 当未在类中声明构造器时,编译器会自动生成一个默认的无参构造器。 - ...
Java》学习笔记 [TOC] 阅读计划 章节列表 对象导论 一切都是对象 操作符 控制执行流程 初始化与清理 访问权限控制 复用类 多态 接口 内部类 持有对象 通过异常处理错误 字符串 类型信息 泛型 数组 容器深入研究 Java...
在“java笔记之正则表达式”这篇笔记中,作者深入探讨了正则表达式的基本概念、操作方法以及在Java中的应用。 首先,正则表达式(Regular Expression)是一组符合特定规则的字符序列,主要用于字符串的查找、匹配、...
通过阅读《Thinking in Java》,你不仅可以掌握Java编程语言,还能了解到软件开发的许多重要原则和最佳实践。这本书适合有一定编程基础的读者,特别是对面向对象编程有兴趣的人群。通过深入学习,你可以提升自己的...
学习资源中的“thinking in java.chm”是经典书籍《Thinking in JAVA》的电子版,深入讲解了JAVA的各个方面;“JAVA语言入门.chm”可能是另一本JAVA入门教程,涵盖了基础知识;“Java学习.doc”则可能包含了一些学习...
3. **书籍**:《Head First Java》、《Thinking in Java》、《Java核心技术卷》等经典著作,深入浅出地讲解Java。 4. **社区讨论**:Stack Overflow、CSDN、知乎等技术社区,可以解决学习中的问题,分享经验。 ...
《Thinking in Java》是Java编程领域的一本经典著作,它深入浅出地讲解了Java语言的核心概念和技术。...以上是对《Thinking in Java》笔记中部分关键知识点的详细解析,这些内容构成了Java编程的基础和核心。
《Java编程思想》笔记 看了两个月,书中有穿插着一些设计模式应用到实际的例子中。这本书不会一味地讲语法,更多的是会讲一些Java的设计思想,比如他不会一开始就教你怎么用泛型,而是先介绍为什么会出现泛型,没有...
"Mastering Java: 一些旧的Java笔记" 提供了一个深入学习Java的资源,这可能是一个学习者或开发者在阅读《Thinking in Java》一书时所做的笔记。这本书由Bruce Eckel编写,是Java编程领域的一部经典著作,旨在帮助...
《Thinking in Java》是一本深度解析Java编程语言的权威书籍,笔记主要涵盖了Java的核心概念和技术。以下是基于笔记内容的关键知识点: 1. **类与对象**: - 类是对象的蓝图,它定义了一组相似对象的属性(数据...
此外,Sun Microsystems Press的在线教程和Bruce Eckel的《Thinking in Java》也是重要的参考资料。课程为期14周,每周两次80分钟的连续讲座,中间有短暂休息。课程笔记通常在每堂课前的周二发布,并通过Blackboard...
标题“summary.pdf”和描述“Java面向对象编程notes带个人笔记 COMP2511课程notes”透露这份文档可能是对Java面向对象编程的一系列课程笔记的总结。特别是,它似乎涵盖了个人对COMP2511课程的理解和注释,这可能是与...
3. **工具书**:经典的Java教材,如《Thinking in Java》、《Head First Java》等,提供了全面而深入的理论知识。 4. **在线视频**:通过观看教学视频,可以直观地看到代码的编写和执行过程,加深理解。 在...