13

This may sound very basic... can someone please explain the use of the toString() method and when to effectively use this?

Have done a search on google but could not find any good resource.

4

9 に答える 9

26

ほとんどの言語、toStringまたは同等の方法では、オブジェクトをテキストで表現できることが保証されています。

これは、ロギング、デバッグ、または遭遇するすべてのオブジェクトを文字列としてレンダリングできる必要があるその他の状況で特に役立ちます。

多くの場合、オブジェクトはカスタム動作を実装toStringして、メソッドが実際にオブジェクト インスタンスについて何かを伝えるようにします。たとえば、Personクラスはそれをオーバーライドして「姓、名」を返す場合がありますが、Dateクラスはデフォルト設定 (現在のユーザー インターフェイス カルチャなど) に従って書式設定された日付を表示します。

于 2010-02-24T20:24:06.170 に答える
3

クラスの toString メソッドをオーバーライドしたい状況はいくつかあります (そのほとんどは既存の回答で既に言及されています) が、オブジェクトで toString を明示的に呼び出す必要がある最も一般的な状況の 1 つはStringBuilder を使用して文字列を構築する場合。

public String createString(final String str) {
  final StringBuilder sb = new StringBuilder(str);
  sb.append("foo");
  sb.append("bar");
  return sb.toString();
}
于 2010-02-24T22:48:12.297 に答える
2
  1. オブジェクトを表示したいが、それが以前にnullであるかどうかを確認したくない。
  2. 文字列を連結し、特別な属性については考えずに、プログラマーにデフォルトの属性を提供するだけです。

したがって:

out.println("You are " + user);

ユーザーがnullの場合、またはtoStringがこの(存在する)インスタンスに対して「James」を表示する場合は、「Youarenull」または「YouareJames」を表示します。

于 2010-02-24T20:44:44.663 に答える
1

クラスをオーバーライドすることにより、クラスで toString() を使用して、オブジェクトの意味のあるテキスト表現を提供できます。

たとえば、 Person クラスで toString() をオーバーライドして、姓名を返すことができます。

于 2010-02-24T20:23:39.683 に答える
1

.NET または Java の場合:

一般に、クラスのテキスト表現が必要な場合は、ToString() をオーバーロードする必要があります (クラスにとって意味があると仮定します)。

于 2010-02-24T20:23:01.757 に答える
0

参照変数を出力すると、次のタスクが発生します。

  • 参照変数に null が含まれている場合、null 値が表示されます。
  • 参照変数にオブジェクトのアドレスが含まれている場合、toString()メソッドは JVM によって自動的に呼び出されます。

デフォルトtoString()では、次のようにObject.class表示されます:

ClassName@HexadecimalOfHashCode

クラスでこのメソッドをオーバーライドして、意味のある文字列を表示できます。通常toString()、メソッドはオブジェクトのコンテンツを出力するために使用されます。このメソッドはStringStringBufferintegerなどの多くの Java 組み込みクラスですでにオーバーライドされています。

于 2015-06-29T17:57:19.933 に答える
0

コンストラクターを介して初期化するフィールド値と、ゲッターを使用せずに表示するものを表示する必要がある場合に使用されます。

    import Test.Date;
public class Employ {

private String firstname;
private String lastname;
private Date DOB;
private Date DOH;
public Employ(String name,String lastname,Date DOB,Date DOH)
{
    this.firstname=name;
    this.lastname=lastname;
    this.DOB=DOB;
    this.DOH=DOH;

}

    public  String toString(){

    return String.format("%s %s Birthday %s Hired %s",firstname,lastname,DOB,DOH);      
        }
public static void main (String args[])
{
    Date dob= new Date(12,3,1992);
    Date doh= new Date(10,6,2005);

    Employ em= new Employ("BOB", "Wrigh", dob,doh);

    System.out.println(em);

}

}

于 2016-04-13T17:08:32.563 に答える
0

toString() を使用して 16 進数のアドレスを回避できます。この問題を解決するには、toString() をオーバーライドする必要があります。そうすれば、元のテキスト形式のデータを取得できます。

于 2014-03-03T14:43:46.440 に答える
0

To string は、データ型を文字列に変更する必要がある場合に使用する必要があります。int などの組み込み型の場合、期待どおりの文字列表現があります。すなわち

  int i = 5;
  string s = i.ToString(); //s now equals "5" 

tostring メソッドをオーバーロードする必要があるほとんどの複雑な型とすべてのユーザー作成型の文字列「5」を提供します。そうしないと、クラスの名前のみが取得されます。To string を使用すると、独自のオブジェクトで .net に組み込まれた複雑な書式設定を使用できます。datetime クラスのように複雑なフォーマッタを提供して、独自の型を柔軟に使用できます。

于 2010-02-24T20:24:18.797 に答える