プログラミング言語における利用
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2019/07/13 06:43 UTC 版)
「空文字列」の記事における「プログラミング言語における利用」の解説
多くのプログラミング言語において、各文字列はそれぞれ個別のメモリ領域に格納される。そのため、同じ内容の文字列(例えば空文字列)がメモリ上の複数箇所に格納されることがある(長さ0の文字列でも格納にはメモリが必要なことに注意。使用するメモリの量は文字列の格納形式により異なる)。この場合、形式言語の定義と異なり、複数の空文字列がメモリ上に同時に存在することになる。しかし、文字列比較ルーチン(関数やメソッド)を使えば、これらの空文字列は全て同じであることを示すことができる。 空文字列はヌルポインタやヌル参照とは別物である。ヌルポインタやヌル参照の指す先には何も存在しない(空文字列すら存在しない)。たいていの言語で、ヌルポインタやヌル参照に対して何らかの処理を実行しようとした場合は通例不正な操作であるとみなされてエラーが発生するが、空文字列は正当な文字列のひとつとして扱われる。たとえばJavaにおいてnullを参照する文字列クラス変数の長さを求めようとするとNullPointerException例外が発生するが、空文字列の長さを求めれば0が返される。また、空文字列とnullを比較すると偽が返される。 try { String str1 = null; System.out.println(str1.length()); // NullPointerException} catch (Exception e) { System.out.println(e);}String str2 = "";System.out.println(str2.length()); // 0System.out.println("" == null); // falseSystem.out.println("".equals(null)); // false C言語およびC++の標準ライブラリにおける文字列操作関数および文字列クラスでは、引数にヌルポインタ (NULLあるいはnullptr) が渡された場合の動作は未定義となっており、通例不正な操作とみなされてプログラムが異常終了する原因となる。 一方、Objective-CではNULLを参照する文字列オブジェクトに対する操作は正当なものとして扱われるが、空文字列と等価ではない。 NSString* str1 = NULL;NSLog(@"%u", [str1 length]); // 0NSLog(@"%@", ([str1 isEqualToString: @""] ? @"YES" : @"NO")); // NO プログラミング言語によっては、エラーの発生を低減するため以下の値を同じものとして扱うことがある。 空文字列 ヌル参照 整数の0 浮動小数点数の0 ブーリアン型のfalse ASCIIのヌル文字 また、プログラミング言語によっては、変数が最初に使われるとき、あらかじめ空文字列が入っているものとするものもある。 通常、空文字列は他の文字列と同じように表現される。文字列を、文字列終端文字を使用して(ヌル終端文字列または改行区切りのプレインテキストとして)実装している場合、空文字列は単一の文字列終端文字で表現される。 プログラミング言語によっては、数値など文字列でないものと空文字列を連結すると、変数の型を文字列に型変換する。 Oracle Databaseでは空文字列とヌル (SQL)が区別されない。 多くのプログラミング言語において、空文字列は最小のクワインである。 空文字列の表現プログラミング言語"" C, C++, Java, Perl, PHP, Python, JavaScript, C#, Visual Basic .NET, Go, Turing, Haskell, Objective-C (C言語形式の文字列の場合), OCaml, Standard ML, Scala, Tcl '' Perl, PHP, Python, JavaScript, Delphi, Pascal {'\0'} C, C++, Objective-C (C言語形式の文字列の場合) std::string()""s C++(後者のサフィックスsによるリテラル記法を利用するには、C++14以降に対応した処理系と、あらかじめusing namespace std::literals::string_literals;が必要) @"" Objective-C (NSString型定数オブジェクトの場合) [NSString string] Objective-C (NSStringオブジェクトを新規に作成する場合) q() Perl %{} Ruby """"""str() Python System.String.Empty .NET言語全般(C#のstringおよびVB.NETのStringはSystem.Stringへのエイリアス) String.make 0 '-' OCaml {} Tcl
※この「プログラミング言語における利用」の解説は、「空文字列」の解説の一部です。
「プログラミング言語における利用」を含む「空文字列」の記事については、「空文字列」の概要を参照ください。
- プログラミング言語における利用のページへのリンク