`
TonyLian
  • 浏览: 401544 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【第27条】返回零长度的数组而不是null

阅读更多

   这一条从题目上即可了解几乎所有信息。虽然简单的没有什么可说的,但它真的非常让我“吃惊”。是呀,这么简单的道理怎么之前从没想过?为什么翻开我的代码,return null; 遍地开花!?

 

   如果非要解释一下原因,那只有一句话:避免给调用者带来过的的保护性检查的麻烦。

 

   那么,我们能否接着推论一下呢? —— 返回一个新new的实例,而不是null。如果从“避免给调用者带来过的的保护性检查的麻烦”,是有益处的,但同时可能会增加数据的传输量,尤其是在不同系统间、网络间。

 

 

这条很“简单”,就写这么点儿了

 

 

 

【Effective Java 学习笔记】系列连载专题请见:
http://tonylian.iteye.com/categories/64208

分享到:
评论

相关推荐

    JavaScript数组

    - **`shift()`:**移除数组第一个元素并返回该元素。 **示例代码:** ```javascript var arr = []; arr[0] = 1; arr[1] = 2; arr.push(3); // 添加元素到末尾 console.log(arr); // 输出 [1, 2, 3] arr.unshift(0)...

    C#-Leetcode编程题解之第27题移除元素.zip

    首先,让我们理解一下LeetCode第27题的题目描述:给定一个排序好的数组nums和一个目标值val,你需要在原地删除所有出现的该目标值,使得每个元素仅出现一次,返回移除后数组的新长度。注意不要使用额外的数组空间,...

    javascript入门笔记

    预定义好 :事先声明,但不是马上执行 反复使用 :可以被多次调用 代码块 :包含多条可执行的语句 2、函数的声明与调用 1、普通函数 语法: function 函数名(){ 语句块; } 调用:在JS中任何的合法位置处...

    C语言程序设计标准教程

     第三种方法与第二种方法的区别在于第三种方法中省去了结构名,而直接给出结构变量。三种方法中说明的boy1,boy2变量都具有图7.1所示的结构。说明了boy1,boy2变量为stu类型后,即可向这两个变量中的各个成员赋值。在...

    计算机二级公共基础知识

    例如,长度为8的线性表关键码序列为:[6,13,27,30,38,46,47,70],被查元素为38,首先将与线性表的中间项比较,即与第4个数据元素30相比较,38大于中间项30的值,则在线性表[38,46,47,70]中继续查找;...

    Java程序员面试题集.pdf,这是一份不错的文件

    第二十七,最有效率的计算2乘以8等于几的方法就是直接计算:2 * 8 = 16。 第二十八,两个对象值相同(x.equals(y) == true),但可能有不同的hashcode,这是因为hashCode是基于对象的内容生成的,不同的对象即使内容...

    jsp 内置对象(包括其具体方法)

    返回指定头部字段的第一个值。如果该头部字段不存在,则返回`null`。 12. **`long getDateHeader(String name)`** 返回指定头部字段的时间值,以毫秒为单位。如果该头部字段不存在,则返回-1。 13. **`int ...

    计算机二级c语言笔试练习题

    第二题中,`010`在C语言中表示八进制数。`++i`在前自增,`j--`在后自减,理解这些操作对数值的影响是解答此类题目的关键。 3. 字符变量与ASCII码: 第三题考察了ASCII码,字母'A'的ASCII值是65,而'Y'的ASCII值比...

    按键精灵零基础操作指南

    ### 按键精灵零基础操作指南知识点解析 #### 一、数据类型 在按键精灵中,数据类型的处理较为灵活,支持自动转换,并且在数值与文本之间有明确的优先级设定——数值高于文本。例如,在执行 `TracePrint "123" + ...

    你必须知道的495个C语言问题

    5.10但是如果NULL的值改变了,比如在使用非零内部空指针的机器上,用NULL(而不是0) 不是更好吗? 5.11 我曾经使用过一个编译器,不使用NULL就不能编译。 5.12 我用预处理宏#defineNullptr(type)(type*)0帮助...

    Java基础之笔记系列—Day06(面向对象)

    - **第二个一维数组`arr[1] = {2, 7}`;** - **第三个一维数组`arr[2] = {9, 0, 1, 6}`;** - **第三个一维数组的长度表示方式:`arr[2].length`;** **应用:求二维数组所有元素的和** ```java class Array2Demo ...

    JAVA大学教程(第五版)[7]

    ### JAVA大学教程(第五版)[7]:数组详解 #### 7.1 引言 在本章节中,我们将深入探讨数组的概念及其在Java中的应用。数组是一种数据结构,用于存储相同类型的多个元素。一旦创建了数组,其大小就固定不变(即长度不...

    JAVA程序员面试32问,你能回答多少题

    第二十七,2乘以8最有效率的方法就是直接计算,即2 * 8 = 16。 第二十八,两个对象值相同但hash code不同是可能的,因为不同的对象可能有相同的equals()结果,但它们的hash code不一定相同。 第二十九,当对象作为...

    《你必须知道的495个C语言问题》

    5.10 但是如果NULL的值改变了,比如在使用非零内部空指针的机器上,用NULL(而不是0) 不是更好吗? 58  5.11 我曾经使用过一个编译器,不使用NULL就不能编译。 58 5.12 我用预处理宏#define Nullptr(type)(type...

    JAVA程序员面试经典的32问

    第二十至第三十二的问题涉及Java语言的多个方面,包括类的继承、多线程、异常处理、语法特性、数据类型以及设计模式等。这些问题的回答需要详细解释各个概念并给出示例代码,篇幅较长,无法在此处一一展开。在实际...

    java陷阱--面试(题集)杂谈

    第二十七,try后的finally块总会被执行,无论是否有return语句。return前执行finally块中的代码,然后返回结果。 第二十八,计算2乘以8最有效率的方式就是直接写2 * 8。 第二十九,两个对象值相同(x.equals(y) ==...

    数据结构题

    第一趟排序后序列变为5, 16, 18, 19, 23, 21,第二趟排序后的结果为:5, 16, 18, 19, 23, 21。 #### 64. 线性表的存储结构有哪两种,各有何特点? 解析:线性表的存储结构主要有**顺序存储**和**链式存储**两种。 ...

    JavaScript 权威指南(第四版).pdf

     第二部分 客户端JavaScript  第13章 Web浏览器中的JavaScript309  13.1 客户端JavaScript309  13.2 在HTML里嵌入JavaScript313  13.3 JavaScript程序的执行319  13.4 兼容性和互用性326  13.5 可访问性333 ...

    JavaScript权威指南(第6版)中文版pdf+源代码

     第二部分 客户端JavaScript  第13章 Web浏览器中的JavaScript309  13.1 客户端JavaScript309  13.2 在HTML里嵌入JavaScript313  13.3 JavaScript程序的执行319  13.4 兼容性和互用性326  13.5 可访问性333 ...

Global site tag (gtag.js) - Google Analytics