質問するログイン新規登録

回答編集履歴

2

結論部分を強調

2016/05/02 04:34

投稿

AmaiSaeta
AmaiSaeta

スコア166

answer CHANGED
@@ -35,8 +35,8 @@
35
35
  1つ目のプログラムでは、最終的に別の値が出力されるのに対し、2つ目のプログラムでは同じ値が出力されています。これは何故でしょう。
36
36
  そう、質問者をはじめ、プログラミングに親しまれている皆様は直ぐお分かりでしょうが、これは、**整数のような単純な物は値で、オブジェクトのような複雑な物は参照で扱う**という決まりがあるからです。
37
37
 
38
- 新人さんは、この値型と参照型の違い、どういう物が値型になり、参照型になるのはどれかという事が、明確に理解できていないのでは無いでしょうか。
38
+ **新人さんは、この値型と参照型の違い、どういう物が値型になり、参照型になるのはどれかという事が、明確に理解できていないのでは無いでしょうか。**
39
- 先ずは、この違いを教えてはどうでしょうか。
39
+ **先ずは、この違いを教えてはどうでしょうか。**
40
40
 
41
41
  値型と参照型の違いが理解できれば、0とnullの違いも理解できるのではないかと思います。
42
42
  0は0という数値ですが、nullは「何も参照してない」という事実を表します。変数に格納される「何か」という点では同じですが、別の概念を表しているのです。

1

若干の文言変更(Javaを「最近」と呼ぶのは違うような気がしたので)

2016/05/02 04:34

投稿

AmaiSaeta
AmaiSaeta

スコア166

answer CHANGED
@@ -42,6 +42,6 @@
42
42
  0は0という数値ですが、nullは「何も参照してない」という事実を表します。変数に格納される「何か」という点では同じですが、別の概念を表しているのです。
43
43
 
44
44
  ---
45
- なお、「値の種類に依って値型か参照型か決まる」というのは、Javaを初め最近のオブジェクト指向言語では主流ですが、そうでない言語も存在します。
45
+ なお、「値の種類に依って値型か参照型か決まる」というのは、Javaを初めオブジェクト指向言語では主流ですが、そうでない言語も存在します。
46
46
  例えばC#は、ユーザー定義型が値型か参照型か、プログラマが決める事が出来ます。
47
47
  C++やCだと、基本的に全て値型ですね。特別な修飾を型名に行った場合に、参照型を作る事が出来ます(この説明は、厳密には間違っているのですが ;-) )