1 / 18

アルゴリズムとプログラミング (Algorithms and Programming)

アルゴリズムとプログラミング (Algorithms and Programming). String クラスの機能と使い方 参照型変数. 第12回:補足的事項. 講義資料等:. http://www.pe.titech.ac.jp/~watanabe/lecture/ap/index-j.html. メソッドのオーバーライド. 復習. オーバーライド (override). 親クラスと子クラスのそれぞれに、 メソッド名 、 引数 、 戻り値 が 全て同一 で内容が異なるメソッドを定義すること. 混同注意!. オーバーロード (overload).

nevina
Download Presentation

アルゴリズムとプログラミング (Algorithms and Programming)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. アルゴリズムとプログラミング(Algorithms and Programming) • Stringクラスの機能と使い方 • 参照型変数 第12回:補足的事項 講義資料等: http://www.pe.titech.ac.jp/~watanabe/lecture/ap/index-j.html

  2. メソッドのオーバーライド 復習 オーバーライド(override) 親クラスと子クラスのそれぞれに、 メソッド名、引数、戻り値が全て同一で内容が異なるメソッドを定義すること 混同注意! オーバーロード (overload) ひとつのクラス内に、メソッド名が同じで、引数の型及び数が異なるメソッドを定義すること

  3. メソッドのシグニチャー 復習 メソッドを区別するための メソッド名、引数の型、戻り値 をシグニチャー(signature)という メソッドの書式 戻り値 メソッド名(型 変数名1, 型 変数名2,...)

  4. クラスの配列 基本型(int型)の配列宣言の例 int a[ ] ; a = new int[10] ; ユーザが定義したクラスでも配列を作ることが可能 例)Pointクラスの参照型変数を3個格納する配列の宣言 Pointクラスが既に 定義されているものとする Point p[ ] ; p = new Point[3] ; 3個の参照型変数を 格納する pはオブジェクト参照型変数 の配列である

  5. pにオブジェクト参照を代入する 例) p[0] = new Point(0.0, 0.0); p[1] = new Point(0.0, 1.0); p[2] = new Point(2.0, 3.0); p[0]~p[2]の3つのオブジェクト参照 変数に、それぞれ生成したインスタ ンスの参照を代入した

  6. Stringクラス システムに組み込まれている Stringオブジェクトの宣言と初期化 String s = "abcdefg"; String s = new String ( "Hello, Java!" ); 文字列リテラルはStringクラスのインスタンス

  7. Stringクラスの各種メソッドの例 コンストラクタ String s = new String ( "Hello, Java!" ); 文字列の長さを得る s.length(); i番目の文字を得る s.charAt ( i ); (先頭文字は i=0) 文字列の一部を置換する s.replace("Java","ジャバ"); 数値を文字列に変換する int i = 1234; s = String.valueOf( i ); 文字列を数値に変換する int i = Integer.valueOf( "1234" ); この他、多数のメソッドが用意されている

  8. Stringクラスの演算子 String s = new String("abc"); s = s + "def"; +演算子は、文字列の結合を意味する s = 先頭メモリ番地A a b c d e f a b c a b c d e f 元のインスタンスとは別のメモリ番地に新たなインスタンスが生成される インスタンスの内容を変更するのではなく、新たなインスタンスを生成し、古いのを捨てている s = 先頭メモリ番地B

  9. Stringの配列 複数の文字列を格納する際に 使用する 例1) String a[] ; a = new String[3]; a[0] = "abcd"; a[1] = "efgh"; a[2] = "ijkl";

  10. 例2)main()メソッドの引数文字列 public static void main(String[] args) { • args はStringクラスの参照型変数を格納する配列 • 確保される配列の個数は、プログラムを実行する際に与えられる引数の個数に等しい 例) java Sample 1.0 abcd "1.0" →args[0] "abcd"→args[1] args.length は 2 プログラム名 引数1 引数2

  11. Stringクラスの特徴 • Stringオブジェクトは読み出しのみ可能、変更不可能 • 演算やメソッドにより変更しているように見えても、実は元のインスタンスを捨てて、新しいインスタンスに差し替えている • 基本型ではないがシステムレベルでサポートされており、比較的軽い 変更可能な文字列を提供するのは StringBufferクラス

  12. 参照型変数 使用法:配列やクラスのインスタンスの参照を格納する ? 参照型変数に格納されるデータは?:   インスタンスの格納されているメモリ番地(アドレス)   が格納されており、中身自身が格納されているわけ   ではない 注意点:インスタンスの中身(内容)の比較を行う際に 参照型変数同士の比較をしても意味がない。 では、どうすればよいか?

  13. 参照型変数の比較 class X { int x; X(int a){x=a;} } X o1 = new X( 2 ); X o2 = new X( 2 ); o1とo2は全く別のインスタンス o1とo2の中身の値は全く同じ o1とo2の中身の比較を行う文?

  14. o1とo2の中身の比較を行う文? 理由: o1とo2は別々のインスタンスであり、格納されるメモリ番地は異なるから。 下記の論理式は真か、偽か? o1 == o2 答え: 偽(false) 内容の比較を行うメソッド o1.equals(o2) == true equals()メソッドは、Objectクラスで定義され継承されている

  15. s1 s2 s1 s2 a b c a b c a b c オブジェクトの複製 String s1 = "abc"; String s2 ; 問題: s1とは別のインスタンスとして、s2にs1の内容のコピーを作りたい。どう書けばよいか? 1. s2 = s1; s2はs1と同じインスタンスを指し示すだけで中身はコピーされない 2. s2 = new String(s1); コンストラクタで別インスタンスを生成し、s1の内容で初期化

  16. まとめ • Stringクラスの特徴と使い方 • 参照型変数に関する注意事項

  17. 今後の展望 • 本講義でJavaの基本文法はほぼカバー • カバーしきれなかった点 • インターフェース • 例外処理 • マルチスレッド • 各種クラスライブラリの活用 • ラッパークラス • Stringクラス • ファイル入出力用クラス..等 さらに高度なクラスライブラリへ

  18. 今後の展望 • コンピュータ言語の文法自体は底が浅い • しかし、アルゴリズムは奥が深い • 本講義で身に着けたJava言語を武器に、アルゴリズムの勉強を自ら進めることが可能 • また、世に出ている優れたプログラムを読んで、基本構造の設計手法やコーディングテクニック等を学ぶことで、実用的なプログラミング能力を身につけることもできる IT技術を自在に操るスキルと洞察力

More Related