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):



  1. 整数を格納するためにメモリを割り当てます。「int」と入力します。
  2. 変数「x」に名前を付けます。

-変数も 参照 オブジェクト(オブジェクトを指す)
クラスを取得する2つの方法

  1. 他の誰かが定義したものを使用してください。 Javaには、組み込みの事前定義されたクラスがたくさんあります(Java標準ライブラリ)
  2. 独自に定義する

このレッスンでは、主に最初の方法(他の誰かが定義した方法)について説明します。

String myString //(String: class built into Java)

myStringを宣言すると、文字列オブジェクトを作成する代わりに、文字列オブジェクトを指すことができる参照変数が格納されます。
myString□<-- variable (not object)

myString = new String()

String():コンストラクターの署名
new String():コンストラクター呼び出し
2つのステップ:

  1. 「newString()」はコンストラクタです。この場合、まったく新しい文字列オブジェクトを作成します。これは、文字を含まない空の文字列です。
  2. 割り当て「=」により、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文字列コンストラクタ:

  1. new String()は空の文字列を作成します
  2. 「うわー!」 -> Javaは、これを特別な文字列コンストラクターと見なします
  3. 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オブジェクトで定義されています

  1. BufferedReaderをどのように構築しますか? InputStreamReaderを使用
  2. InputStreamReaderをどのように構築しますか? InputStreamを使用
  3. 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」と呼ばれるメソッドで始まります