20
参照型の変数 java 入門 2013/09/16 再配布、再利用はご自由に 13916日月曜日

参照型 - Java入門

Embed Size (px)

Citation preview

Page 1: 参照型 - Java入門

参照型の変数java 入門

2013/09/16再配布、再利用はご自由に

13年9月16日月曜日

Page 2: 参照型 - Java入門

改版履歴

• 2013/09/16配列に関する説明を追加

13年9月16日月曜日

Page 3: 参照型 - Java入門

復習:変数とは

•データ(値)を一定期間、保存し必要なときに利用できる記憶エリアで値は一つしか保存できない。変数には型と名前がある。変数の値は変更することができる。

13年9月16日月曜日

Page 4: 参照型 - Java入門

Javaの変数

•2つの型がある

1.プリミティブ型 (今回は説明なし)

2.参照型

13年9月16日月曜日

Page 5: 参照型 - Java入門

参照型の種類

•クラス型

•インタフェース型

•配列型

13年9月16日月曜日

Page 6: 参照型 - Java入門

クラス型(文字列)

13年9月16日月曜日

Page 7: 参照型 - Java入門

参照って?

参照値

String s = new String(”hello world”);

変数 s

hello world文字列オブジェクト

変数「s」には、”hello world”オブジェクトを特定する値(参照値)が

格納されている

13年9月16日月曜日

Page 8: 参照型 - Java入門

なんでこんなめんどうなことを?

13年9月16日月曜日

Page 9: 参照型 - Java入門

変数に保存出来る値は一つだけ!

char c = ’h’ ‘h’変数には文字一個は保存できる

変数 c

String s = ”hello world”

”hello world”変数に2個以上の文字は入らない!!!

変数 s

13年9月16日月曜日

Page 10: 参照型 - Java入門

代わりに文字列を指す値(参照値)を変数に格納

13年9月16日月曜日

Page 11: 参照型 - Java入門

参照値の取得•Javaでは参照値を操作することはないため、プログラマが参照値そのものの値を知ることはできなくなっていますが、Systemクラスの identityHashCode() メソッドを使えば、オブジェクトの内部アドレス(参照値)を整数値に変換した値を取得できます。

13年9月16日月曜日

Page 12: 参照型 - Java入門

参照値を使って操作

参照値

String s = ”hello world”;System.out.println(” s is ” + s);

変数 s

hello world文字列オブジェクト

13年9月16日月曜日

Page 13: 参照型 - Java入門

public class TypeSample { public static void main(String[] args) { String s1 = new String("hello java"); String s2 = s1; String s3 = new String("hello java"); System.out.println("s1 == s2 is " + ( s1 == s2 )); System.out.println("s1 == s3 is " + ( s1 == s3 )); System.out.println("s1.equals(s3) is " + s1.equals(s3)); }}

実行結果 s1 == s2 is trues1 == s3 is falses1.equals(s3) is true

なぜ false?

13年9月16日月曜日

Page 14: 参照型 - Java入門

デバッガーで確認

14

idの値に注目!

13年9月16日月曜日

Page 15: 参照型 - Java入門

参照値変数  s1

hello java文字列オブジェクト(id:17)

参照値変数  s2

hello java文字列オブジェクト(id:23)

参照値変数  s3

s1 == s3 参照値 参照値 == 変数  s1 変数  s3

参照値を比較している

≠ 文字列は同じでも違うオブジェクト

注:idは実際の参照値とは異なるが、説明を簡単にするために用いている

13年9月16日月曜日

Page 16: 参照型 - Java入門

文字列の比較は == じゃない

13年9月16日月曜日

Page 17: 参照型 - Java入門

equalsメソッドを使う

String s1 = new String(”foo”);String s3 = new String(”bar”);boolean val = s1.equals(s3)

s1がs3と同じ文字列かを判定

13年9月16日月曜日

Page 18: 参照型 - Java入門

配列型

13年9月16日月曜日

Page 19: 参照型 - Java入門

配列の宣言

値1

値2

値3

値4

値5

配列の実体

参照先

変数 a

// 1)配列の変数a を宣言int[] a;

// 2) 配列の実体を作って// 参照値をaに代入a = new int[5]

a[0]

a[1]

a[2]

a[3]

a[4]

13年9月16日月曜日