摘要:
我的算法学习之路 关于 严格来说,本文题目应该是我的数据结构和算法学习之路,但这个写法实在太绕口——况且CS中的算法往往暗指数据结构和算法(例如算法导论指的实际上是数据结构和算法导论),所以我认为本文题目是合理的。 我这些年学习数据结构和算法的总结。 一些不错的算法书籍和教程。 算法的重要性。 初学 阅读全文
posted @ 2018-10-24 12:25
尐鱼儿
阅读(134)
评论(0)
推荐(0)
摘要:
Android学习之路 by stormzhang.com 这篇博客背后的故事 一路走来很不容易,刚好知乎上被人邀请回答如何自学android编程, 就借这个机会在知乎上记录一路走来的历程,很励志,希望能给那些正在或准备走编程行业的人一些正能量,内容有点长,感兴趣的可以当做励志小说阅读吧。 收到一些 阅读全文
posted @ 2018-10-24 12:25
尐鱼儿
阅读(158)
评论(0)
推荐(0)
摘要:
理想的程序员 by 建造者说 我算是靠坑蒙拐骗进了程序员的门,然后一路狂奔。26岁之前几乎没有任何写代码的经验,研究生毕业却意外选择了一家不可能提供培训的初创公司,在每日担忧公司倒闭、害怕被炒鱿鱼以及同事冷落白眼的三重压力下逆流而上,一年半后离职,已是拥有500万用户产品的后台主程。从前我对计算机技 阅读全文
posted @ 2018-10-24 12:25
尐鱼儿
阅读(178)
评论(0)
推荐(0)
摘要:
Rob Pike:我得到的最佳编程建议 Rob Pike,目前谷歌公司最著名的软件工程师之一,曾是贝尔实验室Unix开发团队成员,Plan9操作系统开发的主要领导人,Inferno操作系统开发的主要领导人。他是缔造Go语言和Limbo语言的核心人物。下面是他分享给大家他在贝尔实验室工作的一段经历,这 阅读全文
posted @ 2018-10-24 12:24
尐鱼儿
阅读(311)
评论(0)
推荐(0)
摘要:
在过去的几个月里,我一直在学习用Objective-C编写iOS app,最后我开始理清思绪。这比我想象中要难很多,也花了太长时间。 我经常遇到困难、感到沮丧,修复bug比实际写代码要花太多时间。但是,在我的手机上把玩我从头开发的app有一种让人惊奇的感觉。 用这种方式我学到了很多,除了开发iOS 阅读全文
posted @ 2018-10-24 12:23
尐鱼儿
阅读(145)
评论(0)
推荐(0)
摘要:
回顾2014 Java发生的5件大事 1、2月1日:RedMonk分析师确认并宣布Java是最受欢迎和多样化的语言! 2014年,Java生态圈伴随着引擎的轰鸣起步,随着FOSDEM年会的Free Java会议一路飙升。除此之外,还有很多颇有深度的OpenJDK优秀技术演讲,以及(RedMonk分析 阅读全文
posted @ 2018-10-24 12:23
尐鱼儿
阅读(210)
评论(0)
推荐(0)
摘要:
对技术的态度 对于日新月异的新技术,你是什么态度? 遇到新技术我会去了解,但不会把很大的精力放在这些技术(如:NoSQL,Node.js,等)。这些技术尚不成熟,只需要跟得住就可以了。技术十年以上可能是一个门槛。有人说技术更新换代很快,我一点儿都不觉得是这样想。虽然有不成熟的技术不断地涌出,但是成熟 阅读全文
posted @ 2018-10-24 12:22
尐鱼儿
阅读(421)
评论(0)
推荐(0)
摘要:
码农提高工作效率 俗话说,天下武功,唯快不破。也就是说要练成天下高手的话,出招速度一定要快,这样才能在江湖上立足,不至于掉了脑袋。而程序员要在IT界混出个名堂,也要有高效的工作效率才行。IT行业时时刻刻都产生着新知识、新技术,要想跟上变革肯定要有几把刷子。 而我本人很喜欢各种各样的方式来提高自己的工 阅读全文
posted @ 2018-10-24 12:21
尐鱼儿
阅读(206)
评论(0)
推荐(0)
摘要:
可能会存在一种更快,更简单的编程语言,但就目前来说,根据Stack Overflow的最新统计,“传统”的编程语言依然在赚着大把的钱。在2013年,招聘程序员时,搜索最多的技能关键字是Java,几乎有四分之一的招聘者都在寻找Java开发人员。 在Careers 2.0(译者注:Stack Overf 阅读全文
posted @ 2018-10-24 12:20
尐鱼儿
阅读(130)
评论(0)
推荐(0)
摘要:
最近在培训课期间指导初学者。任务之一就是要大家完成一个类,要求这个类对key为String类型的map执行dwarwle操作。其中一位学员完成的类中,有如下方法: 这段代码总的来说是OK的。该方法将map中每个Dwarable的key和值,以及和它期望被分解的dwarwleKey一同传得给另一个调用 阅读全文
posted @ 2018-10-24 12:20
尐鱼儿
阅读(451)
评论(0)
推荐(0)
摘要:
JDK1.7的发布已经介绍了一些有用的特征,尽管大部分都是一些语法糖,但仍然极大地提高了代码的可读性和质量。其中的一个特征是介绍字面常量数字的下划线。从Java7开始,你就可以在你的Java代码里把长整型数字比如10000000000写成一个更具可读性10_000_000_000。在字面常量数字中加 阅读全文
posted @ 2018-10-24 12:19
尐鱼儿
阅读(1726)
评论(1)
推荐(0)
摘要:
在这篇文章中,我会带着大家一起看一下9个可以帮助我们优化Java性能的工具。有一些我们已经在IDR Solutions中使用了,而另外一些有可能在个人项目中使用。 NetBeans Profiler NetBeans profiler是一个NetBeans IDE插件,主要为NetBeans IDE 阅读全文
posted @ 2018-10-24 12:18
尐鱼儿
阅读(245)
评论(0)
推荐(0)
摘要:
Oracle已将JAVA 9的开发提上日程。OpenJDK上已经出现了关于下一个主版本JAVA 9的改进建议(JEP)。与以往不同,Oracle在这次谈及了一些真正的特性。而早期对于JDK9的声明仅限于“bug修复和一些小的改进”。译者注:有兴趣的同学可以看看JEP 地址如下 http://open 阅读全文
posted @ 2018-10-24 12:17
尐鱼儿
阅读(162)
评论(0)
推荐(0)
摘要:
我们都知道当一个线程试图访问同步代码块时,它首先必须得到锁,退出或抛出异常时必须释放锁。这些基础也许大家都知道,但是很多人还是搞不清哪个对象才是锁?如果你能正确回答以下问题,那么才算你彻底搞明白了哪个对象才是锁? 静态同步方法问题 如下代码是两个静态同步方法 那么我们来问几个问题 实例同步方法问题 阅读全文
posted @ 2018-10-24 12:15
尐鱼儿
阅读(182)
评论(0)
推荐(0)
摘要:
现在网上一眼望去,有很多关于描述懒惰是优秀程序员品质的博客和帖子,有时候,程序员这个主角也会变成开发人员。在这里我想说一说关于这个程序员的懒惰问题以及讨论一下这是好是坏。 如果你对如何开发软件了如指掌,学东西又很快,并且孜孜不倦地从试验和错误中学习。有什么异常你能立刻采取措施,迅速刷新浏览器,查看方 阅读全文
posted @ 2018-10-24 12:14
尐鱼儿
阅读(221)
评论(0)
推荐(0)
摘要:
感谢大家使用Java学习助手! 打一开始,这应用就是全开源,希望大家自觉遵循开源协议,还Android开发一片净土(国内的情况你懂的) 接下来都不会更频繁更新文章,大家更应该把注意力放在基础的模块那里,认真看完已经不错了。 附录: Java学习助手客户端源码:https://github.com/E 阅读全文
posted @ 2018-10-24 12:13
尐鱼儿
阅读(256)
评论(0)
推荐(0)
摘要:
我猜想许多人都知道访问者设计模式,这种模式在“四人帮”的那本可复用面向对象软件基础的书被描述过。这个模式自身其实一点也不复杂(和以往的其他设计模式一样)。 如上图所示: 我知道这个模式很久了,但是我至今都不需要它。Java通过本地方式处理多态:方法被调用时是基于调用这个方法的对象运行时的类型,而是不 阅读全文
posted @ 2018-10-24 12:10
尐鱼儿
阅读(534)
评论(0)
推荐(0)
摘要:
上下文切换(有时也称做进程切换或任务切换)是指 CPU 从一个进程或线程切换到另一个进程或线程。 进程(有时候也称做任务)是指一个程序运行的实例。在 Linux 系统中,线程就是能并行运行并且与他们的父进程(创建他们的进程)共享同一地址空间(一段内存区域)和其他资源的轻量级的进程。 上下文是指某一时 阅读全文
posted @ 2018-10-24 12:10
尐鱼儿
阅读(660)
评论(0)
推荐(0)
摘要:
关于“Google在Android平台使用Java侵犯知识产权”一案,2014年5月,联邦法院判定Oracle获胜,这个结果完全出人意料,因为这样一来无异于打开了软件开发领域中API使用方式的潘多拉之盒。Android使用的Java API是基于Google自己开发的Dalvik虚拟机,Google 阅读全文
posted @ 2018-10-24 12:09
尐鱼儿
阅读(400)
评论(0)
推荐(0)
摘要:
如何面试一个从事编程工作的开发人员既困难又乏味,幸好还有很多值得参考的指南,比如:《Joel Guerilla Guide to interviewing》,但最后雇佣与否,还得由你自己决定。为了快速地了解他们的编程能力,我想到了一个关于字符串反转的问题,有人用这道题取得不错的效果,这道题的答案有很 阅读全文
posted @ 2018-10-24 12:08
尐鱼儿
阅读(261)
评论(0)
推荐(0)
摘要:
Java是否支持多重继承? 好了,很明显传统意义上Java并没有多继承,所以正确的答案应该是:“没有”或者“有,但是”或者“没有,但是”。单从这点就可以探索出不同的方法来。通常我会问“是否因Java语言的设计者笨到没法实现多重继承”作为我们话题的开始,为什么C++那帮家伙实现了呢?我主要以菱形继承问 阅读全文
posted @ 2018-10-24 12:08
尐鱼儿
阅读(506)
评论(0)
推荐(0)
摘要:
lambda表达式,lambda表达式,还是lambda表达式。一提到Java 8就只能听到这个,但这不过是其中的一个新功能而已,Java 8还有许多新的特性——有一些功能强大的新类或者新的用法,还有一些功能则是早就应该加到Java里了。 这里我准备介绍它的10个我个人认为非常值得了解的新特性。总会 阅读全文
posted @ 2018-10-24 12:07
尐鱼儿
阅读(152)
评论(0)
推荐(0)
摘要:
前言 这篇文章中,我想谈一谈得墨忒耳定律(Law of Demeter,缩写LoD)。我觉得这个主题对于写出一手简洁、精心设计和易于维护的代码,是极其重要的。 根据我的经验,看到这条规则被打破,往往意味着我可以嗅到一股糟糕的设计在其中。而依据此定律去编写/重构,会使代码改善,清晰易懂且更易于维护。 阅读全文
posted @ 2018-10-24 12:07
尐鱼儿
阅读(595)
评论(0)
推荐(0)
摘要:
Java最显著的优势之一就是它的内存管理机制。你只需简单创建对象,然后Java垃圾回收机制便会小心的分配和释放内存。然而,事实并非如此简单,因为在Java应用程序中经常发生内存泄漏。 本教程说明了什么是内存泄漏,为什么会发生,以及如何防止它们。 1.什么是内存泄漏? 内存泄漏的定义: 对象不再被应用 阅读全文
posted @ 2018-10-24 12:06
尐鱼儿
阅读(1389)
评论(0)
推荐(0)
摘要:
没有什么事情比看到一个没有任何说明的@deprecated标注更让人愤怒的事情了。这种做法只能让人困惑,我到底还要不要用这个已经‘废弃’的方法?如果开发者不希望某个方法再被人用的话,就要好好地为@deprecated标注写说明。这篇文章就讨论了正确地使用@deprecated 标注需要遵守的一些规则 阅读全文
posted @ 2018-10-24 12:06
尐鱼儿
阅读(4017)
评论(0)
推荐(0)
摘要:
William F. Buckley.Jr 曾经说过,“保守主义者是那些逆着历史潮流不断喊停的人,其他人都不愿意这么做或者对他们这么做显得没有耐性”。虽然我对此了解不多,但是每次看到有Java开发人员做以下事情或者我自己被迫做这些事情时,总想跳出来叫停。 遍历结果集并构造对象 如果你是个时髦的开发者 阅读全文
posted @ 2018-10-24 12:05
尐鱼儿
阅读(178)
评论(0)
推荐(0)
摘要:
最近一直在帮忙调试一些让人头大的bug问题,这才意识到如何记录异常日志对于简化调试的重要性,我总结了几点记录异常日志的最佳实践发表在此。 1、记录技术性异常而不是用户异常 用户异常(如:“登录用户名已经存在”)除了显示给用户,要么什么都别管,要么根本就不是异常(“用户尚未认证”)。技术性异常(如:“ 阅读全文
posted @ 2018-10-24 12:03
尐鱼儿
阅读(899)
评论(0)
推荐(0)
摘要:
我现在的老板使用一个在线测试系统来筛选在线申请职位的求职者。测试的第一个问题很浅显,仅仅是为了让求职者熟悉一下这个系统的提交和测试代码的流程。问题是这样的,写一个将标准输入拷贝到标准输出的流程。求职者可以使用任何他们喜欢的编程语言来实现这个程序。 有时候我们也会遇到在这个测试中得零分的求职者。当我看 阅读全文
posted @ 2018-10-24 12:01
尐鱼儿
阅读(396)
评论(0)
推荐(0)
摘要:
作为Eclipse基金组织的执行董事,我需要经常审阅每一个新提交的Eclipse项目协议书。作为Eclipse的一分子,我很乐意与加入我们团队的新开发人员互动。这也是我工作中的乐趣之一。2013年,我见证了很多新项目加入Eclipse。在这篇文章中我将着重强调其中一些我觉得特别有趣的项目。然后我将根 阅读全文
posted @ 2018-10-24 12:00
尐鱼儿
阅读(450)
评论(0)
推荐(0)
摘要:
本章的大多数谜题都是颇具挑战性的。但是这个不是。下面这个程序会打印出什么呢?如果你相信的话,前2个程序被报告为系统的缺陷[Bug 4157460 4763901]: 如果你受够这些东西了,那么你不需要知道这些愚蠢谜题的详细解释,所以让我们把它们变得又短又甜: 1,这个程序会打印出1。这是由多余的标号 阅读全文
posted @ 2018-10-24 11:49
尐鱼儿
阅读(152)
评论(0)
推荐(0)
摘要:
下面的shuffle方法声称它将公平的打乱它的输入数组的次序。换句话说,假设其使用的伪随机数发生器是公正的,它将会以均等的概率产生各种排列的数组。它真的兑现了它的诺言吗?如果没有,你将如何订正它呢? 看看这个shuffle方法,它并没有什么明显的错误。它遍历了整个数组,将随机抽取的元素互换位置。这会 阅读全文
posted @ 2018-10-24 11:48
尐鱼儿
阅读(175)
评论(0)
推荐(0)
摘要:
下面这个程序使用一个匿名类执行了一个并不自然的动作。它会打印出什么呢? 根据一个肤浅的分析会判断该程序不能通过编译。reproduce方法中的匿名类试图调用Twisted类中的私有方法name。一个类不能调用另一个类的私有方法,是吗?如果你试图编译这个程序,你会发现它可以成功地通过编译。在顶层的类型 阅读全文
posted @ 2018-10-24 11:47
尐鱼儿
阅读(165)
评论(0)
推荐(0)
摘要:
下面这个谜题测试了你关于二进制兼容性(binary compatibility)的知识:当你改变了某个类所依赖的另外一个类时,第一个类的行为会发生什么改变呢?更特殊的是,假设你编译的是如下的2个类。第一个作为一个客户端,第二个作为一个库类,会怎么样呢: 现在假设你像下面这样改变了那个库类并且重编译了 阅读全文
posted @ 2018-10-24 11:47
尐鱼儿
阅读(105)
评论(0)
推荐(0)
摘要:
下面的程序实际上不会做任何事情。更糟的是,它连编译也通不过。为什么呢?又怎么来订正它呢? 这个程序看上去简单得不可能有错误,但是如果你尝试编译它,就会得到下面这个有用的错误消息: 好吧,可能这个消息不那么有用,但是我们还是从此入手。问题在于编译器产生的缺省的Inner2的构造器为它的super调用找 阅读全文
posted @ 2018-10-24 11:46
尐鱼儿
阅读(230)
评论(0)
推荐(0)
摘要:
这个程序创建了一个对象并且检查它是否遵从某个类的不变规则(invariant)。然后该程序序列化这个对象,之后将其反序列化,然后再次检查反序列化得到的副本是否也遵从这个规则。它会遵从这个规则吗?如果不是的话,又是为什么呢? 程序中除了使用了序列化之外,看起来是很简单的。子类Sub覆写了hashCod 阅读全文
posted @ 2018-10-24 11:46
尐鱼儿
阅读(195)
评论(0)
推荐(0)
摘要:
下面的程序由一个单一的类构成,该类表示一对类型相似的对象。它大量使用了5.0版的特性,包括泛型、自动包装、变长参数(varargs)和for-each循环。关于这些特性的介绍,请查看http://java.sun.com/j2se/5.0/docs/guide/language[Java-5.0]。 阅读全文
posted @ 2018-10-24 11:45
尐鱼儿
阅读(162)
评论(0)
推荐(0)
摘要:
和前一个谜题一样,本谜题也大量使用了泛型。我们从前面的错误中吸取教训,这次不再使用原生类型了。这个程序实现了一个简单的链表数据结构。main程序构建了一个包含2个元素的list,然后输出它的内容。那么,这个程序会打印出什么呢? 又是一个看上去相当简单的程序。新元素被添加到链表的表头,而dump方法也 阅读全文
posted @ 2018-10-24 11:45
尐鱼儿
阅读(115)
评论(0)
推荐(0)
摘要:
在数学中,等号(=)定义了一种真实的数之间的等价关系(equivalence relation)。这种等价关系将一个集合分成许多等价类(equivalence class),每个等价类由所有相互相等的值组成。其他的等价关系包括有所有三角形集合上的“全等”关系和所有书的集合上的“有相同页数”的关系等。 阅读全文
posted @ 2018-10-24 11:43
尐鱼儿
阅读(161)
评论(0)
推荐(0)
摘要:
你能否举出这样一个合法的Java表达式,只要对它的某个子表达式加上括号就可以使其成为不合法的表达式,而添加的括号只是为了注解未加括号时赋值的顺序? 插入一对用来注解现有赋值顺序的括号对程序的合法性似乎是应该没有任何影响的。事实上,绝大多数情况下确实是没有影响的。但是,在两种情况下,插入一对看上去没有 阅读全文
posted @ 2018-10-24 11:41
尐鱼儿
阅读(131)
评论(0)
推荐(0)
摘要:
下面这个可怜的小类实在是太懒了,甚至于都不愿意用通常的方法进行初始化,所以它求助于后台线程。这个程序会打印什么呢?每次你运行它的时候都会打印出相同的东西吗? 虽然有点奇怪,但是这个程序看起来很直观的。静态域 initialized 初始时被设为 false。然后主线程创建了一个后台线程,该线程的 r 阅读全文
posted @ 2018-10-24 11:14
尐鱼儿
阅读(245)
评论(0)
推荐(0)
摘要:
在下面这个程序中,一个线程试图中断自己,然后检查中断是否成功。它会打印什么呢? 虽然一个线程中断自己不是很常见,但这也不是没有听说过的。当一个方法捕捉到了一个 InterruptedException 异常,而且没有做好处理这个异常的准备时,那么这个方法通常会将该异常重新抛出(rethrow)。但是 阅读全文
posted @ 2018-10-24 11:12
尐鱼儿
阅读(138)
评论(0)
推荐(0)
摘要:
从前有一个人,他认为世上只有一只不寻常的狗,所以他写出了如下的类,将它作为一个单件(singleton)[Gamma95]: 结果证明这个人的做法是错误的。你能够在这个类的外部不使用反射来创建出第2 个 Dog 实例吗?这个类可能看起来像一个单件,但它并不是。问题在于,Dog 扩展了 Excepti 阅读全文
posted @ 2018-10-24 11:10
尐鱼儿
阅读(137)
评论(0)
推荐(0)
摘要:
这一章的许多谜题都涉及到了多线程,而这个谜题涉及到了多进程。如果你用一行命令行带上参数 slave 去运行这个程序,它会打印什么呢?如果你使用的命令行不带任何参数,它又会打印什么呢? 如果你使用参数 slave 来运行该程序,它就会打印出那首激动人心的名为”99Bottles of Beer on 阅读全文
posted @ 2018-10-24 02:14
尐鱼儿
阅读(152)
评论(0)
推荐(0)
摘要:
下面这个程序看起来是在用一种特殊的方法做一件普通的事。那么,它会打印出什么呢? 尽管这个程序有点奇怪,但是我们没有理由怀疑它会产生不正确的行为。它将“Hello World”写入了 System.out,每次写一个字符。你可能会意识到 write方法只会使用其输入参数的低位字节(lower-orde 阅读全文
posted @ 2018-10-24 02:13
尐鱼儿
阅读(112)
评论(0)
推荐(0)
摘要:
下面这个程序通过打印一个由反射创建的对象来产生输出。那么它会打印出什么呢? 这个程序看起来是最普通的 Hello World 程序的又一个特殊的变体。Outer 中的main 方法创建了一个 Outer 实例,并且调用了它的 greetWorld 方法,该方法以字符串形式打印了通过反射创建的一个新的 阅读全文
posted @ 2018-10-24 02:11
尐鱼儿
阅读(164)
评论(0)
推荐(0)
摘要:
下面的这个类模拟了一个家庭宠物的生活。main 方法创建了一个 Pet 实例,用它来表示一只名叫 Fido 的狗,然后让它运行。虽然绝大部分的狗都在后院里奔跑(run),这只狗却是在后台运行(run)。那么,这个程序会打印出什么呢? main 方法创建了一个用来表示 Fido 的 Pet 实例,并且 阅读全文
posted @ 2018-10-24 02:10
尐鱼儿
阅读(155)
评论(0)
推荐(0)
摘要:
这个谜题举例说明了一个关于反射的简单应用。这个程序会打印出什么呢? 这个程序首先创建了一个只包含单个元素的集合(set),获得了该集合上的迭代器,然后利用反射调用了迭代器的 hasNext 方法,最后打印出此该方法调用的结果。由于该迭代器尚未返回该集合中那个唯一的元素,hasNext 方法应该返回t 阅读全文
posted @ 2018-10-24 02:09
尐鱼儿
阅读(162)
评论(0)
推荐(0)
摘要:
下面的这段程序模拟了一个小车间。程序首先启动了一个工人线程,该线程在停止时间到来之前会一直工作(至少是假装在工作),然后程序安排了一个定时器任务(timer task)用来模拟一个恶毒的老板,他会试图阻止停止时间的到来。最后,主线程作为一个善良的老板会告诉工人停止时间到了,并且等待工人停止工作。那么 阅读全文
posted @ 2018-10-24 02:08
尐鱼儿
阅读(142)
评论(0)
推荐(0)
摘要:
下面的程序全部是由同步化(synchronized)的静态方法组成的。那么它会打印出什么呢?在你每次运行这段程序的时候,它都能保证会打印出相同的内容吗? 在多线程程序中,通常正确的观点是程序每次运行的结果都有可能发生变化,但是上面这段程序总是打印出相同的内容。在一个同步化的静态方法执行之前,它会获取 阅读全文
posted @ 2018-10-24 02:02
尐鱼儿
阅读(137)
评论(0)
推荐(0)
摘要:
这个程序的行为在 1.4 版和 5.0 版的 Java 平台上会有些变化。这个程序在这些版本上会分别做些什么呢?(如果你只能访问 5.0 版本的平台,那么你可以在编译的时候使用-source 1.4标记,以此来模拟 1.4 版的行为。) 该程序看起来根本没有使用 5.0 版的任何新特性,因此很难看出 阅读全文
posted @ 2018-10-24 01:58
尐鱼儿
阅读(239)
评论(0)
推荐(0)
摘要:
下面的程序是不完整的,它缺乏对 Enigma 的声明,这个类扩展自 java.lang.Object。请为Enigma 提供一个声明,它可以使该程序打印 false: 噢,还有一件事:你不能覆写 equals 方法。乍一看,这似乎不可能实现。因为 Object.equals 方法将测试对象的同一性, 阅读全文
posted @ 2018-10-24 01:56
尐鱼儿
阅读(182)
评论(0)
推荐(0)
摘要:
私有成员,即私有方法、域和类型这些概念的幕后思想是它们只是实现细节:一个类的实现者可以随意地添加一个新的私有成员,或者修改和移除一个旧的私有成员,而不需要担心对该类的客户造成任何损害。换句话说,私有成员被包含它们的类完全封装了。遗憾的是,在这种严密的盔甲保护中仍然存在细小的裂缝。例如,序列化就可以打 阅读全文
posted @ 2018-10-24 01:55
尐鱼儿
阅读(138)
评论(0)
推荐(0)
摘要:
本谜题旨在检验当你试图隐藏一个 final 域时将要发生的事情。下面的程序将做些什么呢? 因为在 Jeopardy 中的 PRIZE 域被声明为是 public 和 final 的,你可能会认为Java 语言将阻止你在子类中重用该域名。毕竟,final 类型的方法不能被覆写或隐藏。如果你尝试着运行该 阅读全文
posted @ 2018-10-24 01:54
尐鱼儿
阅读(166)
评论(0)
推荐(0)
摘要:
在 5.0 版中,Java 平台引入了大量的可以使操作数组变得更加容易的工具。下面这个谜题使 用了变量参数、自动包装、静态导入(请查看 http://java.sun.com/j2se/5.0/docs/guide/language[Java-5.0])以及便捷方法 Arrays.toString( 阅读全文
posted @ 2018-10-24 01:53
尐鱼儿
阅读(122)
评论(0)
推荐(0)
摘要:
下面这个程序设计在不同的包中的两个类的交互,main 方法位于 hack.TypeIt 中。那么,这个程序会打印什么呢? 本谜题看起来很直观。Hack.TypeIt 的 main 方法对 TypeIt.ClickIt 类实例化,然后调用其 doIt 方法,该方法是从 CodeTalk 继承而来。接着 阅读全文
posted @ 2018-10-24 01:52
尐鱼儿
阅读(125)
评论(0)
推荐(0)
摘要:
假设你不能修改前一个谜题(谜题 68)中的 X 和 C 这两个类。你能否编写一个类,其 main方法将读取 X.Y 类中的 Z 域的值,然后打印它。注意,不能使用反射。本谜题初看起来是不可能实现的。毕竟,X.Y 类被具有相同名字的一个域给遮掩了,因此对其命名的尝试将引用到该域上。事实上,我们是可以引 阅读全文
posted @ 2018-10-24 01:51
尐鱼儿
阅读(128)
评论(0)
推荐(0)
摘要:
下面的程序在相同的范围内具有两个名字相同的声明,并且没有任何明显的方式可以在它们二者之间做选择。这个程序会打印 Black 吗?它会打印 White 吗?甚至,它是合法的吗? 没有任何显而易见的方法可以确定该程序应该打印 Black 还是 White。编译器通常会拒绝模棱两可的程序,而这个程序看起来 阅读全文
posted @ 2018-10-24 01:50
尐鱼儿
阅读(154)
评论(0)
推荐(0)
摘要:
一个名字可以被用来引用位于不同包内的多个类。下面的程序就是在探究当你重用了一个平台类的名字时,会发生什么。你认为它会做些什么呢?尽管这个程序属于那种让你通常一看到就会感到尴尬的程序,但是你还是应该继续下去,把门锁上,把百叶窗拉上,然后试试看: 如果说这个程序有点让人讨厌的话,它看起来还是相当简单的。 阅读全文
posted @ 2018-10-24 01:49
尐鱼儿
阅读(117)
评论(0)
推荐(0)
摘要:
在下面的程序中,子类的一个域具有与超类的一个域相同的名字。那么,这个程序会打印出什么呢? 对该程序的表面分析可能会认为它应该打印 Derived,因为这正是存储在每一个 Derived 实例的 className 域中的内容。 更深入一点的分析会认为 Derived 类不能编译,因为 Derived 阅读全文
posted @ 2018-10-24 01:47
尐鱼儿
阅读(134)
评论(0)
推荐(0)
摘要:
下面的程序使用定制的比较器,对一个由随机挑选的Integer实例组成的数组进行排序,然后打印了一个描述了数组顺序的单词。回忆一下,Comparator接口只有一个方法,即compare,它在第一个参数小于第二个参数时返回一个负数,在两个参数相等时返回0,在第一个参数大于第二个参数时返回一个整数。这个 阅读全文
posted @ 2018-10-24 01:39
尐鱼儿
阅读(228)
评论(0)
推荐(0)
摘要:
下面的程序将生成整数对3取余的柱状图,那么,它将打印出什么呢? 该程序首先初始化int数组histogram,其每一个位置都为对3取余的一个数值而准备(0、1和2),所有这三个位置都被初始化为0。然后,该程序在所有232个int数值上遍历变量i,使用的是在谜题26中介绍的惯用法。因为整数取余操作(% 阅读全文
posted @ 2018-10-24 01:37
尐鱼儿
阅读(149)
评论(0)
推荐(0)
摘要:
下面的程序除了是面向对象的这一点之外,与前一个非常相似。因为从前一个程序中已经吸取了教训,这个程序使用了一个通用目的的Map实现,即一个HashMap,来替代前一个程序的IdentityHashMap。那么,这个程序会打印出什么呢? 这个程序看起来很直观,其main方法通过调用无参数的构造器创建了一 阅读全文
posted @ 2018-10-24 01:36
尐鱼儿
阅读(117)
评论(0)
推荐(0)
摘要:
下面的程序将两个映射关系放置到了一个映射表中,然后打印它们的尺寸。那么,它会打印出什么呢? 对该程序的一种幼稚的分析认为,它应该打印1。该程序虽然将两个映射关系放置到了映射表中,但是它们具有相同的键(Mickey)。这是一个映射表,不是一个多重映射表,所以棒球传奇人物(Mickey Mantle)应 阅读全文
posted @ 2018-10-24 01:34
尐鱼儿
阅读(133)
评论(0)
推荐(0)
摘要:
下面的程序演练了Date和Calendar类的某些基本特性,它会打印出什么呢? 该程序创建了一个Calendar实例,它应该表示的是1999年的除夕夜,然后该程序打印年份和日。看起来该程序应该打印1999 31,但是它没有;它打印的是2000 1。难道这是致命的Y2K(千年虫)问题吗? 不,事情比我 阅读全文
posted @ 2018-10-24 01:33
尐鱼儿
阅读(738)
评论(0)
推荐(0)
摘要:
现在该轮到你写一些代码了。下面的谜题每一个都可以用一个方法来解决,这些方法的方法体都只包含一行代码。各就各位,预备,编码! A.编写一个方法,它接受一个包含元素的List,并返回一个新的List,它以相同的顺序包含相同的元素,只不过它把第二次以及后续出现的重复元素都剔除了。例如,如果你传递了一个包含 阅读全文
posted @ 2018-10-24 01:32
尐鱼儿
阅读(119)
评论(0)
推荐(0)
摘要:
下面的程序在计算一个int数组中的元素两两之间的差,将这些差置于一个集合中,然后打印该集合的尺寸大小。那么,这个程序将打印出什么呢? 外层循环迭代数组中的每一个元素,而内层循环从外层循环当前迭代到的元素开始迭代到数组中的最后一个元素。因此,这个嵌套的循环将遍历数组中每一种可能的两两组合。(元素可以与 阅读全文
posted @ 2018-10-24 01:30
尐鱼儿
阅读(225)
评论(0)
推荐(0)
摘要:
本谜题试图从前一个谜题中吸取教训。下面的程序还是由一个Name类和一个main方法构成,这个main方法还是将一个名字放置到一个散列集合中,然后检查该集合是否包含了这个名字。然而,这一次Name类已经覆写了hashCode方法。那么下面的程序将打印出什么呢? 与谜题57一样,该程序的main方法创建 阅读全文
posted @ 2018-10-24 01:29
尐鱼儿
阅读(113)
评论(0)
推荐(0)
摘要:
下面的程序包含了一个简单的不可变类,它表示一个名字,其main方法将一个名字置于一个集合中,并检查该集合是否确实包含了该名字。那么,这个程序到底会打印出什么呢? 一个Name实例由一个姓和一个名构成。两个Name实例在通过equals方法进行计算时,如果它们的姓相等且名也相等,则这两个Name实例相 阅读全文
posted @ 2018-10-24 01:28
尐鱼儿
阅读(151)
评论(0)
推荐(0)
摘要:
作为一项热身活动,我们来测试一下你对BigInteger的了解程度。下面这个程序将打印出什么呢? 你可能会认为这个程序会打印出555000。毕竟,它将total设置为用BigInteger表示的0,然后将5,000、50,000和500,000加到了这个变量上。如果你运行该程序,你就会发现它打印的不 阅读全文
posted @ 2018-10-24 01:23
尐鱼儿
阅读(179)
评论(0)
推荐(0)
摘要:
下面仍然是经典的Hello World程序的另一个变种。那么,这个变种将打印什么呢? 这个程序看起来似乎应该抛出NullPointerExceptioin异常,因为其main方法是在常量null上调用greet方法,而你是不可以在null上调用方法的,对吗?嗯,某些时候是可以的。如果你运次该程序,就 阅读全文
posted @ 2018-10-24 01:21
尐鱼儿
阅读(151)
评论(0)
推荐(0)
摘要:
某些时候,对于一个类来说,跟踪其创建出来的实例个数会非常用有,其典型实现是通过让它的构造器递增一个私有静态域来完成的。在下面的程序中,Creature类展示了这种技巧,而Creator类对其进行了操练,将打印出已经创建的Creature实例的数量。那么,这个程序会打印出什么呢? 这是一个捉弄人的问题 阅读全文
posted @ 2018-10-24 01:21
尐鱼儿
阅读(216)
评论(0)
推荐(0)
摘要:
现在该轮到你写一些代码了。假设你有一个称为Thing的库类,它唯一的构造器将接受一个int参数: Thing实例没有提供任何可以获取其构造器参数的值的途径。因为Thing是一个库类,所以你不具有访问其内部的权限,因此你不能修改它。 假设你想编写一个称为MyThing的子类,其构造器将通过调用Some 阅读全文
posted @ 2018-10-24 01:20
尐鱼儿
阅读(144)
评论(0)
推荐(0)
摘要:
下面的程序在一个类中计算并缓存了一个合计数,并且在另一个类中打印了这个合计数。那么,这个程序将打印出什么呢?这里给一点提示:你可能已经回忆起来了,在代数学中我们曾经学到过,从1到n的整数总和是n(n+1)/2。 草草地看一遍,你可能会认为这个程序从1加到了100,但实际上它并没有这么做。再稍微仔细地 阅读全文
posted @ 2018-10-24 00:18
尐鱼儿
阅读(157)
评论(0)
推荐(0)

浙公网安备 33010602011771号