回答編集履歴
2
結論部分を強調
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を「最近」と呼ぶのは違うような気がしたので)
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だと、基本的に全て値型ですね。特別な修飾を型名に行った場合に、参照型を作る事が出来ます(この説明は、厳密には間違っているのですが ;-) )
|