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

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