とりとりとりぴ

ちょっと残しておきたいことをまとめています。

読書ログ: 新Java教科書

Javaの復習、TAの予習用に読んでみた。

www.amazon.co.jp

1章

Javaの概要。以下、確認したい単語

バイトコード コンピュータの機種やOSに依存しないコードのこと。Javaではコンパイルした中間コードをさす。

Java Virtual Machine (JVM, JAVA仮想マシン) バイトコードを実行するための仮想的なソフトウェア。コンパイルでライブラリを読まない代わりに逐次実行するために環境を用意してあげる必要がある。多分EclipseとかIntelliJといったIDEはライブラリもいい感じにまとめてくれたりもしてくれるんだと予想。

JRE Java Runtime Environment Java実行環境

JDK Java Development kit Java開発環境

J2SE Java2 Starndard Edition。アプリケーションやアプレットの作成に使う。

Java servret, JSP (Java Server Pages) Webサーバーのサーバ用途として用いられる

J2ME Java2 Micro Edition 携帯電話などの組み込み機器向けアプリケーション

Java Card API ICカード上で動くソフトウェアを作成する用

2章

Hello worldしてた

3章

  • long型の宣言 12345678L
    • doubleとfloatは後ろにそれぞれdとfをつける
  • 16進数宣言 0x12
  • 8進数宣言 0123

浮動小数点数型はコンピューター内で2進数で演算が行われるため、10進数の数は2進数に変換される。その時に若干の誤差が生じる。これを丸め誤差という。

  • ASCII ... 127の値で文字を表す。英語・数字・記号
  • Unicode ... 2バイトでキーボードの文字がだいたい入ってるイメージ。ギリシャ文字Фとか、åとか。

参照型 ... 記憶領域が自動的に確保されず、プログラム内で明示的に記憶領域を確保する必要がある

int[] vec; // 配列の宣言
vec = new int[3]; // メモリの確保

4章

演算子について述べていた。

5章

ifとかforとか。拡張for文ってfor-each文ともいうんだね。ごっちゃになっていた。

6章

オブジェクト オブジェクト指向のオブジェクトは「機能的に一つにまとめたこと」で、現実の概念や具体的なものをプログラムの中で表現したもの

カプセル化 オブジェクトの内部の詳細を外部から隠すこと。

隠した時に、オブジェクトにアクセスできるあらかじめ決められているメソッドをインターフェースという

クラス オブジェクトの元となるもの。設計図に相当する。

インスタンス クラスに従って生成されたもの、実体となるものを指す

継承 元となるクラスがあれば、それをextendして定義することができる。元となる定義を流用して差分に相当する部分だけを改めて定義する方法。元となるクラスをスーパークラス、新しく作られるクラスをサブクラスという。 ※ 他の呼び方としては、既定クラス(base class)-派生クラス(derive class)、親クラス-子クラスがある。

抽象クラス メソッド名だけ定義された状態のクラスで、継承したクラスは必ず中身を書いてoverrideして中身を定義しないといけない。
ref: 抽象クラスとは - 抽象クラスとインターフェース - Java入門

メンバ変数 クラス定義をしている"{"と"}"の中に記述され、そしてメソッドの外に記述されている変数のこと

class Television{
  int channelNo; // メンバ変数

  void setChannel(int newChannelNo){
    channelNo = newChannelNo;
  }

  void dispChannel(){
    System.out.println("現在のチャンネルは " + channelNo + " です");
  }
}

ref: メンバ変数とは - メンバ変数とメンバメソッド - Java入門

7章

オーバーロード クラス内で同じメソッド名のメソッドを複数作ること。意外と使われているイメージ。

コンストラク オブジェクトが生成された時に自動的に呼び出されるメソッド。このコンストラクタを利用してオブジェクトを初期化できる。「クラス名と同じ名前で、戻り値のないメソッド」のこと。

public class Point {
  int x, y;
  Point() {x = y = 0;}
}

...
Point pt1 = new Point(); // コンストラクタが呼び出され、x, y = 0で初期化される。

// これはできない
pt1.Point();
Point pt1 = new Point(10, 20);
Point pt2 = pt1;
Point pt3 = new Point(10, 20);

ファイナライザ オブジェクトが破棄される時に、finalize()メソッドが自動的に呼び出される。オブジェクトが削除される前になんらかの後処理が必要な場合はfinalize()メソッドを定義しておく。

予約語系 * static ... インスタンスを生成しなくても呼び出せる。クラスをインスタンス化しなくてもアクセスできる。 * final ... 変数の値が変更にならない。final static で実質的に定数を宣言する。 * public ... 全てのクラスからアクセス可 * protected ... 同じパッケージのクラスとサブクラスからアクセス可 * <アクセス制御なし> ... 同じパッケージのクラスからアクセス可 * private ... そのクラスの内部からだけアクセス可

8章

継承について。 superクラス呼び出すときはsuper()使ってコンストラクタを呼び出したり、super.getText()して呼び出す。

クラスの継承の末端にしたい場合はclassの前にfinalをつける final class foo{}

抽象クラスだけを持ち、メンバ変数は一切持たないクラスをインターフェースとして宣言することができる。 修飾子 interface インターフェース名{...}で宣言する。クラスの宣言と似ているがインスタンス化することができない。ただし継承はできる。インターフェースをクラスに渡す場合はimplementsを使う。

class MyShape implements Movable, Erasable{ ... }

extendsとimplementsの違いがよくわかっていなかったのがクリアになった。 extendsがクラスの継承でimplementsがインターフェースを継承する。implementsは多重継承が可能

インターフェイスについて

9章

例外処理について。 エラーハンドラ tryブロックに続けてcatchブロックでエラーを処理するコードをエラーを処理するコードを記述する。エラーを処理するコード。

10章

stringクラスについて色々。 データ構造とかもある。SetはHashSet意外にもSortedSetやTreeSet、SortedMap, TreeMapがある。

基本型に格納できないものはラッパークラスを使う。Java5.0からラッパークラスに自動的に変換するオートボクシングを導入されたため、ラッパークラスの利用には注意する。

11章

入出力について

12、13章

アプリケーションについて

Other:

以前書いたGolangオブジェクト指向なのか気になったのでちょっと調べた。オブジェクト指向的言語の条件は一部満たさないものの、記事を書いている多くの人はYesと回答していることがわかった。
Goはオブジェクト指向言語だろうか? | POSTD