java
Hacker
构架良好的知识体系架构是战胜一切问题的关键!!!
展开
-
Long.decode(String s)和Long.valueOf(String s)的区别
Long.decode(String s)和Long.valueOf(String s)的区别Long.decode可以解析以0x、0X、#、0开头的字符串,分别表示这个字符串是16或8进制的数字字符串,而valueOf只能解析纯数字的10进制字符串。 System.out.println(Long.decode("011")); // 8进制,输出9.转载 2012-10-16 15:03:29 · 1834 阅读 · 0 评论 -
类型检查 与Java 多态相结合及反射机制相结合
运行期类型识别(RTTI,run-time type identification)的概念初看起来非常简单:当你只有一个指向对象的基类的引用时,RTTI 机制可以让你找出这个对象确切的类型。 对 RTTI 的需要,揭示了面向对象设计中许多有趣(并且复杂)的问题,同时也提出了如何组织程序的问题。讨论 Java 是如何允许我们在运行期识别对象和类的信息。主要有两种方式:一种是原创 2012-08-15 15:34:47 · 487 阅读 · 0 评论 -
使用 finally进行清理
对于一些代码,你可能会希望无论try块中的异常是否抛出,它们都能得到执行。这通常适用于内存回收(由垃圾回收器完成)之外的情况。为了达到这个效果,你可以在异常2处理程序后面加上finally子句 。完整的异常处理程序看起来像这样: try { // The guarded region: Dangerous activities // that might th原创 2012-08-15 15:27:28 · 814 阅读 · 0 评论 -
异常使用指南
你应该在下列情况下使用异常: 1. 在恰当的级别处理问题。(在你知道该如何处理的情况下才捕获异常)。 2. 解决问题并且重新调用产生异常的方法。 3. 进行少许修补,然后绕过异常发生的地方继续执行。 4. 用别的数据进行计算,以代替方法返回的期望值。 5. 把当前运行环境下能做的事情尽量作完,然后把相同的异常重抛(rethrow)到更高层。 6. 把当前运行环境下能做的原创 2012-08-15 15:30:01 · 537 阅读 · 0 评论 -
异常与错误处理
Java 的基本理念是“结构不佳的代码将不能运行”。 发现错误的理想时机是在编译阶段,也就是在你试图运行程序之前。然而,编译期间并不能找出所有的错误,余下的问题必须在运行期间得到解决。这就需要错误源能通过某种方式,把适当的信息传递给某个接收者,后者将知道如何正确处理这个问题。 使用异常所带来的另一个相当明显的好处是,它能使错误处理代码变得更有条理。与原先“对于同一个错原创 2012-08-15 15:18:11 · 490 阅读 · 0 评论 -
内部类,Java特有的
这正是内部类要做的事情,你可以: 1. 用一个单独的类完整地实现一个控制框架,从而将实现的细节封装起来。内部类用来表示解决问题所必需的各种不同的 action()。 2. 内部类能够轻易的访问外围类的任意成员,所以可以避免这种实现变得很笨拙。如果没有这种能力,代码将变得很令人讨厌,以至于你肯定会选择别的方法。总结 比起面向对象编程中其他的概念来,接口和内部类更深奥原创 2012-08-15 10:14:31 · 491 阅读 · 0 评论 -
为什么需要内部类?
典型的情况是,内部类继承自某个类或实现某个接口,内部类的代码操作创建其的外围类的对象。所以你可以认为内部类提供了某种进入其外围类的窗口。 内部类必须要回答一个问题是:如果我只是需要一个对接口的引用,为什么我不通过外围类实现那个接口呢?答案是:“如果这能满足你的需求,那么你就应该这样做。”那么内部类实现一个接口与外围类实现这个接口有什么区别呢?答案是你不是总能享用到接口带来原创 2012-08-15 10:10:56 · 478 阅读 · 0 评论 -
通过继承来扩展接口
通过继承,你可以很容易地在接口中添加新的方法声明,你还可以通过继承在新接口中组合数个接口。在两种情况下,你都可以获得新的接口,就像在下例中所看到的: //: c08:HorrorShow.java // Extending an interface with inheritance. interface Monster { void menace(); }原创 2012-08-15 10:01:41 · 439 阅读 · 0 评论 -
内部类
可以将一个类的定义放在另一个类的定义内部,这就是内部类(inner class)。内部类是一种非常有用的特性,因为它允许你把一些逻辑相关的类组织在一起,并控制在内部的类的可视性。然而必须要了解,内部类与组合是完全不同的概念,这一点很重要。 创建一个内部类就同你想的一样——把类的定义置于环绕类(surrounding class)的里面原创 2012-08-14 18:29:36 · 292 阅读 · 0 评论 -
final 方法
使用 final 方法的原因有两个。第一个原因是把方法锁定,以预防任何继承类修改它的意义。这是出于设计的考虑:你想要确保在继承中方法行为保持不变,并且不会被重载。 使用final方法的第二个原因是效率。如果你将一个方法指明为final,就是同意编译器将针对该方法的所有调用都转为内嵌(inline)调用。当编译器发现一个final方法调用命令时,它会根据自己的谨慎判断,跳过插入原创 2012-08-14 17:01:36 · 1793 阅读 · 0 评论 -
对象的集合
如果程序只包含固定数量的对象,并且其生命周期都已知,那么这个程序就实在太简单了。 通常,你的程序会根据运行时才知道的条件创建新对象。不到运行期,不会知道所需对象的数量,甚至不知道确切的类型。为解决这个普遍的编程问题,需要能够在任意时刻,任意位置,创建任意数量的对象。所以,你就不能指望创建具名的引用来持有每一个对象: MyObject myReference; 因为你不知道实际上原创 2012-08-15 15:44:17 · 399 阅读 · 0 评论 -
Java I/O系统
对白酿成语言的设计者来说,创建一个好的输入/输出(I/O)系统是一项更艰难的任务。 现有的大量不同方案已经说明了这一点。挑战似乎来自于要涵盖所有的可能性。不仅存在各种用于通信的 I/O 源端和接收端(文件、控制台、网络链接等),而且还需要以多种不同的方式与它们进行通信(顺序、随机存取、缓冲、二进制、按字符、按行、按字等)。 Java类库的设计者是通过创建大量的类来解决这个难题的。一原创 2012-08-15 15:56:34 · 1052 阅读 · 0 评论 -
对象序列化
Java的对象序列化(Object Serialization)将那些实现了 Serializable接口的对象转换成一个字节序列,并可以在以后将这个字节序列完全恢复为原来的对象。这一过程甚至可通过网络进行。这意味着序列化机制能自动弥补不同操作系统之间的差异。也就是说,可以在运行 Windows 系统的计算机上创建一个对象,将其序列化,通过网络将它发送给一台运行Unix 系统的计算原创 2012-08-15 16:02:49 · 383 阅读 · 0 评论 -
Base 64
(一)java自带的加密和解密import sun.misc.BASE64Decoder;public class Base64Utils { public static String getBASE64(byte[] b) { String s = null; if (b != null) { s = new sun.misc.BASE64Encoder()转载 2012-09-07 15:12:45 · 589 阅读 · 0 评论 -
Java多态
[html] view plaincopyprint?class BaseClass{ public int book=6; public void book(){ System.out.println("父类的普通方法"); } } class BaseClass{ public int book转载 2012-08-29 17:26:03 · 2000 阅读 · 2 评论 -
Java中多态的实现机制
多态性是面向对象程序设计代码重用的一个重要机制,我们曾不只一次的提到Java多态性。在Java运行时多态性:继承和接口的实现一文中,我们曾详细介绍了Java实现运行时多态性的动态方法调度;今天我们再次深入Java核心,一起学习Java中多态性的实现。“polymorphism(多态)”一词来自希腊语,意为“多种形式”。多数Java程序员把多态看作对象的一种能力,使其能调用正确的方法版本。尽管如转载 2012-08-29 17:14:05 · 1095 阅读 · 1 评论 -
深入理解Java接口(一)
一、Java接口的基本内容[1].Java编程语言中不支持多重继承(即Java中一个类不能有多于一个的直接父类),但可以实现多个接口,这就间接地实现了多重继承。[2].接口(Interface)将产生一个完全抽象的类,它是用来建立类与类之间的协议的,其内部只提供调用方法的形式(创建者确定方法名、参数列表及返回类型),而没有提供任何具体的方法体。具体的实现方法(该接口中的所有方法)需要在遵循原创 2012-08-29 16:40:20 · 838 阅读 · 0 评论 -
Java接口学习笔记
java语言不支持一个类有多个直接的父类(多继承),但可以实现(implements)多个接口,间接的实现了多继承 一、Java接口基础知识1, Java语言不支持一个类有多个直接的父类(多继承),但可以实现(implements)多个接口,间接的实现了多继承.2, 与Java接口相关的设计模式:1, 定制服务模式设计精粒度的接口,每个Java接口代表相关的一组服务,通过继转载 2012-08-29 16:42:36 · 805 阅读 · 1 评论 -
Java里面的接口Java里面的接口
Java里面由于不允许多重继承,所以如果要实现多个类的功能,则可以通过实现多个接口来实现。 Java接口和Java抽象类代表的就是抽象类型,就是我们需要提出的抽象层的具体表现。OOP面向对象的编程,如果要提高程序的复用率,增加程序的可维护性,可扩展性,就必须是面向接口的编程,面向抽象的编程,正确地使用接口、抽象类这些太有用的抽象类型做为你结构层次上的顶层。 Java接口和转载 2012-08-29 16:11:20 · 800 阅读 · 1 评论 -
Windows 与 Applet 程序
JAVA AWT 之类的图形化编程,这边就不深入研究了相应的很多图形化文本框和VB有的,基本Java也都有。原创 2012-08-15 18:14:44 · 450 阅读 · 0 评论 -
多线程编程
线程编程与java其实是两回事,不过java有提供对相应的线程的支持。所以要想在java中进行多线程编程需要学习线程的工作原理和java中的相应的包的特性。知识要分开。还有了解相应的锁机制。原创 2012-08-15 18:12:43 · 358 阅读 · 0 评论 -
并发
对象技术使你得以把程序划分成若干独立的部分。通常,你还需要把程序转换成彼此分离的,能独立运行的子任务。 每一个这些独立的子任务都被称为一个“线程”(thread)。你要这样去编写程序:每个线程都好象是在独自运行并且占有自己的处理器。处理器时间确实是通过某些底层机制进行分配的,不过一般来说,你不必考虑这些,这使得编写多线程程序的任务变得容易得多了。所谓“进程”(process),原创 2012-08-15 18:04:59 · 378 阅读 · 0 评论 -
增量开发(incremental development)
继承技术的优点之一,就是它支持增量开发模式。你可以引入新代码而不会在现有代码中引发 Bug。事实上,这种模式可以将新的 Bug 隔离在新的代码之中。通过从现有的、功能性的类继承并添加数据成员和成员方法(并重新定义现有方法),就可以使别人可能仍在使用中的现有代码既不会被改变也不会新增 Bug。 类被隔离得如此之干净,实在令人惊奇。你甚至不需要为了复用程序代码而调用方法的源代原创 2012-08-14 16:40:44 · 3406 阅读 · 1 评论 -
复用类
此方法中的窍门在于使用类而不破坏现有程序代码。你将会在本章中看到两种达到这一目的的方法。第一种方法非常直观:你只需在新的类中产生现有类的对象。由于新的类是由现有类的对象所组成,所以这种方法被称为组合(composition)。该方法只是复用了现有程序代码的功能,而非它的形式。 第二种方法则更细致一些,它按照现有类的类型来创建新类。你无需改变旧有类的形式,仅仅只是采用它的形原创 2012-08-14 16:22:30 · 452 阅读 · 0 评论 -
javadoc(详细用法见JDK或者百度具体的参数表示的意义)
一、目的为了使代码与文档更好的结合,更好地管理代码二、语法所有 javadoc命令都只能始于“/**”注释,和一般注释一样,结束于 “*/”。 使用 javadoc的方式主要有两种:嵌入 HTML,或使用“文档标签(doc tag)”。所谓“文档标签”是一些以“@”字符开头的命令,且该“@”字符要置于注释行的最前面(即忽略前导 “*”之后的最前面)。而“行内文档标签(in原创 2012-08-13 17:28:05 · 1411 阅读 · 0 评论 -
Java Web基础概述
Java提供了专门的工具来建立设计和重用关系:接口,它是对象接口的纯粹抽象。Interface不仅仅只是达到极致的抽象类,由于它允许你通过创建某个可以向上转型到多个基类的类,因此它也实现了类似于 C++“多重继承”的变体。 首先,内部类看起来似乎是一种简单的程序代码隐藏机制;你只需将类放置到其他类中。不过,你将会获悉内部类不仅仅只是这些;它可以知晓外围类并能与之通信。你用内部类原创 2012-08-13 10:13:44 · 696 阅读 · 0 评论 -
Java面向对象思想的形成
一、抽象过程 Smalltalk 的五个基本特性,这些特性表现了一种纯粹的面向对象程序设计方式: 1. 万物皆为对象。将对象视为奇特的变量,它可以存储数据,除此之外,你还可以要求它在自身上执行操作。理论上讲,你可以抽取待解问题的任何概念化构件(狗、建筑物、服务等),将其表示为程序中的对象。 2. 程序是对象的集合,它们彼此通过发送消息来调用对方。要想产生一个对对原创 2012-08-10 13:49:58 · 3549 阅读 · 0 评论 -
Java虚拟机
全文转载:http://redbat.iteye.com/blog/910085众所周知,Java源代码被编译器编译成class文件。而并不是底层操作系统可以直接执行的二进制指令(比如Windows OS的.exe文件)。因此,我们需要有一种平台可以解释class文件并运行它。而做到这一点的正是Java 虚拟机(JVM)。 实际上,JVM是一种解释执行class文件的规转载 2012-08-06 11:36:42 · 525 阅读 · 0 评论 -
Tomcat6数据源的配置 .
关于Tomcat中数据源的配置,不同的版本方法略有不同,如果不注意这些差别,就会使得Web应用在不同环境中布署出现问题。Tomcat 5的数据源配置跟Tomcat 5.5的数据源配置有很多的差别,Tomcat 6的数据源配置跟Tomcat 5.5的配置基本上相同。这里用Tomcat6+MySQL来配置数据源:在WebRoot目录下,新建一个META-INF的目录(假如不存在),在该目录转载 2012-08-06 11:54:22 · 511 阅读 · 0 评论 -
java解析XML文件实例
XML文件 ssuupv 材料学院 6258113 男,1979年生,本科,99年调入中国陶瓷大学 java代码 import java.io.*;import java.util.Hashtable;import org.xml.sax.*; public class SAXHandler extends HandlerBase {转载 2012-08-06 09:14:22 · 496 阅读 · 0 评论 -
Java中四种XML解析技术
在平时工作中,难免会遇到把 XML 作为数据存储格式。面对目前种类繁多的解决方案,哪个最适合我们呢?在这篇文章中,我对这四种主流方案做一个不完全评测,仅仅针对遍历 XML 这块来测试,因为遍历 XML 是工作中使用最多的(至少我认为)。 预 备 测试环境: AMD 毒龙1.4G OC 1.5G、256M DDR333、Windows2000 Server SP转载 2012-08-06 09:12:29 · 573 阅读 · 0 评论 -
在MyEclipse中使用debug模式
在MyEclipse中使用debug模式 1, 首先在一个java文件中设断点,然后运行,当程序走到断点处就会转到debug视图下,2, F5键与F6键均为单步调试,F5是step into,也就是进入本行代码中执行,F6是step over, 也就是执行本行代码,跳到下一行,3,F7是跳出函数4,F8是执行到最后。////////////////转载 2012-07-17 10:04:40 · 648 阅读 · 0 评论 -
Java什么会成功
一、系统易于表达、易于理解 被设计用来适应问题的“类”,在表达问题的能力上显得更强。这意味着当你编写代码时,你是在用问题空间的术语(“将垫圈放进盒子中”)而不是计算机,也就是解空间的术语(“设置芯片上的一位,表示继电器将被关闭”)来描述解决方案。你可以用更高层的概念来处理问题,并且只用一行代码就可以做更多的事。 易于表达所带来的另一个好处就是易于维护,维护(如果报告可原创 2012-08-13 11:31:51 · 2280 阅读 · 0 评论 -
一切都是对象
Java 语言假设我们只进行面向对象的程序设计。也就是说,在你开始用它设计之前,必须将你的思想转换到面向对象的世界中来(除非你的思维方式早已转换过来了)。这个入门基本功,可以使你具备使用编程语言编程的能力,这种能力使你在学习和使用其他 OOP 语言时,更加容易。在本章,我们将看到 Java 程序的基本组成,并体会到在 Java程序中的一切,甚至 Java 程序本身都是对象。原创 2012-08-13 15:02:20 · 707 阅读 · 0 评论 -
Java 命名空间的由来和引入
名字可视性(Name visibility) 名字管理对任何程序设计语言来说,都是一个重要问题。如果你在程序的某个模块里使用了一个名字,而其他人在这个程序的另一个模块里也使用了相同的名字,那么怎样才能区分这两个名字并防止二者互相冲突呢?这个问题在 C 语言中尤其严重,因为程序往往包含许多难以管理的名字。C++类( Java 类基于此)将函数包于其内,从而避免了与其它类中的函原创 2012-08-13 16:19:14 · 24104 阅读 · 1 评论 -
static 关键字
了解this之后,你就能更全面地理解“静态(static)方法”的含义。静态方法就是没有this3的方法。在“静态方法”的内部不能调用“非静态方法” ,反过来倒是可以的。而且你可以在没有创建任何对象的前提下,仅仅通过类本身来调用静态方法。这实际上正是静态方法存在的主要原因。它很象是C语言中的全局函数。Java中禁止使用全局函数,但你在类中置入静态方法就可以访问其它静态方法和静态原创 2012-08-14 14:52:24 · 330 阅读 · 0 评论 -
this 关键字
如果有同一类型的两个对象,分别是 a 和b。你可能想知道,如何才能分别为这两个对象调用 f( )呢: class Banana { void f(int i) { /* ... */ } } Banana a = new Banana(), b = new Banana(); a.f(1); b.f(2); 如果只有一个 f( )方法,它是如何知道被 a 还是被原创 2012-08-14 14:49:15 · 309 阅读 · 0 评论 -
接口(Interface)和实现(implementation)
访问权限的控制常被视作是“具体实现的隐藏(implementation hiding)”。把数据和方法包装进类中,与具体实现的隐藏结合到一起,常被称作是“封装(encapsulation)” 。其结果是一个同时带有特征和行为的数据类型。出于两个很重要的原因,访问权限控制将权限的边界划在了数据类型的内部。第一个原因是要设定客户端程序员可以使用和不可以使用的界限。你可以在结构中建立自己原创 2012-08-14 15:56:26 · 1192 阅读 · 0 评论 -
隐藏具体实现(权限\动静结合)
在面向对象设计中,要考虑的一个基本问题是“如何将变动的事物与保持不变的事物相互隔离”。 这对程序库(library)而言尤为重要。该程序库的使用者(客户端程序员,client programmer)必须能够信赖他所使用的那部分程序库,并且能够知道如果程序库出现了新版本,他们并不需要改写代码。从另一个方面来说,程序库的开发者必须有权限进行修改和改进,并确保客户代码不会因为这些原创 2012-08-14 15:37:59 · 491 阅读 · 0 评论 -
(清除)cleanup(终结)finalization (垃圾回收)garbage collection
程序员都了解初始化的重要性,但常常会忘记同样重要的清除工作。毕竟,谁需要清除一个int 呢?但在使用程序库时,把一个对象用完后就“弃之不顾”的做法并非总是安全的。当然,Java 有垃圾回收器来回收无用对象占据的内存资源。但也有特殊情况:假定你的对象(并非使用 new)获得了一块“特殊”的内存区域,由于垃圾回收器只知道释放那些经由 new分配的内存,所以它不知道该如何释放该对象的这块转载 2012-08-14 15:07:01 · 593 阅读 · 0 评论