Java
捏造的信仰
这个人很懒,什么都没写。
展开
-
什么是 this
什么是 this?this 代表一个对象本身。换句话说,只有在对象中运行的代码才能使用 this。什么是在对象中运行的代码?就是所有的非静态的方法和成员。例如:public class Person { public String name; public String toString() { return this.name; } } 因为 toString() 方法不是静态的,所以它可以使用 this 关键字。原创 2009-07-21 14:35:00 · 1803 阅读 · 11 评论 -
Java 小例子:一个测试正则表达式的工具
这是一个例子,也是一个工具,用来测试指定的文本中是否包含指定的正则表达式匹配。 下面是代码:import javax.swing.*;import javax.swing.text.DefaultHighlighter;import javax.swing.text.BadLocationException;import java.awt.BorderLayout原创 2009-04-27 09:44:00 · 4493 阅读 · 0 评论 -
Java: equals 和 ==
谈论 equals() 和 hashCode() 的文章太多了,而关于 equals() 和 == 之间的区别,能找到的文章很少。但是搞清楚这点非常重要。如果没搞清楚的话,很容易写出 BUG 而不自知。二者的区别在于:equals() 方法用于比较两个对象,比较它们的值是否相等;== 运算符用于比较两个变量,比较它们是否引用到同一个对象。我们在写 Java 代码的时候,原创 2009-05-02 16:47:00 · 1243 阅读 · 1 评论 -
Java: 命名的讲究
这样的文章很多,但这里是对我观察到的和我个人经验的总结。 1、类名类名通常以名词结尾。而且在类名中要体现它是以保存数据为主还是提供功能为主。例如 ConnectionBuilder 这个类我们都可以猜到它的主要功能是创建 Connection 对象,以动词-er/or 结尾的类名,至少应该包含一个以该动词开头的方法。例如 ConnectionBuilder 这个类,它至少应该包含一个以 b原创 2009-05-04 11:54:00 · 1619 阅读 · 1 评论 -
Java: 如何访问一个对象
对 Java 初学者来说一个头疼的问题是,如何决定把一个对象是定义为方法变量,还是定义为成员变量?最开始初学者还不会关心这点。但是当写出来的程序越来越大,类越来越多时,这种苦恼也应运而生。但我这里要写的是:如何随心所欲的安排一个对象,让你随时可以访问。掌握了这点,你就可以自由的决定将一个对象放在什么地方了。下面举一个简单的例子:public class Acces原创 2009-05-03 10:03:00 · 1531 阅读 · 0 评论 -
Java: 变量的值和引用
广义的说,在 Java 中,凡是可以指向一个对象或包含一个值的标识符,都可以称为变量。变量的内容,有可能是一个值,也有可能是指向一个对象的引用。当变量的类型为基本型别(short, byte, int, long, float, double, boolean, char)时,变量的内容是一个值;当变量的类型为 Object 及其子类时,变量的内容是指向一个对象的引用。例如:int a = 3;原创 2009-05-21 10:31:00 · 6106 阅读 · 0 评论 -
JSP 入门的几个小视频
下面三个视频都是我自己录制的。全部都是实际操作过程的录像,虽然没有讲解,但是因为步骤很简单,很容易就能看懂。 http://sites.google.com/site/yidinghe/Home/videos-1/install_tomcat.mkv如何解压和运行 Tomcat http://sites.google.com/site/yidinghe/Home/vi原创 2009-06-07 11:37:00 · 833 阅读 · 0 评论 -
如何修改 Java 中的 DialogInput 字体
Java 中的 DialogInput 字体实际上并不存在,Java 使用一个配置文件将其映射到其他字体。在 Windows 下,DialogInput 被映射到 Courier New 字体上。如果你觉得不爽,你可以用其他的字体来代替。 参考文档:http://java.sun.com/j2se/1.5.0/docs/guide/intl/fontconfig.html原创 2009-06-09 23:01:00 · 5697 阅读 · 0 评论 -
今天犯了一个大错误
前两天在回帖写一个多线程的程序的时候犯错误了,今天又犯了一个多线程方面的错误。记录在此引以为戒。 网站用了 Struts2。当用户下载时,要记录下载日志。因为用户下载是付了钱的,因此决不能因为记日志失败就中断下载。所以将计日志的代码放在 new Thread() 里。 这时候我忘了很重要的一点:新的线程里面是无法取得 ActionContext 的。于是很不幸的,新线程中那句原创 2009-11-27 17:11:00 · 1147 阅读 · 0 评论 -
关于变量类型、对象类型和强制类型转换的对话
对象的类型只有一个,就是调用它的 getClass() 方法获得的类型;变量的类型在它定义的时候就决定了,而与它实际指向的对象的类型无关。原创 2010-09-04 18:29:00 · 1922 阅读 · 1 评论 -
Java 流(Stream)简介:3、对象序列化
对象序列化也是流应用的一个重要方面。序列化就是把一个对象转换成一串字节,既可以保存起来,也可以传给另外的 Java 程序使用。ObjectOutputStream 和 ObjectInputStream 就是专门用来进行序列化和反序列化的。下面就是一个简单的例子:import java.io.ObjectOutputStream;import java.io.FileOutputStrea原创 2009-04-21 20:52:00 · 1801 阅读 · 0 评论 -
如何设置双击执行 jar 文件
首先,这个 jar 文件要是可执行的,也就是说能够通过 java -jar 命令执行。 在 Windows 下,我们还可以通过设置资源管理器的方式实现双击 jar 文件执行它。 首先打开资源管理器的文件夹选项,在“文件类型”中找到 jar 文件。如果找不到,也可以自己新建一个。 接着单击“高级”按钮,打开编辑文件类型对话框。在对话框中单击“新建”,打开新操作对话框。原创 2009-04-22 18:55:00 · 4208 阅读 · 2 评论 -
Java 流(Stream)简介:1、基本的输入流和输出流
本人打算写几篇文章,介绍一下流。本文是针对初学者的,加上本人水平有限,所以不敢说写得很高深。如果你是初学者,而且对流这个东西很头疼,你就应该看看这个。本文发表在:http://blog.csdn.net/YidingHe,转载请保留出处。流是 Java 中最重要的基本概念之一。文件读写、网络收发、进程通信,几乎所有需要输入输出的地方,都要用到流。流是做什么用的呢原创 2009-04-20 11:14:00 · 10785 阅读 · 4 评论 -
兼具 List 和 Map 的“容器”类 ListMap
“容器”两个字之所以打上引号,是因为这个类没有实现 Collection 接口。要写一个兼具 List 功能和 Map 功能的类,有几个困难,一是 Java 不允许同时实现 List 和 Map 两个接口,二是这个 ListMap 结合了二者的功能之后,产生了特殊的接口。例如 Collection 的 contains 方法,在 ListMap 中就需要衍生出 containsKey 和 cont原创 2009-01-05 11:18:00 · 2190 阅读 · 13 评论 -
对 List 元素中的多个属性进行排序(用到 commons-beanutils)
commons-beanutils 类库中有一个 BeanComparator 类,可以用来给 JavaBean 排序。但是这个类一次只能对一个属性排序。下面是一个利用 BeanComparator 实现对 JavaBean 的多个属性进行排序的例子,非常简单:import org.apache.commons.beanutils.BeanComparator;import java.util.C原创 2009-01-07 19:35:00 · 2437 阅读 · 0 评论 -
classpath 简介
本文的目的是向初学者介绍什么是 classpath,以及如何在项目中组织 classpath。熟悉 classpath 是熟练使用 java/javac 命令的前提。虽然类似的文章非常多,但本文力求做到简单易读。一、基本用法classpath 是 Java 最重要的基础概念之一。它是一个编译和运行时都要用到的参数。当没有这个参数时,java 和 javac 命令会取环境变量 CLASS原创 2009-02-07 12:26:00 · 1558 阅读 · 0 评论 -
介绍 Java 自带的线程池(2)
续前文:java.util.concurrent.ThreadPoolExecutor 类提供了丰富的可扩展性。你可以通过创建它的子类来自定义它的行为。例如,我希望当每个任务结束之后打印一条消息,但我又无法修改任务对象,那么我可以这样写:ThreadPoolExecutor executor = new ThreadPoolExecutor(size, maxSize, 1,原创 2009-02-15 11:26:00 · 1835 阅读 · 0 评论 -
关于 static 块是否是同步的
要理解 synchronized 关键字,可以先看看这篇文章: http://www.learndiary.com/archives/diaries/2910.htm 本文是对该文的补充。 作者在最后对类中的 static 块是否是同步的抱有疑惑。其实想鉴定也不难。通过编译代码我们就知道,synchronized static {} 这样写是不允许的。为什么呢?因为 sta原创 2009-02-27 17:03:00 · 1827 阅读 · 0 评论 -
通过反射构造内部类对象
今天折腾了好一阵子,终于明白怎么通过反射来构造内部类对象了。这里头名堂不少,只能一一道来。首先在 javalang 包下写一个包含内部类的类:package javalang;public class Outer { public static class Inner1{}}注意这个类是 public static,后面我们慢慢把这些修饰符去掉。要想通过反射来创建 Inner1 对象,首先要原创 2009-02-27 19:18:00 · 5532 阅读 · 0 评论 -
关于同 Struts 2.0.6 配合使用 Spring 出现的问题
我在运行某个项目时发现在 Tomcat 下部署失败。失败原因是 Spring 配置文件的解析过程中需要连接到:http://www.springframework.org/dtd/spring-beans-2.0.dtd经检查,发现原因在于 Struts2。项目使用的 Struts2 版本是 2.0.6,该版本使用 gnujaxp.jar。一旦加上了这个 jar 包,Spring 就会尝试用它来解原创 2008-12-25 11:11:00 · 1157 阅读 · 0 评论 -
哪些 JavaSE 类库最应该掌握
Java 自带的类库很庞大,初学者应该尽量多熟悉一些。首先你应该有一个 Java API 文档,文档对 Java 的组织架构有一个如下的图示: 但是并不是所有的类都要会用,那也不可能。主要是看你将来从事哪方面开发。像我做 Web 开发的,AWT/Swing、Java2D 和 JNI 等方面就了解的很少,JDBC、XML 等方面就熟悉一些。 但是有些类,不管做哪方面的开发都原创 2009-03-23 11:36:00 · 2066 阅读 · 0 评论 -
Java 小例子:模拟分数的类 Fraction
前一阵子 CSDN 博客奇慢无比,今天好些了。 这里是一个模拟分数运算的例子:Fraction 类。分数运算完后要用最大公约数除分子分母。所以这里也有个用辗转相除法求最大公约数的例子。另外在构造 Fraction 对象时如果分母为零将会抛出异常,这也是必要的检查。public class FractionTest { public static void main(St原创 2009-04-03 10:15:00 · 4784 阅读 · 0 评论 -
Java 流(Stream)简介:2、Reader 和 Writer
介绍了 InputStream 和 OutputStream,接下来介绍 Reader 和 Writer。这两个类其实就是将 InputStream 和 OutputStream 包装了一下。不过它们处理的不是字节(byte),而是字符(char)。如果一个流当中的内容都是文本,那么用 Reader/Writer 处理起来会简单些。下面是一个用 Reader 读取文本文件的例子:import ja原创 2009-04-20 11:39:00 · 4785 阅读 · 2 评论 -
Java 小例子:求素数
素数(质数)指的是不能被分解的数,除了 1 和它本身之外就没有其它数能够整除。这里是一个小例子,说明如何求取十万以内的所有素数。 素数的分布没有规律可言,所以要检验一个数是不是素数,就必须将它同所有小于它的数作除法。不过有一个简便的方法,就是不需要检验所有小于它的数,而只要检验所有小于它的素数。如果所有小于它的素数都不能将其整除,那么它就是素数。 public class Prim原创 2009-04-07 10:45:00 · 1600 阅读 · 0 评论