9

pattern()メソッドとクラスのtoString()メソッドの違いは何ですか?Pattern

ドキュメントによると:

public String pattern()

このパターンのコンパイル元の正規表現を返します。

public String toString()

このパターンの文字列表現を返します。これは、このパターンがコンパイルされた正規表現です。

それらの実装でさえ同じ結果を返します:

import java.util.regex.*;

class Test {
  public static void main(String[] args) {
    Pattern p = Pattern.compile("[a-zA-Z]+\\.?");
    String s = p.pattern();
    String d = p.toString();
    System.out.println(s);
    System.out.println(d);
  }
}

違いはわかりませんが、なぜ2つの方法があるのでしょうか。それとも私は何かが足りないのですか?

4

2 に答える 2

13

各クラスには、toString()から継承されたメソッドがあるためObjectです。このtoString()メソッドは、ある種の文字列表現を作成することさえ可能である場合、オブジェクトを可能な限り最良の方法で表す文字列を返すことになっています。名前toString()はかなり曖昧なので、彼らpattern()はより簡単な方法を追加しました。

そして、彼らは何か賢いものを返したかったので、クラスtoString()にとって良い文字列表現である正規表現のパターンを使用しました。Pattern

于 2012-05-27T11:11:29.633 に答える
0

toString()メソッドは各クラスにあります(クラスから拡張されObjectます)。例があります。System.out.print(Object o);に関する情報を印刷できますObject。実際にはこれは同じになります:System.out.print(o.toString())。したがって、所有しているオブジェクトを簡単に確認できます。試す:

Object someUnknownObject = new JButton();
System.out.println(someUnknownObject);

// output
javax.swing.JButton[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.5...

ご覧のとおり、これがボタンであることがまったくわからなくても、このオブジェクトに関する情報を見ることができます。

またStringObject奇妙な例が​​1つあります。

String str = "hello";
String toStr = str.toString();

System.out.println(str.toString().toString().toString()...);

これは役に立たないが、all classes have this method。したがって、「mystring」と「mystring」.toString()は同じです

于 2012-05-27T11:23:48.270 に答える