- 浏览: 181823 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (186)
- Ant (11)
- Axis2 (15)
- Car (9)
- Eclipse (1)
- Java (19)
- Java-EM (4)
- Javascript (11)
- Jsp (1)
- Hibernate (9)
- Mysql (1)
- Ms-Dos (5)
- Music (0)
- Oracle (3)
- Postgresql (0)
- Photoshop (1)
- Spring (17)
- Struts (8)
- Selenium (5)
- Ubuntu (13)
- News (17)
- Others (7)
- SSH (11)
- 算法 (5)
- FreeMarker (4)
- Tomcat (2)
- Linux (5)
最新评论
以前在写程序的时候,碰到需要比较两个有可能为null的实例时,为了避免出现NullPointerException,经常用这样的一段代码来比较:
这样的程序,读起来真是挺拗口。我一直没有想到什么好的方法解决这个问题,直到今天在看到JDK的AbstractList源码的equals方法的实现时,看到这一段:
原来用三元运算符可以很好的解决这个问题,呵呵,我前面的程序可以改写成:
真是简洁多了!
Object obj1 = "abc";
Object obj2 = "cde";
if ((obj1 == null && obj2 == null) || (obj1 != null && obj1.equals(obj2))
|| (obj2 != null && obj2.equals(obj1))) {
System.out.println("equals");
}
Object obj2 = "cde";
if ((obj1 == null && obj2 == null) || (obj1 != null && obj1.equals(obj2))
|| (obj2 != null && obj2.equals(obj1))) {
System.out.println("equals");
}
这样的程序,读起来真是挺拗口。我一直没有想到什么好的方法解决这个问题,直到今天在看到JDK的AbstractList源码的equals方法的实现时,看到这一段:
if (!(o1==null ? o2==null : o1.equals(o2)))
return false;
return false;
原来用三元运算符可以很好的解决这个问题,呵呵,我前面的程序可以改写成:
Object obj1 = "abc";
Object obj2 = "cde";
if (obj1 == null ? obj2 == null : obj1.equals(obj2))
System.out.println("equals");
Object obj2 = "cde";
if (obj1 == null ? obj2 == null : obj1.equals(obj2))
System.out.println("equals");
真是简洁多了!
发表评论
-
JAVA中建立多线程的典型例子
2008-10-24 21:23 755JAVA中建立多线程,无非两种方式,一是继承自thread类 ... -
解决 Java 程序的乱码问题
2008-10-28 19:19 678早上来上班,同事问在本机好好的 Java 程序,放到服务器上运 ... -
编写对GC友好,又不泄漏的代码
2008-10-31 14:07 674编写对GC友好,又不泄 ... -
java实现给图片添加水印和文字
2008-10-31 18:49 789import java.io.*; import com.su ... -
当我调用 ProductService继承BaseService的方法时,提示我BaseDao属性null
2008-10-31 18:59 921转自:http://hi.baidu.com/annleecn ... -
Java实现分类文件拷贝1
2008-10-31 19:12 968在Java中对文件进行分类 如果你是个Java程序员,也许你 ... -
Java实现分类文件拷贝2
2008-10-31 19:13 705对于对老文件的修改,我 ... -
Java实现分类文件拷贝3
2008-10-31 19:14 708java.io.BufferedWriter; import ... -
Java实现分类文件拷贝4
2008-10-31 19:15 686tputStream fos=new FileOutputSt ... -
j2ee清除缓存的三句话
2008-10-31 19:19 520在ajax中经常会遇到一个问题,就是有重复请求的时候,ajax ... -
java中回调的实现
2008-10-31 19:22 656//定义一个接口 interface Incrementabl ... -
java实现快速排序算法
2008-10-31 19:23 662void paixu(int a[],int low,int ... -
java的窗口关闭问题
2008-10-31 19:24 979java的窗口关闭可以实现windowLinstener接口来 ... -
关于 DAO 接口设计的思考
2008-11-07 11:03 685需求: 现在要设计 3 个 DAO 分对 Wind, Hors ... -
Java 理论与实践: 嗨,我的线程到哪里去了?
2008-11-21 21:11 690Java 理论与实践: 嗨,我的 ... -
详细解析Java中抽象类和接口的区别
2008-11-26 20:39 702详细解析Java中抽象类 ... -
Java获取系统所有进程(转)
2009-02-06 12:36 935代码比较简单,就不那么讲究了。一个 main 写了吧。 im ... -
MD5加密 Java代码
2008-12-15 19:29 814因为代码太长,无法贴上来,所以传到了网盘上,可以下载 点击下 ...
相关推荐
默认情况下,`Equals()` 方法会比较两个对象的内存地址,看它们是否指向同一个实例。如果两个对象是同一个实例,那么`Equals()`返回 `true`;否则,返回 `false`。例如,如果你有两个字符串对象,即使它们包含相同的...
在C#.NET编程中,有时候我们希望确保一个应用程序只能运行一个实例,禁止...在压缩包文件"C#2010-03-11- 如何禁止程序同时运行两个实例"中,可能包含了使用Mutex的方法实现这一功能的详细源代码示例,你可以参考学习。
在IT行业中,多实例编程和多线程是两个重要的概念,尤其在开发高效能的应用程序时,它们常常被用来优化程序性能和并发处理能力。在Windows环境下,VC++(Visual C++)是一种常用的编程工具,它支持这两种技术的实现...
然而,这个实验将这一模式扩展到了可以创建有限个实例,这可能涉及到了对象池的概念。 对象池是一种内存管理技术,用于减少创建和销毁对象的开销。当一个对象在使用后不是立即被销毁,而是暂时存储在池中,以便后续...
6. **依赖问题**:VB6Client和VS2005_UPO_I2CSvr这两个文件可能涉及到对话框的客户端和服务器端交互。如果它们之间的接口或通信方式出现问题,也可能导致对话框创建失败。检查接口定义(如NBInterface.tlb中的内容)...
标题中的“两个常用的上传的实例”表明这是一篇关于文件上传技术的文章,可能涉及Web开发中的文件上传功能。在IT领域,文件上传是常见的交互方式,尤其在网站和应用程序中,用户经常需要上传图片、文档等文件。这篇...
例如,从Activity A跳转到Activity B,可以在Activity A中创建一个Intent实例,指定目标Activity(即Activity B)并启动它: ```java Intent intent = new Intent(A.this, B.class); startActivity(intent); ``...
4. 数组:PHP中的数组可以存储多个值,有索引数组和关联数组两种形式。实例会展示如何声明、遍历和操作数组,例如使用`foreach`循环。 5. 字符串操作:PHP提供了丰富的字符串处理函数,如`strpos()`查找子串位置,`...
第一个参数是接收者的电话号码,第二个参数是短信内容,最后两个参数通常用于处理发送状态的回调,这里设置为null,表示不监听发送状态。 为了调用这个方法,可能需要一个按钮触发事件,如下所示: ```java Button ...
在Java中实现单实例模式通常有两种方式: 1. 饿汉式(静态常量):在类加载时就创建实例,确保线程安全,但可能会造成资源浪费。 ```java public class Singleton { private static final Singleton INSTANCE = new...
3. **比较操作符**:这个操作符在MySQL中也被称为“模糊等于”或“NVL”运算符,它会把两个NULL值视为相等。例如: ```sql SELECT ('value1' <=> 'value2') AS result1, (NULL <=> NULL) AS result2; ``` 上述...
在这个“Linux一个简单队列实例”中,我们将探讨如何在Linux环境下实现一个基础的队列,并涵盖入队(enqueue)和出队(dequeue)这两个基本操作。 一、队列数据结构基础 队列的基本结构通常包括头部(front)和尾部...
然而,在进行这种转换的过程中,常常会遇到一些问题,例如当Java对象的某个属性值为null时,我们可能不希望这个属性在JSON中出现。针对这个问题,本文将介绍两种方法,可以使得在使用Jackson进行序列化时,实体对象...
在给定的标题“利用Type动态创建类实例(C#反射)可以演变抽象工厂”中,我们可以看到两个主要概念:Type和抽象工厂模式。下面将详细解释这两个知识点以及它们如何相互关联。 1. Type: C#中的Type类是System....
例如,在计算机系统中,每台计算机可以有若干个打印机,但只能有一个 Printer Spooler,以避免两个打印作业同时输出到打印机中。 下面是一个经典的单例实现: ```java public class Singleton { private static ...
创建两个DataTable实例,分别填充来自两个服务器的表的数据。然后,可以通过DataTable的`Select()`方法和Linq查询来找出两个表之间的差异。 ```csharp DataTable table1 = LoadTableFromServer1(); DataTable ...
在Windows API中,有两个主要的定时器类型:`SetTimer`函数创建的非精确定时器和`CreateTimerQueueTimer`函数创建的精确定时器。在这个实例中,我们可能使用的是`SetTimer`,因为它更适合于简单的GUI应用程序。 1. ...
`null` 和 `undefined` 在比较时有共同之处,它们在相等性检查中会被视为相等: ```javascript console.log(null == undefined); // true ``` 这使得在某些情况下,我们可以通过比较 `null` 或 `undefined` 来判断...
在RabbitMQ中,我们主要通过`ConnectionFactory`和`Channel`两个关键对象来与消息队列进行交互。`ConnectionFactory`用于创建连接,`Channel`则是实际发送和接收消息的对象。下面是一个简单的生产者示例,它将发送一...
5. `pthread_equal()`: 比较两个线程ID是否相等。 6. 同步机制:`pthread_mutex_t`互斥量,用于保护临界区;`pthread_cond_t`条件变量,用于线程间的同步;`pthread_rwlock_t`读写锁,用于读多写少的情况。 三、多...