Java の Null および空の文字列
- Java で空の文字列を使用する
- Java で Null 文字列を使用する
- Java でのヌルおよび空の文字列の例
-
Java の
equals()
メソッドを使用して、Null と空の文字列を確認する
このチュートリアルでは、Java の null
文字列と空の文字列の違いについて説明します。ただし、その前に、空
と null
の用語の基本的な違いを理解します。
空
は空の箱のようなもので、必要に応じて記入したり、必要に応じて使用したりできます。
Null
は、いくつかのプロパティが関連付けられたバキュームのようなものです。そのため、空でも満杯でもないと見なすことはできません。
Java では、文字列は文字のシーケンスを参照します。たとえば、delftstack
は文字列です。
Java では空の文字列と null 文字列がよく見られます。多くの人は、空の文字列と null の文字列は同じだと思いますが、null と空の文字列には違いがあります。
Java で空の文字列を使用する
String a = ""; // empty string
ここで、a
は空の文字列です。空の文字列を string
変数に割り当てると、reference
変数がヒープ内の文字列のメモリ位置を参照していることを示します。
空の文字列は、文字が含まれていない文字列であり、明確に定義された長さ - 長さは 0 です。空の文字列に対してすべての文字列操作を実行できます。
length()
メソッドを使用したり、一部の文字のインデックスを調べたりすることで、その長さを見つけることができます。
Java で Null 文字列を使用する
String b = null;
ここで、b
はヌル文字列です。文字列変数に null を割り当てる場合、参照変数はヒープ内のメモリ位置を参照しません。
null 文字列は、文字列がまったくないことを意味します。文字列ではないので長さはありません。
標準の文字列操作を null 文字列に適用すると、NullPointerException
ランタイムが発生します。
Java でのヌルおよび空の文字列の例
この例では、空の文字列と null の文字列を作成し、length()
メソッドでそれらが機能することを確認しました。null 文字列は例外をスローしますが、空の文字列は例外をスローしません。
以下の例を参照してください。
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 ==
演算子を使用して、空の文字列と null 文字列をチェックしました。 ""
と null
はメモリ内の同じスペースを占有しないため、式 a==b
は false
を返します。
簡単に言えば、変数は同じオブジェクトを指していないと言えます。a
と b
が指すオブジェクト参照値が一致しないため、a.equals(b)
は false
を返します。
b
はあいまいな参照を指し、操作が許可されていないため、b.equal(a)
は NullPointerExpception
を返します。
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)