Thinking in Java——笔记(16)
Arrays
Why arrays are special
- There are three issues that distinguish arrays from other types of containers: efficiency, type, and the ability to hold primitives.
- The cost of this speed is that the size of an array object is fixed and cannot be changed for the lifetime of that array.
- You should generally prefer an ArrayList to an array.
- You’ll get a RuntimeException if you exceed the bounds, indicating a programmer error.
- Arrays are superior to pre-generic containers because you create an array to hold a specific type.
Arrays are first-class objects
- The array identifier is actually a reference to a true object that’s created on the heap. This is the object that holds the references to the other objects.
- length member that tells you how many elements can be stored in that array object.
Returning an array
- Returning an array is just like returning any other object—it’s a reference.
- The garbage collector takes care of cleaning up the array when you’re done with it, and the array will persist for as long as you need it.
Multidimensional arrays
- Each vector in the arrays that make up the matrix can be of any length.
- The Arrays.deepToString( ) method works with both primitive arrays and object arrays.
Arrays and generics
- You cannot instantiate arrays of parameterized types.
- Erasure removes the parameter type information, and arrays must know the exact type that they hold, in order to enforce type safety.
- You can parameterize the type of the array itself.
- The compiler won’t let you instantiate an array of a generic type. However, it will let you create a reference to such an array.
- Although you cannot create an actual array object that holds generics, you can create an array of the non-generified type and cast it.
- A generic container will virtually always be a better choice than an array of generics.
Creating test data
Arrays.fill()
- Since you can only call Arrays.fill( ) with a single data value, the results are not especially useful.
Data Generators
- If a tool uses a Generator, you can produce any kind of data via your choice of Generator.
Array Utilities
- There are six basic methods in Arrays: equals(), fill(), binarySearch(), sort(), toString(), hashCode().
Copying an array
- The Java standard library provides a static method, System.arraycopy( ), which can copy arrays.
- If you copy arrays of objects, then only the references get copied—there’s no duplication of the objects themselves.
Comparing arrays
- To be equal, the arrays must have the same number of elements, and each element must be equivalent to each corresponding element in the other array, using the equals( ) for each element.
Array element comparisons
- You hand a Strategy object to the code that’s always the same, which uses the Strategy to fulfill its algorithm.
- sort( ) casts its argument to Comparable.
Sorting an array
- The sorting algorithm that’s used in the Java standard library is designed to be optimal for the particular type you’re sorting—a Quicksort for primitives, and a stable merge sort for objects.
Searching a sorted array
- If you try to use binarySearchC ) on an unsorted array the results will be unpredictable.
- Otherwise, it produces a negative value representing the place that the element should be inserted if you are maintaining the sorted array by hand.
- If an array contains duplicate elements, there is no guarantee which of those duplicates will be found.
Thinking in Java——笔记(16)的更多相关文章
- Java笔记16:多线程共享数据
一.Thread实现 public class ThreadDemo4 { publicstaticvoid main(String[] args) { new ThreadTest4().start ...
- java笔记整理
Java 笔记整理 包含内容 Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, E ...
- Effective Java笔记一 创建和销毁对象
Effective Java笔记一 创建和销毁对象 第1条 考虑用静态工厂方法代替构造器 第2条 遇到多个构造器参数时要考虑用构建器 第3条 用私有构造器或者枚举类型强化Singleton属性 第4条 ...
- Java笔记3-for,switch循环,格式化输出,随机数
大纲:一.分支结构 if switch二.循环 for while do while break continue三.格式化输出 [printf] int score = 100; String na ...
- java笔记00-目录
--2013年7月26日17:49:59 学习java已久,趁最近有空,写一个总结: java笔记01-反射:
- Ext.Net学习笔记16:Ext.Net GridPanel 折叠/展开行
Ext.Net学习笔记16:Ext.Net GridPanel 折叠/展开行 Ext.Net GridPanel的行支持折叠/展开功能,这个功能个人觉得还说很有用处的,尤其是数据中包含图片等内容的时候 ...
- SQL反模式学习笔记16 使用随机数排序
目标:随机排序,使用高效的SQL语句查询获取随机数据样本. 反模式:使用RAND()随机函数 SELECT * FROM Employees AS e ORDER BY RAND() Limit 1 ...
- golang学习笔记16 beego orm 数据库操作
golang学习笔记16 beego orm 数据库操作 beego ORM 是一个强大的 Go 语言 ORM 框架.她的灵感主要来自 Django ORM 和 SQLAlchemy. 目前该框架仍处 ...
- 转 Java笔记:Java内存模型
Java笔记:Java内存模型 2014.04.09 | Comments 1. 基本概念 <深入理解Java内存模型>详细讲解了java的内存模型,这里对其中的一些基本概念做个简单的笔记 ...
随机推荐
- Python的由来
Python的由来 Python这门语言是由C开发而来. C语言: 代码编译得到 机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作 其他语言: 代码编译得到 字节码 ,虚拟机执行字节码并转 ...
- java9
1:StringBuffer(掌握) (1)用字符串做拼接,比较耗时并且也耗内存,而这种拼接操作又是比较常见的,为了解决这个问题,Java就提供了 一个字符串缓冲区类.StringBuffer供我们使 ...
- c#接口
//接口中方法 属性 事件等默认都是public 不允许用修饰符修饰 public interface IEventInterFace { string this[int index] { get; ...
- 设置windows开机自启某个软件
位置:C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 把要启动的软件,放在这个 ...
- 【原创】js中input type=file的一些问题
1.介绍 在开发中,文件上传必不可少,input[type=file] 是常用的上传标签,但是它长得又丑.浏览的字样不能换,但是他长得到底有多丑呢.我们来看看在不同浏览器里的样子吧. <inpu ...
- GitHub团队项目合作流程
已在另一篇博客中写出关于以下问题的解决,点此进入: 同步团队项目到本地时出现冲突怎么办? 项目负责人merge一个Pull Request后发现有错怎么回退? 目录: 零.前期准备 一.创建开发分支 ...
- sqlserver 分离和附加
1.何为数据库分离和附加 数据库分离: 分离数据库就是将某个数据库(如student_Mis)从SQL Server数据库列表中删除,使其不再被SQL Server管理和使用,但该数据库的文件(.MD ...
- MyBatis学习(三)
输入和输出映射 resultType 指定输出结果的类型(pojo.简单类型.hashmap等),将sql查询结果映射为java对象 . 注意:sql查询的列名要和resultType指定pojo的属 ...
- FTP协议及工作原理
1. FTP协议 什么是FTP呢?FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写. 该协议是Internet文件传送的基础,它由一系列规格说明文 ...
- node+fis3搭建
node安装: 到https://nodejs.org/en/download/releases下载编译好的包, 如:https://nodejs.org/download/release/v4.4. ...