自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 从标准输入读取

按照标准 I/O 模型,Java 提供了 System.in,System.out 和 System.err。在整本书里,我们已经看到了怎样用 System.out 将数据写出到标准输出,其中 System.out 已经事先被包装成了 printStream 对象。System.err 同样也是 PrintStream,但 System.in 却是一个没有被包装的未经加工的 Input

2013-08-26 11:24:39 527

原创 文件读写的实用工具

通常,程序的任务就是读取文件到内存,修改,然后再写出。Java I/O 类库的问题之一就是:它需要我们编写相当多的代码去执行这些常用操作——没有任何帮助类功能可以为我们做这一切。更糟糕的是,修饰器会使得记住如何打开文件变得相当困难。因此,在我们的类库中添加帮助类就显得相当有意义,这样就可以很容易地为我们完成这些基本任务。下面这个程序包含的静态方法可以像简单字符串那样读写文本文件。另

2013-08-26 11:23:52 459

原创 读写随机访问文件

正如先前所指,RandomAccessFile 除了实现 DataInput 和 DataOutput 接口之外,几乎完全独立于I/O 继承层次结构的其他部分。所以不能将其与 InputStream 及OutputStream 子类的任何部分组合起来。尽管把一个 ByteArrayInputStream 当作一个随机访问元素对待也具有实际意义,但是我们只能用 RandomAccessF

2013-08-26 11:23:05 556

原创 异常使用指南

你应该在下列情况下使用异常:1.在恰当的级别处理问题。(在你知道该如何处理的情况下才捕获异常)。2.解决问题并且重新调用产生异常的方法。3.进行少许修补,然后绕过异常发生的地方继续执行。4.用别的数据进行计算,以代替方法返回的期望值。5.把当前运行环境下能做的事情尽量作完,然后把相同的异常重抛(rethrow)到更高层。6.把当前运行环境下能做的事情尽量作完,然后把不同

2013-08-24 13:53:19 359

原创 把“被检查的异常”转换为“不检查的异常”

写 main( )的时候,抛出异常是很方便的,但这不是通用的方法。问题的实质是,当你在一个普通方法里调用别的方法时,你要考虑到“我不知道该这样处理这个异常,但是也不能把它‘吞’了,或者打印一些无用的消息”。JDK 1.4 的异常链提供了一种新的思路来解决这个问题。你直接把“被检查的异常”包装进 RuntimeException 里面,就像这样: try { // ...

2013-08-24 13:52:47 526

原创 数组的初始化

在C语言中初始化数组既容易出错,又相当麻烦。C++ 则通过“聚合初始化(aggregate initialization)”使其更安全7。在Java中,一切都是对象,也没有类似C++里“聚合”那样的概念。但它确实提供了数组,也支持数组初始化。 数组只是相同类型的、用一个标识符名称封装到一起的一个对象序列或基本类型数据序列。数组是通过方括号索引操作符[]来定义和使用的。要定义一个

2013-08-22 16:07:38 614

原创 非静态实例初始化

Java 中也有类似的语法用来初始化每一个对象的非静态变量。例如: //:c04:Mugs.java// Java"Instance Initialization."import com.bruceeckel.simpletest.*; class Mug {  Mug(int marker) {     System.out.println("Mug(" +

2013-08-22 16:05:44 430

原创 明确进行的静态初始化

Java 允许你将多个静态初始化动作组织成一个特殊的“静态子句”(有时也叫作“静态块”)。就象下面这样:class Spoon { static int i;static {     i = 47;   }尽管上面的代码看起来象个方法,但它实际只是一段跟在 static 关键字后面的代码。与其他静态初始化动作一样,这段代码仅执行一次:当你首次生成这个类的

2013-08-22 16:04:40 399

原创 持久性

当你创建了一个对象之后,只要你需要它,它就一直存活着,但是在程序终止后,它无论如何都不能存活了。在某些场合,如果对象在程序非执行状态下仍然能够存活,并保存其相关信息,将非常有用。当你下一次重新启动程序时,这个对象能够重生,并且拥有与上一次程序执行时相同的信息。当然,你可以通过将信息写入文件或数据库中达到相同的效果,但是在“万物皆为对象”的精神下,能够将对象声明为持久的(persis

2013-08-18 10:42:11 489

原创 垃圾回收与效率和灵活性

如果这么做完美无瑕,那为什么 C++没有采用呢?因为你必须要为编程的方便付出代价,这个代价就是运行时刻的开销。就像前面提到的,在 C++中,你在堆栈中创建对象,在这种情况下,它们可以自动被清除(但是你无法得到在运行时刻你想要得到的灵活性)。在堆栈上创建对象是为对象分配和释放存储空间最有效的途径。在堆上创建对象可能代价就要高昂得多。总是从某个基类继承以及所有的方法调用都是多态的也需要

2013-08-18 10:38:23 451

原创 确保正确清除

每个对象为了生存都需要资源,尤其是内存。当我们不再一个对象时,它必须被清除掉使其占有的资源可以被释放和重用。在相对简单的编程情况下,怎样清除对象看起来似乎不是什么挑战:你创建了对象,根据需要使用它,然后它应该被销毁。然而,你很可能会遇到相对复杂的情况。例如,假设你正在为某个机场设计空中交通管理系统(同样的模型在仓库货柜管理系统、录像带出租系统或是宠物寄宿店也适用)。一开

2013-08-18 10:37:29 431

原创 JDK 的 HTML 文档

来自于 Sun Microsystems 公司的 Java 语言及其类库(可以从 java.sun.com 免费下载),配套提供了电子版文档,可使用 Web 浏览器阅读。并且实际上,每个厂商开发的 Java 编译器都有这份文档或一套等价的文档系统。大部分出版的 Java 书籍也都有这份文档的备份。所以你或者可能已经拥有了它,或者需要下载;所以除非需要,本书不会再重复那份文档。因为一

2013-08-16 11:51:43 1043

原创 学习 Java

大概在我的第一本书《Using C++》(Osborne/McGraw-Hill 于 1989 年出版)出版发行的同一时候,我就开始教授这种语言了。讲授程序设计语言已经成为我的职业了;自 1987年以来,我在世界各地的听众中看到有的混混欲睡、有的面无表情、有的表情迷茫。当我开始给较小的团体进行室内培训时,在这些实践期间我发现了一些事情。即使那些面带微笑频频点头的人也困惑于对很多问题

2013-08-16 11:50:32 366

原创 Java 2, JDK 1.4

JDK的发布版本以 1.0,1.1,1.2,1.3 表示,本书针对 1.4 版。尽管这些版本号还是“各自独立”的,但JDK 1.2 或更高版本的标准称呼是“Java 2”。这表明“旧式Java”(我在本书的第一版中讨论了其中的许多缺陷。)和Java的改进版本之间存在巨大差异,后者的缺陷要少得多,而且引入了很多优秀的设计。本书针对Java 2 编写,尤其是JDK 1.4(很多

2013-08-16 11:47:56 448

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除