原帖地址:http://blog.csdn.net/ghost_t/article/details/5811485
1,错误用法一:
if (name == "") {
//do something
}
2,错误用法二:
if (name.equals("")) {
//do something
}
3,错误用法三:
if (!name.equals("")) {
//do something
}
我们来解说一下:
上述错误用法1是初学者最容易犯,也最不容易被发现的错误,因为它们的语法本身没问题,Java编译器编译时不报错。但这种条件可能在运行时导致程序出现bug,永远也不会为true,也就是时说,if块里的语句永远也不会被执行。
上述用法二,用法三 的写法,是包括很多Java熟手也很容易犯的错误,为什么是错误的呢?也许你会感到纳闷。
对,它们的写法本身没错,但是,少了一个null判断的条件,试想,如果name=null的情况下,会发生什么后果呢?后果是,你的程序将抛出NullPointerException异常,系统将被挂起,不再提供正常服务。
当然,如果之前已经对name作了null判断的情况例外。
正确的写法应该先加上name != null的条件,如例:
if (name != null && !name.equals("")) {
//do something
}
或者
if (!"".equals(name)) {//将""写在前头,这样,不管name是否为null,都不会出错。
//do something
}
下面,我们举一个简单的例子:
TestNullOrEmpty.java
public class TestNullOrEmpty {
public static void main(String[] args) {
String value = null;
testNullOrEmpty(value);
value = "";
testNullOrEmpty(value);
value = " ";
testNullOrEmpty(value);
value = "hello me! ";
testNullOrEmpty(value);
}
static void testNullOrEmpty(String value) {
if (value == null ) { //正确的写法
System.out.println("value is null. ");
} else if ("".equals(value)) { //正确的写法
System.out.println("value is blank but not null. ");
} else {
System.out.println("value is /" " + value + "/" ");
}
if (value == "") { //NG 错误的写法
//别用这种写法
}
}
}
编译执行:
c:/>javac TestNullOrEmpty.java
c:/>java TestNullOrEmpty
value is null.
value is blank but not null.
value is " "
value is "hello me!"
分享到:
相关推荐
本文主要讨论了如何正确判断Java中的String对象是否为null、空值("")以及它们的地址是否相等。在处理字符串时,了解这些概念对于避免程序出错至关重要。 首先,我们需要区分`null`和空字符串`""`。`null`表示变量...
综上所述,`null`在Java中扮演着重要的角色,它不仅是一个特殊的值,还是编程中常见的一种状态标志,用于处理不确定或未初始化的对象引用。正确理解和使用`null`可以帮助开发者避免常见的编程陷阱,提高代码的质量和...
需要注意的是,在进行空值判断时,必须先判断 `s == null`,否则可能抛出 `java.lang.NullPointerException`。 3. 示例程序 以下是一个示例程序,演示了上述四种方法: ```java public class String_Demo01 { ...
在使用Velocity作为视图层处理数据时,常常需要进行空值判断,确保模板能够正确地处理不存在或者值为空的情况。下面我们将详细探讨在Velocity中如何进行空值和空字符串的判断。 ### 1. 判断Velocity变量是否为null ...
Optional 是 Java 8 中引入的新特性,旨在解决空指针异常(Null Pointer Exception,NPE)这个长期困扰开发者的问题。下面我们将对 Optional 的基本概念、使用方法、优点等进行详细的介绍。 Optional 的基本概念 ...
为了解决这个问题,开发者们总结了多种方法,包括在使用变量前确保其已初始化、在访问变量前进行空值检查、使用Java8引入的Optional类进行优雅的空值处理,以及Java11中增加的默认值或默认值生成策略等。在解决空值...
这个方法通常用于检查实例变量或方法的返回值,确保它们在被进一步处理之前不是null。 2. **字符串判空**:`CheckUtil.isNotEmpty(String str)` 方法扩展了对象判空的概念,不仅检查字符串是否为null,还检查其长度...
其次,Java8及以上版本引入了一个新的类Optional,用于对可能为null的值进行优雅处理。Optional类通过ifPresent等方法提供了一种安全的方式来操作可能不存在的对象,从而避免空指针异常。在使用Optional类时,首先...
在不同编程语言中,空值的表现形式可能不同,如Java中的null或Python中的None。为了解决这一问题,程序员需要在访问对象的属性或方法之前,确保该对象已经被正确初始化并且不是空值。这种检查可以预防空指针异常,...
3. **外部调用返回空值**:从数据库或其他服务获取的数据可能为空,如果直接使用这些数据而没有进行检查,也会引发此类错误。 **示例分析**: - **示例1:直接访问request参数** ```java out.println(request....
在处理JSON数据时,我们经常需要判断JSON对象是否为空,以便进行适当的处理。 通常,我们可能会直接使用Java的`== null`来检查一个对象是否为`null`,例如: ```java JSONObject detail = JSONObject.fromObject(...
null是Java中的特殊值,表示对象引用的空值,而Null-Safe设计模式可以帮助避免空指针异常。Java.IO、Java.lang和Java.math等包提供了丰富的类和接口,如Number类的子类和数学运算,以及网络编程相关的类。 Java分为...
- `null`:空值。 - `package`:声明包。 - `private`:私有访问修饰符。 - `protected`:受保护访问修饰符。 - `public`:公共访问修饰符。 - `return`:返回值。 - `short`:短整型数据类型。 - `static`:静态...
本文以spring boot项目为例给大家介绍SpringBoot项目中处理返回json的null值问题,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下
- **空键和空值**:`Hashtable` 不允许键或值为 `null`,而 `HashMap` 允许一个 `null` 键和任意数量的 `null` 值。 - **性能**:由于 `Hashtable` 的同步机制,`HashMap` 在单线程环境下的性能更好。
- `null`:空值。 - `goto`:跳转语句(Java中未使用)。 - `const`:常量修饰符(Java中未使用)。 #### 七、变量命名与作用域 - **变量命名规则**: - 类名首字母大写,多个单词组合时,每个单词首字母大写(大...
Java中的空指针异常发生在尝试使用空引用(null)调用实例方法或访问字段时。解决空指针异常的方法有很多,以下将详细介绍几种常用的解决方案,并提供相应的代码示例。 首先,对于空指针异常,最直接的解决方案是在...
- 在访问对象的成员或方法之前,始终进行空值检查,防止空指针异常。 7. **使用`this`关键字**: - 当成员变量和局部变量名称冲突时,使用`this`关键字来明确访问成员变量。 8. **字符串处理**: - 避免频繁...