CS61B 2014年春の講義ノート(2オブジェクトの使用)
Cs61b Spring 2014 Lecture Notes
これは、2014年春のCS61Bの最初のレッスンで整理したメモです。最初にクラスの内容を記録して、後で確認します。みなさん、楽しい時間をお過ごしください!
教室のコンテンツの著作権はバークレーCS61Bが所有しています
クラスリンク:https://www.bilibili.com/video/BV1vt411W7yu?p = 1
オブジェクト指向プログラミング
-オブジェクト:データのリポジトリ
-クラス:オブジェクトのタイプ
-メソッド:オブジェクトを操作するプロシージャまたは関数
-継承:クラスは、より一般的なクラスからプロパティを継承する場合があります
例:ShoppingListは、一連のアイテムをストローするプロパティをListから継承します
-ポリモーフィズム:クラスに異なる実装が必要な場合でも、1つのメソッドが複数のクラスで機能します
例:すべての種類のリストの「addItem」メソッド。ただし、ShoppingListへのアイテムの追加はShoppingCartとは異なります。
-Objected-Oriented:各オブジェクトは独自のクラスとメソッドを知っています
例:各ShoppingListとShoppingCartは、どの実装がそれに適用されるかを知っています
Java
-変数:変数とそのタイプを宣言する必要があります
int x x = 1
2つのことをします(int x):
- 整数を格納するためにメモリを割り当てます。「int」と入力します。
- 変数「x」に名前を付けます。
-変数も 参照 オブジェクト(オブジェクトを指す)
クラスを取得する2つの方法
- 他の誰かが定義したものを使用してください。 Javaには、組み込みの事前定義されたクラスがたくさんあります(Java標準ライブラリ)
- 独自に定義する
このレッスンでは、主に最初の方法(他の誰かが定義した方法)について説明します。
String myString //(String: class built into Java)
myStringを宣言すると、文字列オブジェクトを作成する代わりに、文字列オブジェクトを指すことができる参照変数が格納されます。
myString□<-- variable (not object)
myString = new String()
String():コンストラクターの署名
new String():コンストラクター呼び出し
2つのステップ:
- 「newString()」はコンストラクタです。この場合、まったく新しい文字列オブジェクトを作成します。これは、文字を含まない空の文字列です。
- 割り当て「=」により、myStringはオブジェクトを参照します
myString□–>□(文字列オブジェクト)
新しいString()を直接書き込むこともできますが、それを指す変数がないため、Javaはそれを破棄します。
Javaプログラムは、実行する前にコンパイルする必要があります
Javaプログラム(.java)-javac–> .classファイル--java(JVM)–>回答
オブジェクトとコンストラクター
String s // step 1: declare a String variable s = new String() // step 2,3: construct empty Sring assign it to s
s□–>□
String s = new String() // steps 1,2,3 combined s = 'Yow!'
String s2 = s // now s & s2 reference (point to) same object
s2 = new String(s) // now referencing 2 different identical objects // 1. look where s points // 2. Follows reference to String object // 3. Reads String // 4. Constructs new String with copy of characters // 5. Makes s2 reference new String
すべてのnullポインタは何も指しません
3文字列コンストラクタ:
- new String()は空の文字列を作成します
- 「うわー!」 -> Javaは、これを特別な文字列コンストラクターと見なします
- new String(s)->パラメータsを取り、sが参照するオブジェクトのコピーを作成します
コンストラクターは、「引用符で囲まれたもの」を除いて、常にクラスと同じ名前になります。
メソッド
s2 = s.toUppercase()
String s3 = s2.concat('!!')
「!!」ここにもconcatが使用するコンストラクターがありますが、「!!」への変数ポイントはなく、最終的にガベージコレクションになります
-オブジェクト「Yow!」変わらなかった。
-文字列は不変です(変更できません)。それらの内容は決して変わりません
-ほとんどのオブジェクトは内部フィールドで変更できますが、文字列は特殊なケースです
I / Oクラスとオブジェクト
-のオブジェクト システム ユーザーと対話するためのクラス(Java標準ライブラリー内)
-System.outは、画面に出力するPrintStreamオブジェクトです。
System.out□–>□(PrintStreamオブジェクト)
-System.inは、キーボードから読み取るInputStreamオブジェクトです。
(outはSystemクラスの変数です。他のクラスでout変数を表す場合は、System.outと記述する必要があります。
-readLine(メソッド)はBufferedReaderオブジェクトで定義されています
- BufferedReaderをどのように構築しますか? InputStreamReaderを使用
- InputStreamReaderをどのように構築しますか? InputStreamを使用
- InputStreamをどのように構築しますか? System.inは1つです
オンラインJavaライブラリAPIを介してこれを理解する– java.io
InputStreamオブジェクト:生データを読み取ります
InputStreamReader:生データを文字(2バイト長)に構成します
BufferedReader:テキストの行全体に構成します
オブジェクト指向では、コードを分解可能な部分に書き込むことをお勧めします。そのため、1つの部分を取得してから、別の部分に変更できます。
import java.io.* class SimpleIO { public static void main(String[] arg)throws Exception { BufferedReader keybd = new BufferedReader(new InputStreamReader(System.in)) System.out.println(keybd.readLine()) } }
java.lang以外のJavaライブラリを使用するには、それらを「インポート」します。
Javaプログラムは常に「main」と呼ばれるメソッドで始まります