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

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

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

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

Q&A

解決済

2回答

323閲覧

参照型変数の問題の理解が……

ataro25na

総合スコア7

Java

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

0グッド

0クリップ

投稿2017/12/09 06:48

###下に書くコードの理解ができません。

###私はこのコードの表示される値が1だと思っていましたが、答えが5となるそうです。
それがよくわかりません。
###該当のソースコード
public class Test{
public static void main(String[] args){
/問1/
int[] a = new int[]{1,2,3};//①
int[] b = a; //②
b[0] = 5; //③
System.out.println(a[0]);

###考えたこととしては②は
int[] b = new int[]{1,2,3};//

③のb[0] = 5はある意味a[0] = 5ということなのかな?と

また追加で申し訳ないのですが、
public class Test2{
public static void main(String[] args){
int[] a = new int[]{1,2,3};
System.out.println(a);
}
}

の答えが私はてっきり1、2、3と表示されると思っていたのですが、違うのでしょうか???

よろしく御願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

図

投稿2017/12/09 07:27

karamarimo

総合スコア2551

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

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

KSwordOfHaste

2017/12/09 08:26 編集

>質問者さん、karamarimoさん この素晴らしい回答とは別の解答を付けたくなかったので、すみませんがコメント欄にお邪魔します。 > 私はてっきり1、2、3と表示されると思っていたのですが、違うのでしょうか??? 残念ながら違います。int[]はObject型と見做され、System.out.println(Object o)というメソッドが呼ばれるのですが、このメソッドはo.toString()で文字列に変換した結果を印字します。配列の場合toStringで文字列に変換すると"[I@77afea7d"=>「整数の配列で、内部アドレスが0x77afea7d」といった暗号のようなものにしかなりません。もう少しましな出力にするためには面倒でも自分で次のようなコードを書いた方がよいでしょう。 for (int i = 0; i < a.length; i++) System.out.print(" " + a[i]); System.out.println(); なお、ライブラリーの機能を知るにつれjava.util.Arrays.toString(int[] intArray)のような便利なメソッドを見つけることもたまにあります。そういうものを見つけられるようになったらより単純に書くことができると思いますが、膨大なライブラリーから望むものを一々探すのも大変なので、自分で書けそうな論理は頑張って書く方が勉強になると思います。
guest

0

追加の方に関して

System.out.printlnは、Stringやchar配列以外のnullでないオブジェクトが渡された場合、
そのオブジェクトのtoStringの結果を出力するものです。

大抵のクラスは自分自身の情報を簡潔に記述するようtoStringをオーバーライドしています。
しかし配列はそのようなオーバーライドをしていないため、デフォルトで定められた

クラス名@ハッシュコード

という形式の文字列を返します。

配列の中身を表示したいのなら、Arrays.toStringによって文字列化する必要があります。

java

1System.out.println(Arrays.toString(a)); // "[1, 2, 3]"と表示

投稿2017/12/09 08:28

swordone

総合スコア20651

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問