Upload
kanazawa-technical-college
View
438
Download
0
Embed Size (px)
Citation preview
参照型の変数java 入門
2013/09/16再配布、再利用はご自由に
13年9月16日月曜日
改版履歴
• 2013/09/16配列に関する説明を追加
13年9月16日月曜日
復習:変数とは
•データ(値)を一定期間、保存し必要なときに利用できる記憶エリアで値は一つしか保存できない。変数には型と名前がある。変数の値は変更することができる。
13年9月16日月曜日
Javaの変数
•2つの型がある
1.プリミティブ型 (今回は説明なし)
2.参照型
13年9月16日月曜日
参照型の種類
•クラス型
•インタフェース型
•配列型
13年9月16日月曜日
クラス型(文字列)
13年9月16日月曜日
参照って?
参照値
String s = new String(”hello world”);
変数 s
hello world文字列オブジェクト
変数「s」には、”hello world”オブジェクトを特定する値(参照値)が
格納されている
13年9月16日月曜日
なんでこんなめんどうなことを?
13年9月16日月曜日
変数に保存出来る値は一つだけ!
char c = ’h’ ‘h’変数には文字一個は保存できる
変数 c
String s = ”hello world”
”hello world”変数に2個以上の文字は入らない!!!
変数 s
13年9月16日月曜日
代わりに文字列を指す値(参照値)を変数に格納
13年9月16日月曜日
参照値の取得•Javaでは参照値を操作することはないため、プログラマが参照値そのものの値を知ることはできなくなっていますが、Systemクラスの identityHashCode() メソッドを使えば、オブジェクトの内部アドレス(参照値)を整数値に変換した値を取得できます。
13年9月16日月曜日
参照値を使って操作
参照値
String s = ”hello world”;System.out.println(” s is ” + s);
変数 s
hello world文字列オブジェクト
13年9月16日月曜日
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日月曜日
デバッガーで確認
14
idの値に注目!
13年9月16日月曜日
参照値変数 s1
hello java文字列オブジェクト(id:17)
参照値変数 s2
hello java文字列オブジェクト(id:23)
参照値変数 s3
s1 == s3 参照値 参照値 == 変数 s1 変数 s3
参照値を比較している
≠ 文字列は同じでも違うオブジェクト
注:idは実際の参照値とは異なるが、説明を簡単にするために用いている
13年9月16日月曜日
文字列の比較は == じゃない
13年9月16日月曜日
equalsメソッドを使う
String s1 = new String(”foo”);String s3 = new String(”bar”);boolean val = s1.equals(s3)
s1がs3と同じ文字列かを判定
13年9月16日月曜日
配列型
13年9月16日月曜日
配列の宣言
値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日月曜日
参考資料• http://www.okapiproject.com/java/java_ref/foundation/manual_06.htm#a2_1
• http://www.y-adagio.com/public/standards/tr_javalang/4.doc.htm#9317
• http://www.nomachetejuggling.com/2008/06/04/getting-a-java-objects-reference-id/
13年9月16日月曜日