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

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

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

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

Q&A

解決済

3回答

1906閲覧

クラスの宣言について質問です。

yukiharu23

総合スコア12

Java

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

0グッド

0クリップ

投稿2016/09/13 10:59

編集2016/09/21 09:27

フィールドについての課題で行き詰ってましてヒントをいただけたらと思い質問いたしました。

以下のメンバ変数が宣言のみ(初期化されない)の場合は何に初期化されるでしょうか。
変数の値を表示して確認してみましょう。

・int
・double
・boolean
・int[]
・自分で作成したクラスA

という課題をいただきまして。

java

1public class FieldB { 2 static int a; 3 static double b; 4 static boolean c; 5 static int[] d; 6 static ClassA abc; 7 8 9 10 public static void main(String[] args){ 11 System.out.println(a); 12 System.out.println(b); 13 System.out.println(c); 14 System.out.println(d); 15 System.out.println(abc); 16 } 17 18}

とあとは、何も記載されてないClassAを作成しましたが。

問題である「フィールドが宣言のみ(初期化されない)の」がありません。
宣言してください。

という解答いただきました。
ClassAの宣言が違うのでしょうか?
ご教示お願いいたします。

追記

java

1public class FieldB { 2 static int a; 3 static double b; 4 static boolean c; 5 static int[] d; 6 FieldB ClassA = new FieldB(); 7 static ClassA abc; 8 9 10 11 public static void main(String[] args){ 12 System.out.println(a); 13 System.out.println(b); 14 System.out.println(c); 15 System.out.println(d); 16 System.out.println(abc); 17 18 } 19 20} 21

こちらのソースコードでおかしな点がありましたら教えてください。

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

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

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

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

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

guest

回答3

0

ベストアンサー

うーん、解答した人の気持ちはわかりませんが、課題の文章では「メンバ変数が」となっているのに、答案では「クラス変数」を宣言しているからかもしれません。 static をとって、以下のように new FieldB するようにしてみてはどうでしょう?

java

1public class FieldB { 2 int a; 3 double b; 4 boolean c; 5 int[] d; 6 ClassA abc; 7 8 public static void main(String[] args){ 9 FieldB fB = new FieldB(); 10 fB.printVariables(); 11 } 12 13 pubic void printVariables() { 14 System.out.println(a); 15 System.out.println(b); 16 System.out.println(c); 17 System.out.println(d); 18 System.out.println(abc); 19 20 } 21}

変数宣言から static がなくなっているのがみそです。static がついていると、メンバ変数ではなく、クラス変数になります。また、メンバ変数は、インスタンスに含まれるのものですからインスタンスを作らないと実体が得られません。ですので、 new FieldB() を実行する必要があります。

投稿2016/09/13 11:15

編集2016/09/21 14:50
mit0223

総合スコア3401

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

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

yukiharu23

2016/09/21 09:21

FieldB ClassA = new FieldB(); ということしょうか?
guest

0

大学か企業かわかりませんが「課題」であるならば言語仕様の問題のはず。プログラムを書いて動作を検証しても限界があります。コンパイル時のエラーメッセージを得ることができる程度が関の山です。

「言語仕様上において定義されていないもの」の動作はコンパイラと実行環境に依存します(再現性がなく、調査する意味がない)。

投稿2016/09/22 10:22

HogeAnimalLover

総合スコア4830

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

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

0

問題である「フィールドが宣言のみ(初期化されない)の」がありません。
宣言してください。

正直、意味がよく分かりませんが、そこをあえて出題者の題意をエスパーすると、
未初期化の値を知るのが題意なので、クラスをnewさせたいのではと推測します。

java

1abc = new ClassA(); 2System.out.println(abc);

上記をFieldBクラスのmainメソッドに追加すると、
「ClassA@XXXXXX」といった値が表示されます。

投稿2016/09/13 11:44

LLman

総合スコア5592

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

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

swordone

2016/09/13 13:16

「初期化してない」と言っているのに初期化したらダメでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問