自定义博客皮肤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)
  • 收藏
  • 关注

原创 视图缓冲器

“视图缓冲器(view buffer)”可以让我们通过某个特定的基本数据类型的视窗查看其底层的 ByteBuffer。ByteBuffer 依然是实际存储数据的地方,“支持”着前面的视图,因此,对视图的任何修改都会映射成为对 ByteBuffer 中数据的修改。正如我们在上一示例看到的那样,这使我们可以很方便地向 ByteBuffer 插入数据。视图还允许我们从 ByteBuffer

2013-08-26 11:34:10 569

原创 获取原始类型

尽管 ByteBuffer 只能保存字节类型的数据,但是它具有可以从它所容纳的字节中产生出各种不同原始类型值的方法。下面这个例子展示了怎样使用这些方法来插入和抽取各种数值://: c12:GetData.java// Getting different representations from a ByteBufferimport java.nio.*;import com.b

2013-08-26 11:32:53 521

原创 转换数据

让我们回过头看 GetChannel.java 这个程序,我们会发现为了输出文件中的信息,我们必须每次只读取一个字节的数据,然后将其强制转换成 char 类型。这种方法似乎有点原始——如果我们查看一下 java.nio.CharBuffer 这个类,将会发现它有一个 toString()方法是这样定义的:“返回一个包含缓冲器中所有字符的字符串”。既然 ByteBuffer 可以看作是具

2013-08-26 11:31:54 607

原创 类型转换前先作检查

迄今为止,我们已知的 RTTI 形式包括:1. 经典的类型转换,如"(Shape)",由 RTTI 确保类型转换的正确性,如果你执行了一个错误的类型转换,就会抛出一个 ClassCastException 异常。2. 代表对象类型的 Class 对象。通过查询 Class 对象可以获取运行期所需的信息。在 C++中,经典的类型转换"(Shape)"并不使用 RTTI

2013-08-24 14:01:38 612

原创 类字面常量(Class literal)

Java 还 提 供 了 另 一 种 方 法 来 生 成Class 对 象 的 引 用 : 使 用“ 类 字 面 常 量 ( classliteral)”。对上述程序来说,看起来就象下面这样:Gum.class;这样做不仅更简单,而且更安全,因为它在编译期就会受到检查。并且它无需方法调用,所以也更高效。类字面常量不仅可以应用于普通的类,也可以应用于接口、数组以及基本数据

2013-08-24 14:00:06 899

原创 用 imports 改变行为

Java 没有 c 的“条件编译(conditional compilation)”功能,该功能可以使你不必更改任何程序代码,就能够切换开关并产生不同的行为。java 去掉此功能的原因可能是因为 c 在绝大多数情况下是用此功能来解决跨平台问题的,即程序代码的不同部分是根据不同的平台来编译的。由于 java 自身可以自动跨越不同的平台,因此这个功能对 java 而言是没有必要的。

2013-08-22 16:19:53 488

原创 将两个含有相同名称的程序库以‘*’形式同时导入--导致冲突

如果将两个含有相同名称的程序库以‘*’形式同时导入,将会出现什么情况呢?例如,假设某程序这样写到:import com.bruceeckel.simple.*;import java.util.*;由于 java.util.*也含有一个 Vector 类,这就存在潜在的冲突。但是只要你不写那些导致冲突的程序代码,就不会有什么问题——这样很好,否则你就得做很多的类

2013-08-22 16:17:17 596

原创 创建独一无二的包名

你也许会发现,既然一个包从未真正将被打包的东西包装成一个单一的文件,并且一个包可以由许多文件构成,那么情况就有点复杂了。为了避免这种情况的发生,一种合乎逻辑的作法就是将特定包的所有.class 文件都置于一个单一目录之下。也就是说,利用操作系统的层次化的文件结构来解决这一问题。这是 java 解决混乱问题的一种方式,你还会在我们介绍 jar 工具的时候看到另一种方式。将

2013-08-22 16:15:57 908

原创 从安全性(Security)考虑

通过 Internet 自动下载并运行程序听起来就像是病毒制作者的梦想。当你在某个网站上点击之后,可能会随 HTML 页面自动下载任意数量的东西:GIF 文件、脚本代码、编译过得 Java代码和 ActiveX 控件。这些东西有些是良性的,例如 GIF 就是无害的,脚本语言能作的事情也很有限。在 Java 的设计中,applet 也只能运行在受安全保护的“沙盒(sandbox)”中,沙

2013-08-18 10:51:59 548

原创 .NET 和 C#

曾几何时,Java applet 的主要竞争对手是微软的ActiveX ,尽管它要求客户端必须运行Windows 平台。从那以后,微软以.NET 平台和 C#编程语言的形式推出了与 Java 全面竞争的对手。.NET 平台大致相当于 Java 虚拟机(virtual machine)和 Java 类库(library),而 C#毫无疑问具有与 Java 类似之处。这当然是微软在编程

2013-08-18 10:50:38 435

原创 Java

如果脚本语言可以解决客户端编程百分之八十的问题的话,那么剩下那百分之二十(那才是真正难啃的硬骨头)又该怎么办呢?Java 是处理它们最流行的解决方案。Java不仅是一种功能强大的、被构建为安全的、跨平台的、国际化的编程语言,而且它还在不断地被扩展,以提供更多的语言功能,以及更多的能够优雅地处理在传统编程语言中很难解决的问题的类库,例如多线程(multithreading)、数据

2013-08-18 10:49:50 418

原创 每个对象都有一个接口

亚里士多德大概是第一个深入研究类型(Type)的哲学家,他曾提出过鱼类和鸟类(the classof fishes and the class of birds)这样的概念。所有的对象都是唯一的,但同时也是具有相同的特性和行为的对象所归属的类的一部分,这种思想被直接应用于第一个面向对象语言Simula-67,它在程序中使用基本关键词 class 来引入新的类型。Simula,就像其

2013-08-16 12:06:51 983

原创 抽象过程

所有编程语言都提供抽象(abstraction)机制。可以认为,你所能够解决的问题的复杂性直接取决于抽象的类型和质量。我所谓的“类型”是指“你所抽象的是什么?”汇编语言是对底层机器的小型抽象。接着出现的许多所谓“命令式(Imperative)”语言(诸如 FORTRAN、BASIC、C 等)都是对汇编语言的抽象。这些语言在汇编语言之上有了大幅的改进,但是它们所作的主要抽象仍要求你在

2013-08-16 12:05:21 813

原创 对象引论

“我们之所以将自然界分解,组织成为各种概念,并总结出其重要性,主要是因为我们知道我们的语言社区所共同持有的,并以我们的语言的形式所固定下来的一种约定…除非赞成这个约定中所颁布的有关数据的组织和分类的内容,否则我们根本无法交谈。”Benjamin Lee Whorf(1897-1941)计算机革命起源于机器,因此,编程语言的起源也始于对机器的模仿趋近。但是,计算机并非只是机器那么

2013-08-16 12:04:18 412

空空如也

空空如也

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

TA关注的人

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