※ ChatGPTを利用し、要約された質問です(原文:なぜ文字化けして出力されるのか?)
なぜ文字化けして出力されるのか?
このQ&Aのポイント
JAVAのプログラムを勉強しているのですが、斉藤・鈴木をHeroとしてインスタンス化してArrayListに格納して1つずつ順番に取り出して名前を表示するプログラムを作っているのですが、System.out.printlnにて出力すると、rensyu3.pkg2.Hero@659e0bfd rensyu3.pkg2.Hero@2a139a55と出力されてしまいます。
この文字化けの原因は、HeroクラスがデフォルトのtoStringメソッドを継承しているためです。デフォルトのtoStringメソッドでは、クラス名とハッシュコード(@記号以降)が出力されます。
解決するためには、HeroクラスでtoStringメソッドをオーバーライドし、名前を返すようにします。toStringメソッドを以下のように修正しましょう。
public String toString() {
return this.name;
}
JAVAのプログラムを勉強しているのですが、斉藤・鈴木をHeroとしてインスタンス化してArrayListに格納して1つずつ順番に取り出して名前を表示するプログラムを作っているのですが、System.out.printlnにて出力すると、
rensyu3.pkg2.Hero@659e0bfd
rensyu3.pkg2.Hero@2a139a55
と出力されてしまいます。なぜなのでしょうか?
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package rensyu3.pkg2;
import java.util.ArrayList;
/**
*
*/
public class Rensyu32 {
/**
* @param args the command line arguments
*/
public static void main (String[] args) {
// TODO code application logic here
Hero saitou = new Hero ("斉藤");
Hero suzuki = new Hero ("鈴木");
ArrayList<Hero>yusya=new ArrayList<Hero> ();
yusya.add (suzuki);
yusya.add (saitou);
for (Hero hero : yusya) {
System.out.println (hero);
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
package rensyu3.pkg2;
/**
*
*/
public class Hero {
private String name;
public Hero(String name){
this.name=name;
}
public String Getname(){
return this.name;
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////