原帖地址: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 { ...
Optional 是 Java 8 中引入的新特性,旨在解决空指针异常(Null Pointer Exception,NPE)这个长期困扰开发者的问题。下面我们将对 Optional 的基本概念、使用方法、优点等进行详细的介绍。 Optional 的基本概念 ...
这个方法通常用于检查实例变量或方法的返回值,确保它们在被进一步处理之前不是null。 2. **字符串判空**:`CheckUtil.isNotEmpty(String str)` 方法扩展了对象判空的概念,不仅检查字符串是否为null,还检查其长度...
3. **外部调用返回空值**:从数据库或其他服务获取的数据可能为空,如果直接使用这些数据而没有进行检查,也会引发此类错误。 **示例分析**: - **示例1:直接访问request参数** ```java out.println(request....
null是Java中的特殊值,表示对象引用的空值,而Null-Safe设计模式可以帮助避免空指针异常。Java.IO、Java.lang和Java.math等包提供了丰富的类和接口,如Number类的子类和数学运算,以及网络编程相关的类。 Java分为...
在处理JSON数据时,我们经常需要判断JSON对象是否为空,以便进行适当的处理。 通常,我们可能会直接使用Java的`== null`来检查一个对象是否为`null`,例如: ```java JSONObject detail = JSONObject.fromObject(...
- `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中未使用)。 #### 七、变量命名与作用域 - **变量命名规则**: - 类名首字母大写,多个单词组合时,每个单词首字母大写(大...
- 在访问对象的成员或方法之前,始终进行空值检查,防止空指针异常。 7. **使用`this`关键字**: - 当成员变量和局部变量名称冲突时,使用`this`关键字来明确访问成员变量。 8. **字符串处理**: - 避免频繁...
### 自整理Java关于基础和框架的面试题 #### 基础知识点 ##### JDK常用的包 - **java.lang**: 包含所有基本类,如`String`、`Math`等。 - **java.util**: 提供集合框架、日期/时间设施、事件模型、杂项实用程序类...
- `Hashtable`不允许键或值为null,而`HashMap`允许一个空键和多个空值。 3. **TreeMap** - **特点**: - 基于红黑树实现。 - 保证映射关系的顺序,通常按照键的自然顺序或创建映射时提供的Comparator排序。 -...
- **空值处理**:避免对null对象进行操作,减少NullPointerException。 - **异常处理**:异常不应被简单地忽略,应捕获并处理,或者向上抛出。 - **日志规约**:合理使用日志记录,便于问题定位和性能监控。 3. ...
在编程中,为了提高代码的健壮性和可读性,建议在处理可能存在null值的变量时进行非空值检查,避免运行时错误。 总结,查找非空值是信息技术中一项基础但至关重要的任务,无论是在编程、数据库管理还是数据分析中...
这个问题涉及到Java中的数据类型、变量赋值、比较操作符以及空值(NULL)的处理。让我们深入探讨这个Java谜题,了解何时使用“==”和“!=”,以及如何正确处理NULL。 首先,我们要知道Java中的“==”操作符用于比较两...
### Java基础重点难点详解 #### 一、ArrayList与Vector的区别 **安全性方面:** - `Vector`类在设计上提供了线程安全的实现。 - `ArrayList`类则没有提供线程安全机制。 **同步机制:** - `Vector`类的所有方法都...
- **允许空值**: `HashMap`允许键和值为`null`,而`HashTable`不允许任何一项为`null`。 - **性能**: 在单线程环境中,`HashMap`通常比`HashTable`性能更高。 - **历史沿革**: `HashTable`是Java早期提供的散列表...