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

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

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

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

Q&A

解決済

1回答

1880閲覧

Classのフィールドの初期化

Nippun

総合スコア1147

Java

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

0グッド

0クリップ

投稿2020/08/22 03:15

Classのフィールドの初期化際にコンストラクタとフィールドにそのまま初期化するのでは何が違うのですか?
コンストラクタは引数がない時のものとします。

java

1Class hello { 2 private int f = 0; 3}

java

1Class hello { 2 private int f; 3 4 hello() { 5 f = 0; 6 } 7}

2つの違いはなんですか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

実行されるタイミングが違います。

“コンストラクタ”と初期化、本当に理解できてる? (1/3)

1. インスタンス変数は、デフォルトの値で初期化(数値型は0、boolean型はfalse、char型は'\u0000'、オブジェクト参照はnull)
2. スーパークラスのコンストラクタを呼び出す
3. インスタンス変数に対して明示的に指定された初期化子と、初期化ブロックで、初期化
4. コンストラクタで指定された処理で初期化

つまりコンストラクタが呼ばれた時点で初期化子による初期化は終わっているので、コンストラクタではあるフィールドの値を見て別のフィールドを初期化することができます。
またコンストラクタでは自由にメソッドを呼ぶことができますが、初期化子では限定されています。
より詳細な解説が欲しい場合は次を読んでください。

Javaのイニシャライザ (initializer)を使うと、コンストラクタ以外でも初期化ができるらしい

投稿2020/08/22 07:44

編集2020/08/22 07:58
Zuishin

総合スコア28662

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問