`
yzxqml
  • 浏览: 134713 次
  • 性别: Icon_minigender_1
  • 来自: 广西
文章分类
社区版块
存档分类
最新评论

JAVA中equals方法的使用技巧

阅读更多

在我们的JAVA开发中,经常 会用到一个方法:equals。一个字符串的比较方法,我们习惯的写:

 

if (b.equals(a)) {
       ...
}

还有一个我们经常遇到的   java.lang.NullPointerException   ,呵呵,这个是所有开发者遇到最多最常见的异常,

 

 

 

一种很常见的写法,但是昨天在论坛上看到一位哥们发了一个 java.lang.NullPointerException的错误 ,用到的是equals这个方法,这个错得有点离奇,表面 看没有什么问题:代码大概是这样的:

 

if (str.equals("")) {
       ...
}

 其中他的str变量是从JSP页面传上来的变量值,咋一看这个地方不会出空异常啊。是啊。刚开始我也觉得,然后copy代码去运行一下,仔细查看,有问题,如果这个时候 str  变量值为 Null,那么,这个错误 就不奇怪了。

 

我的实验是这样 ,先定义一个变量a,模拟我们已知的变量,然后再定义 一个变量b,模拟我们从页面上传上来的值,

然后方法这样写:

 

public static void main(String args[]){
	String a="a";//这个是已知的变量
	String b="aaaaaaaaa";//这个是模拟页面传上来的变量
	if (b.equals(a)) {
		System.out.println("相等");
	} else {
		System.out.println("不相等");
	}
}
 

    正常情况下,两个变量都有值,那么程序不会出问题,但是如果这个时候b的值为Null,这个就有趣了,b这个变量直接为Null,然后再去调用这个Null对象的equals方法,直接就异常! 

 

这样我们就要考虑我们程序的健壮性,

"".equals(str)和str.equals("")两个选择,"".equals(str)固然更保险。

 

从开始学习编程到现在,  java.lang.NullPointerException 从未停止出现,各式各样的Null,都已成为我们的口头禅,

殊不知,Null,有时候不仅仅是Null,去发现这些细节,我们的程序才能跑得更稳定 。

 

OK,又一个收获 。

 

分享到:
评论
1 楼 一枝花算不算浪漫 2014-10-17  
这个以前也见到过,让已知不为空的量equals(变量),博主写的很好。

相关推荐

    java中equals和==的比较文.pdf

    在Java中,`equals()`方法和`==`运算符都是用来比较对象的,但它们的比较方式不同。`==`运算符用于比较基本类型(如int,char)的值是否相等,对于引用类型,`==`比较的是两个引用是否指向内存中的同一个对象。而`...

    -Eclipse使用技巧(Java_开发用户指南

    在Java开发中使用Eclipse,开发者可以利用以下几个方面的技巧来提高代码编写的速度和准确性: 1. 内容辅助:Eclipse提供了内容辅助功能,可以在编写代码时帮助开发者快速完成类名、方法名、变量名的补全。按下Alt+/...

    java开发中的一些常用小技巧

    ### Java开发中的常用小技巧详解 #### JDBC使用技巧与注意事项 **1. 使用PreparedStatement代替Statement** 在Java中,利用JDBC操作数据库时,我们经常需要动态构建SQL语句。直接使用`Statement`来构建这样的SQL...

    JAVA中“相等性比较”的实现技巧.pdf

    在 Java 中,比较数据是否相等可以使用操作符“==”和 equals() 方法。 使用操作符“==”可以比较两个操作数在栈区的值是否相等。如果为基本类型数据,比较的是具体的数据值是否相等;如果为引用类型数据,比较的是...

    Java基础复习(内附String中equals与==区别的分析)

    本复习聚焦于Java的基础知识,特别是String类中的equals()方法与"=="运算符的区别,这是许多初学者常常混淆的地方。 首先,我们来了解Java中的"=="运算符。在Java中,"=="用于比较两个变量是否指向同一个对象或者...

    Java中有关Null的9件事Java开发Java经验技巧

    它在Java中的使用至关重要,因为理解`null`可以帮助我们避免常见的运行时错误,如`NullPointerException`。以下是从标题和描述中提取的关于Java中`null`的9个关键知识点,以及每个知识点的详细解释: 1. **null的...

    静态的魔力:Java中静态方法和变量的深度解析

    在这个例子中,我们使用了`import static`导入了`Math.PI`常量,从而可以直接在`CircleCalculator`类中使用`PI`。 #### 八、静态方法与实例方法的区别 静态方法和实例方法之间的主要区别在于: - **实例方法**:...

    浅谈Java字符串Java开发Java经验技巧共11页.p

    6. **正则表达式**:演示如何在Java中使用正则表达式进行复杂文本匹配和操作。 7. **实践应用**:可能包含一些实际开发中的案例,展示了如何在项目中有效利用字符串处理技巧。 8. **效率优化**:可能探讨了在处理...

    湖北汽车工业学院Java实验一 Java编程环境使用

    本实验旨在帮助学生掌握Java开发环境的搭建与使用,理解Java语言的基础知识和String类的使用技巧。通过实践操作,学生不仅能够熟悉Java的开发流程,还能加深对面向对象编程的理解。这对于进一步学习更复杂的编程概念...

    java开发技巧

    根据描述中的建议,在进行字符串连接时,应尽量避免使用“+”号进行串联,而改用`StringBuffer`(或者在Java 5之后版本中可以选择`StringBuilder`)来处理字符串。 **原因分析**: - 使用“+”号连接字符串时,每次...

    学习Eclipse使用技巧Java开发用户指南.pdf

    在学习Eclipse使用技巧以进行Java开发的过程中,编辑、重构、导航、搜索和视图等是关键要素。本文将详细探讨这些方面的知识点。 编辑部分,Eclipse提供了强大的内容辅助功能,通过Alt+/或编辑>内容辅助,可以在编写...

    Eclipse使用技巧(Java开发用户指南)汇编.pdf

    13. **使用模板(Templates)**:在"Java>编辑器>模板"首选项页中,可以创建自定义模板,如private_method、public_method等,与内容辅助一起使用。 14. **快速修正(Quick Fix)**:通过Ctrl+1快捷键,可以快速修复...

    java编程小技巧共享

    11. **equals与hashCode**:当重写equals方法时,也应同时重写hashCode方法,以保持对象在哈希表中的一致性。 12. **资源自动关闭**:使用try-with-resources语句,可以确保资源在使用后自动关闭,例如数据库连接、...

    2020年最新版--Java+最常见的+200++面试题汇总+答案总结汇总.pdf

    接着,文章中还讨论了Java中一个经典且经常在面试中出现的问题——"=="和"equals"方法的区别。在Java中,基本数据类型之间的比较使用"==",它比较的是值是否相同;而引用数据类型(例如对象)之间的比较,使用"==...

    2020年最新版--Java+最常见的+200++面试题汇总+答案总结汇总

    RabbitMQ和Kafka是消息中间件,面试中可能讨论它们的使用场景、特性以及如何在Java中集成。Zookeeper在分布式系统中的角色,如配置管理、服务发现等,也是考察点。 【网络编程】 网络编程的基础,如TCP/IP协议、...

    Java面试宝典.pdf

    该书详细解析了Java基础、进阶主题及实战技巧,涵盖了许多常见的面试问题。 在Java基础部分,书中讨论了多个核心概念。例如,一个.java源文件可以包含多个类,但只能有一个公共类,这是Java编译规则的体现。至于`...

    200道java基础题及答案终极版.pdf

    在Java编程语言中,JDK和JRE是两个非常重要的概念,而了解它们的区别是每个Java开发者的基础知识之一...通过这些面试题的解析,开发者可以更加深入地理解Java语言的特性和使用技巧,从而在面试中展现出自己的专业水平。

Global site tag (gtag.js) - Google Analytics