質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

3回答

2865閲覧

インスタンスの出力がわかりません。

mikan_1902

総合スコア1

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2020/11/07 03:34

###質問内容

Integerクラスだと、インスタンスを作ってSystem.out.println(インスタンス名)で
インスタンス作成時の引数で渡した値が出力されますが
同じようなことを別クラスでやろうとしても、インスタンス作成時の引数が出力されません。

下記コードで
System.out.println(インスタンス名)でインスタンス作成時の引数で渡した値を出力するには
どうしたら良いでしょうか。

該当のソースコード

java

1 2package java_practice; 3 4public class Practice_Class { 5public static void main(String[] args) { 6 7 //Animalクラスのインスタンス 8 Animal sample = new Animal("犬"); 9 System.out.println(sample); 10 11 //Integerクラスのインスタンス 12 Integer sample2 = new Integer(123); 13 System.out.println(sample2); 14 15 } 16} 17 18 //Animalクラスの作成 19 class Animal{ 20 String name; 21 22 //コンストラクタ 23 public Animal(String name) { 24 this.name = name; 25 } 26 } 27 28

###出力

java_practice.Animal@70dea4e 123

実際に出力したいのは「犬」です。
sample.nameを指定すると、当たり前ですが「犬」が出力されますが
sampleだけだと上記の出力になります。

Integerクラスではインスタンス名.valueと指定しなくても
インスタンス作成時の引数が出力されるのが不思議です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

toStringメソッドを用意して下さい。

Java

1class Animal { 2 ... 3 4 @Override 5 public String toString() { 6 return name; 7 } 8}

Integerクラスではインスタンス名.valueと指定しなくても

インスタンス作成時の引数が出力されるのが不思議です。

そのようにtoStringが定義されているからです。

Java

1jshell> Integer n = 42; 2n ==> 42 3 4jshell> n.toString() 5$2 ==> "42"

投稿2020/11/07 03:37

LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mikan_1902

2020/11/07 05:06

実際のメソッドの実装の仕方を回答していただけたので、すぐ解決することができました。ありがとうございました。
guest

0

ベストアンサー

Animal.toString()メソッドを実装してください。System.out.println(オブジェクト)は、オブジェクト.toString()を呼び出してその値を出力しています。

何も実装しなければ、Object.toString()がそのまま使われます。

投稿2020/11/07 03:38

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mikan_1902

2020/11/07 04:32

System.out.println(オブジェクト)は、オブジェクト.toString()が必要なことは分かりました。 System.out.println(変数)は、特にメソッドは実装しなくても格納した値が出力されますが オブジェクトの内容を出力しようとする時だけtoStringメソッドが必要なのでしょうか。
maisumakun

2020/11/07 04:42

はい、Object以外はSystem.out側で適切な実装がなされています。
mikan_1902

2020/11/07 05:05

なぜメソッドが必要なのか、まで教えていただけて納得できました。ありがとうございました。
guest

0

インスタンス名で出てくる文字列は、そのクラスのtoStringメソッドの戻り値の値になります

ということで、あなたのクラスで同様なことをしたいなら、そのメソッドを実装しましょう

投稿2020/11/07 03:37

y_waiwai

総合スコア87749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問