Java 中的 Null 和空字符串
本篇文章将讨论 Java 中 null
和空字符串之间的区别。但在此之前,我们将了解 null
和 empty
之间的基本区别。
Empty 就像一个空盒子,我们可以根据需要使用它来填充它或做需要。
Null 就像一个真空,带有一些与之相关的属性,因此我们既不能认为它是空的,也不能认为它是满的。
在 Java 中,字符串是指字符序列。例如,delftstack
是一个字符串。
我们经常在 Java 中看到空字符串和 null 字符串。很多人认为空字符串和空字符串是一样的,但是空字符串和空字符串是有区别的。
在 Java 中使用空字符串
String a = ""; // empty string
这里的 a
是一个空字符串。当我们将空字符串分配给 string
变量时,它表明 reference
变量引用了堆中字符串的内存位置。
空字符串是其中没有字符的字符串,它具有明确定义的长度长度为 0
。我们可以对空字符串执行所有字符串操作。
我们可以通过使用 length()
方法找到它的长度,找出一些字符的索引等。
在 Java 中使用空字符串
String b = null;
这里的 b
是一个空字符串。将 null 分配给字符串变量时,引用变量不引用堆中的任何内存位置。
空字符串表示根本没有字符串。它没有长度,因为它根本不是字符串。
对空字符串应用任何标准字符串操作将导致 NullPointerException
运行时。
Java 中的空字符串示例
在这个例子中,我们创建了一个空字符串和一个空字符串,然后我们使用 length()
方法检查它们的工作情况。空字符串会引发异常,而空字符串不会。
请参见下面的示例。
public class SimpleTesting {
public static void main(String[] args) {
// empty string
String a = "";
// null string
String b = null;
// printing length of empty string
System.out.println("length a = " + a.length());
// this piece of code will still throw nullpointerexception .*
if (b != "") {
// printing length of null string
System.out.println("length b =" + b.length());
}
}
}
输出:
length a = 0
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.length()" because "<local2>" is null
at SimpleTesting.main(SimpleTesting.java:15)
使用 Java 中的 equals()
方法检查 Null 和空字符串
在这个例子中,我们使用了 equals()
方法和 equal ==
运算符来检查空字符串。表达式 a==b
将返回 false
,因为""
和 null
在内存中不占用相同的空间。
简单来说,我们可以说变量不指向同一个对象。a.equals(b)
将返回 false
,因为 a
和 b
指向的对象引用值不匹配。
b.equal(a)
将返回 NullPointerExpception
因为 b
指向一个模糊的引用,并且不允许任何操作。
public class SimpleTesting {
public static void main(String[] args) {
//empty string
String a = "";
//null string
String b = null;
System.out.println(a == b);
System.out.println(a.equals(b));
System.out.println(b.equals(a));
}
}
输出:
false
false
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "<local2>" is null
at SimpleTesting.main(SimpleTesting.java:13)
相关文章
使用 Mysqldump 备份 MySQL 中的数据
发布时间:2023/05/09 浏览次数:192 分类:MySQL
-
本篇文章将介绍如何使用 mysqldump 只备份数据。 在这里,我们将探讨 --no-create-info 、--compact 、--skip-triggers 和 --no-create-db 选项。
更新 MySQL 表中的主键
发布时间:2023/05/09 浏览次数:61 分类:MySQL
-
本篇文章介绍如何更新 MySQL 表中的主键。 我们将使用 ALTER 命令对主键进行任何更改。更新 MySQL 表中的主键 我们可以在多种情况下更新 MySQL 表中的主键。
Oracle 的 decode 函数在 MySQL 中的等价物
发布时间:2023/05/09 浏览次数:115 分类:MySQL
-
本篇文章介绍了三种替代实现,我们可以将它们用作 MySQL 中 Oracle 的 decode() 函数的等价物。 为此,我们将使用 IF()、CASE 以及 FIELD() 和 ELT() 的组合。
更改 MySQL 服务器中的 max_allowed_packet Size
发布时间:2023/05/09 浏览次数:142 分类:MySQL
-
本篇文章介绍如何更改 MySQL 服务器中的 max_allowed_packet 大小。 为了了解这一点,我们将使用两个操作系统,Windows 10 和 Linux (Ubuntu)。
关闭 MySQL 中的外键约束
发布时间:2023/05/09 浏览次数:191 分类:MySQL
-
在本文中我们将学习在MySQL Workbench中使用FOREIGN_KEY_CHECKS来临时关闭MySQL中的外键约束。我们暂时关闭外键有多种情况。
终止 MySQL 中的连接
发布时间:2023/05/09 浏览次数:60 分类:MySQL
-
这篇文章将讨论 MySQL 非活动进程的问题以及我们如何杀死 MySQL 服务器中未使用的进程。终止 MySQL 中的连接
MySQL 中的 While 循环
发布时间:2023/05/08 浏览次数:126 分类:MySQL
-
在本文中,我们将了解如何在 MySQL 中使用 while 循环,并且我们还将看到一个相关的示例以及适当的解释以使主题更容易理解。
在 MySQL 中使用不同的值更新多行中的多列
发布时间:2023/05/08 浏览次数:106 分类:MySQL
-
在本文中,我们将学习使用 CASE 语句、IF() 函数、INSERT ... ON DUPLICATE KEY UPDATE 子句和 UPDATE with JOIN() 函数在 MySQL 中更新多行中具有不同值的多个列。
为 MySQL 中的多列指定唯一约束
发布时间:2023/05/08 浏览次数:123 分类:MySQL
-
在本篇文章中,我们将了解在 MySQL 中为多列指定唯一约束的多种方法。称为 UNIQUE 的完整性约束确保列或列组合中的每个值都是不同的。 表约束或列约束都可以是唯一约束。