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 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!"
引自博客:
http://garlics.blog.51cto.com/2682515/895865
相关推荐
本文主要讨论了如何正确判断Java中的String对象是否为null、空值("")以及它们的地址是否相等。在处理字符串时,了解这些概念对于避免程序出错至关重要。 首先,我们需要区分`null`和空字符串`""`。`null`表示变量...
综上所述,`null`在Java中扮演着重要的角色,它不仅是一个特殊的值,还是编程中常见的一种状态标志,用于处理不确定或未初始化的对象引用。正确理解和使用`null`可以帮助开发者避免常见的编程陷阱,提高代码的质量和...
Optional 是 Java 8 中引入的新特性,旨在解决空指针异常(Null Pointer Exception,NPE)这个长期困扰开发者的问题。下面我们将对 Optional 的基本概念、使用方法、优点等进行详细的介绍。 Optional 的基本概念 ...
需要注意的是,在进行空值判断时,必须先判断 `s == null`,否则可能抛出 `java.lang.NullPointerException`。 3. 示例程序 以下是一个示例程序,演示了上述四种方法: ```java public class String_Demo01 { ...
这个方法通常用于检查实例变量或方法的返回值,确保它们在被进一步处理之前不是null。 2. **字符串判空**:`CheckUtil.isNotEmpty(String str)` 方法扩展了对象判空的概念,不仅检查字符串是否为null,还检查其长度...
- **空值处理**:避免对null对象进行操作,减少NullPointerException。 - **异常处理**:异常不应被简单地忽略,应捕获并处理,或者向上抛出。 - **日志规约**:合理使用日志记录,便于问题定位和性能监控。 3. ...
实训5的主题聚焦于判断字符串,这通常涉及检查字符串的特定属性,比如空值、是否包含某个子串、字符排序等。以下是一些关于Java中字符串判断的基本知识点: 1. **字符串初始化**:在Java中,字符串是对象,可以使用...
null是Java中的特殊值,表示对象引用的空值,而Null-Safe设计模式可以帮助避免空指针异常。Java.IO、Java.lang和Java.math等包提供了丰富的类和接口,如Number类的子类和数学运算,以及网络编程相关的类。 Java分为...
通常,我们可能会直接使用Java的`== null`来检查一个对象是否为`null`,例如: ```java JSONObject detail = JSONObject.fromObject("123"); if (detail == null) { detail = new JSONObject(); } ``` 然而,对于...
本文以spring boot项目为例给大家介绍SpringBoot项目中处理返回json的null值问题,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下
- **空键和空值**:`Hashtable` 不允许键或值为 `null`,而 `HashMap` 允许一个 `null` 键和任意数量的 `null` 值。 - **性能**:由于 `Hashtable` 的同步机制,`HashMap` 在单线程环境下的性能更好。
这个问题涉及到Java中的数据类型、变量赋值、比较操作符以及空值(NULL)的处理。让我们深入探讨这个Java谜题,了解何时使用“==”和“!=”,以及如何正确处理NULL。 首先,我们要知道Java中的“==”操作符用于比较两...
- `null`:空值。 - `package`:声明包。 - `private`:私有访问修饰符。 - `protected`:受保护访问修饰符。 - `public`:公共访问修饰符。 - `return`:返回值。 - `short`:短整型数据类型。 - `static`:静态...
- 在访问对象的成员或方法之前,始终进行空值检查,防止空指针异常。 7. **使用`this`关键字**: - 当成员变量和局部变量名称冲突时,使用`this`关键字来明确访问成员变量。 8. **字符串处理**: - 避免频繁...
- `null`:空值。 - `goto`:跳转语句(Java中未使用)。 - `const`:常量修饰符(Java中未使用)。 #### 七、变量命名与作用域 - **变量命名规则**: - 类名首字母大写,多个单词组合时,每个单词首字母大写(大...
- `Hashtable`不允许键或值为null,而`HashMap`允许一个空键和多个空值。 3. **TreeMap** - **特点**: - 基于红黑树实现。 - 保证映射关系的顺序,通常按照键的自然顺序或创建映射时提供的Comparator排序。 -...
- **空值处理**:`HashTable`不允许键或值为`null`,而`HashMap`允许键或值为`null`,提供了更多的灵活性。 #### 4. HashMap与TreeMap区别 - **存储方式**:`HashMap`通过哈希码存储和查找,不保证元素的顺序;`...
### 自整理Java关于基础和框架的面试题 #### 基础知识点 ##### JDK常用的包 - **java.lang**: 包含所有基本类,如`String`、`Math`等。 - **java.util**: 提供集合框架、日期/时间设施、事件模型、杂项实用程序类...
- `null`:空值,表示对象引用未指向任何对象。 - `true`和`false`:布尔类型的常量。 7. **其他关键字**: - `super`:用于访问父类的方法或字段。 - `this`:引用当前对象,常用于区分成员变量和局部变量。 ...