3年生前期ゼミナール (独習JAVA)

第1章 Javaの基礎
1
 Sun
Microsystems社の開発チームによって
1991年に作成
 開発環境で多種多様なハードウェア/ソフト
ウェアが使用されていたため、プラット
フォームに依存しない言語である必要があっ
た
 明確で徹底したオブジェクト指向プログラミ
ングへのアプローチによりソフトウェアの再
利用と保守がとても簡単になっている
2
ソースコード
オブジェクト
コード
プログラム
 ソースコード
• プログラムのテキスト版
• 人間に読みやすい形式
 オブジェクトコード
• プログラムの実行可能な形態
• 特定のCPU専用であり異なるプラットフォームで
は実行できない
3
 コンパイル時にバイトコードを含める
 JVMはバイトコードを解釈しプラットフォー
ム非依存の環境を実現
プログラム
コンパイル後の
クラスファイル
バイトコード
Java Virtual Machine
CPU
4
 Javaによって作成できるプログラムはアプ
リケーションとアプレットの2種類
• アプリケーション -- JVMによって直接実行可能
• アプレット -- Webブラウザが必要
 アプレットビューを使用しアプレットを実
行することも可能
• Java 2 Platform Standard Edition Development
Kit (JDK)に含まれておりテストなどに使用
5
 オブジェクト指向プログラミングの基盤を
説明する際の3つの機能
• カプセル化
• 継承
• ポリモーフィズム
6
 データとデータを操作するコードを関連付
けるメカニズム
 カプセル化の利点
• データの形式を簡単に変更できる
• 機密情報へのアクセスが楽になる
• 複数のスレッドからのデータアクセスの同期化が
簡単になる
7

あるクラスを特化することにより他のクラスを定
義するメカニズム

すでに定義されている構造体や動作を元に別のク
ラスを定義できる ⇒ ソフトウェアの再利用
Object
A
D
E
B
F
C
・サブクラスDはクラス
Aを継承
・クラスAはクラスDの
スーパークラス
G
8
 「1つのインターフェイス、複数の実装」
と表現されるメカニズム
 呼び出しているメソッドが一見同じなのに
処理結果が変わる
携帯電波の範
囲を調べる
地域情報を
調べる
雨の地域を
調べる
クラスA
クラスB
クラスC
getArea()
getArea()
getArea()
9
 さまざまな種類のクラスライブラリが定義
パッケージ
説明
java.applet
アプレット関連の機能を提供する
java.awt
グラフィカルユーザーインターフェイスを作成する
ためのAbstract Window Toolkit (AWT)を提供する
java.awt.event
AWTコンポーネントからのイベントを処理する
java.awt.image
画像処理を行う
java.beans
JavaBeansアーキテクチャに基づいたBeans機能を
提供する
java.io
ファイルやネットワークでの入出力をサポートする
java.lang
Javaの言語中枢機能を提供する
10
 アプリケーションやアプレットを作成し実行
するために必要なものが含まれた開発環境
 現在の最新バージョンはJDK
6.0
11
 プログラム例
class Example1 {
public static void main (String args[]) {
System.out.println(“This is the output from Example1”);
}
}
 実行例
>Javac Example1.java
This is the output from Example1
12
 名前の付いたメモリ位置で値を格納できる
 Javaの8つの基本データ型
型
説明
char
16ビットUnicodeキャラクタデータ
boolean
真偽値
byte
8ビット符号付き整数
short
16ビット符号付き整数
int
32ビット符号付き整数
long
64ビット符号付き整数
float
32ビット符号付き浮動小数点数
double
64ビット符号付き浮動小数点数
13
 プログラム例
class Example2 {
public static void main (String args[]) {
int i = 50;
System.out.println(“The value of i is ” + i);
}
}
 実行例
>Javac Example2.java
The value of i is 50
14
 一連のキャラクタを二重引用符(“)で囲む
ことで定義
• 二重引用符の前に\をつけることで文字列の内部
に二重引用符を含むことができる
• 文字列を連結させるには+演算子で連結
例
String s = “abcde” + “ef \” ghi \” “ ;
15
 式とは演算子とオペランドを組み合わせた
もの
演算子
説明
+
加算
-
減算
*
乗算
/
除算
%
剰余
+=
加算代入
-=
減算代入
++
インクリメント
16
 型の異なるデータを1つの式で組み合わせ
て使うことができる
 式の最終結果には最も大きい型が使用され
る
int i;
float f;
i= 10
f = 23.25f
System.out.println(i * f);
17
 代入ステートメントで右辺と左辺の型が異
なる場合、左辺の型に変換される
 左辺の型が右辺の型より小さい場合は
(type)valueを使用
int b;
int i = 258;
b = (byte)i;
System.out.println(i * f);
18
 ソースコード内に書き込むメモ
• 単一行コメント
 「//」ではじまり行末尾までコメントとして解釈
• 複数行コメント
 「/*」ではじまり、「*/」で終わり
• ドキュメンテーションコメント
 「/**」という3文字ではじまり、「*/」という2文字で
終わり
19
 共通の名前を使用してアクセスすることが
可能な、同じ型を持つ一連の変数
• 1次元配列の宣言
type varName[];
• 1次元配列の領域割り当て
varName = new type[size];
• 1次元配列の宣言と領域割り当て
type varName[] = new type[size];
20
• 1次元配列の要素取得
varName.length;
• 1次元配列の初期化
type varName[] = {e0, … , en};
例
int ia[] = new int[10]
ia[0]
ia[1]
ia[2]
ia[3]
ia[4]
ia[5]
ia[6]
ia[7]
ia[8]
ia[9]
21
 配列の配列として実装
 個々にインデックスを配置することでアク
セス可能
int ib[][] = new int[2][2];
ib[0][0]
ib[0][1]
ib[1][0]
ib[1][1]
22
 Java言語のキーワードは変数名またはメ
ソッド名として使用できない
• Abstract, boolean, etc......
23