参照型 - Java入門

751 views

Published on

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
751
On SlideShare
0
From Embeds
0
Number of Embeds
115
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

参照型 - Java入門

  1. 1. 参照型の変数 java 入門 2013/09/16 再配布、再利用はご自由に 13年9月16日月曜日
  2. 2. 改版履歴 •2013/09/16 配列に関する説明を追加 13年9月16日月曜日
  3. 3. 復習:変数とは •データ(値)を一定期間、保存し必要 なときに利用できる記憶エリアで値は 一つしか保存できない。変数には型と 名前がある。変数の値は変更すること ができる。 13年9月16日月曜日
  4. 4. Javaの変数 •2つの型がある 1. プリミティブ型 (今回は説明なし) 2. 参照型 13年9月16日月曜日
  5. 5. 参照型の種類 •クラス型 •インタフェース型 •配列型 13年9月16日月曜日
  6. 6. クラス型 (文字列) 13年9月16日月曜日
  7. 7. 参照って? 参照値 String s = new String( hello world ); 変数 s hello world 文字列オブジェクト 変数「s」には、 hello world オブジェクトを特定する値(参照値)が 格納されている 13年9月16日月曜日
  8. 8. なんでこんな めんどうなことを? 13年9月16日月曜日
  9. 9. 変数に保存出来る値は 一つだけ! char c = h h 変数には文字一個は保存できる 変数 c String s = hello world hello world 変数に2個以上の文字は入らない!!! 変数 s 13年9月16日月曜日
  10. 10. 代わりに文字列を 指す値(参照値)を 変数に格納 13年9月16日月曜日
  11. 11. 参照値の取得 • Javaでは参照値を操作することはない ため、プログラマが参照値そのものの値 を知ることはできなくなっていますが、 Systemクラスの identityHashCode() メソッドを使えば、オブジェクトの内部 アドレス(参照値)を整数値に変換した 値を取得できます。 13年9月16日月曜日
  12. 12. 参照値を使って操作 参照値 String s = hello world ; System.out.println( s is + s); 変数 s hello world 文字列オブジェクト 13年9月16日月曜日
  13. 13. 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 true s1 == s3 is false s1.equals(s3) is true なぜ false? 13年9月16日月曜日
  14. 14. デバッガーで確認 14 idの値に注目! 13年9月16日月曜日
  15. 15. 参照値 変数  s1 hello java 文字列オブジェクト(id:17) 参照値 変数  s2 hello java 文字列オブジェクト(id:23) 参照値 変数  s3 s1 == s3 参照値 参照値== 変数  s1 変数  s3 参照値を比較している 文字列は同じでも 違うオブジェクト 注:idは実際の参照値とは異なるが、説明を簡単にするために用いている 13年9月16日月曜日
  16. 16. 文字列の比較は == じゃない 13年9月16日月曜日
  17. 17. equalsメソッドを使う String s1 = new String( foo ); String s3 = new String( bar ); boolean val = s1.equals(s3) s1がs3と同じ文字列かを判定 13年9月16日月曜日
  18. 18. 配列型 13年9月16日月曜日
  19. 19. 配列の宣言 値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日月曜日
  20. 20. 参考資料 • 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日月曜日

×