1.04k likes | 1.17k Views
情報工学演習 Ⅰ. Java 入門の入門. 104 slides. 表現系工学研究室の担当する内容 ( ソフトウェア工学 と 人工知能 の基礎). 演習 Ⅰ. 実験 Ⅰ. 認知システム論. Java 入門の入門. AI プログラミング. オブジェクト指向 プログラミング Ⅰ. ニューラルネット (1)(2). 探 索. 論 理. 論 理. ヒューマン・サイバネティクス. 実験 Ⅱ. ニューラルネット. 機械学習. 内容. Java の 文法 や扱う データ について: C言語との 共通点 を確認する. C言語との 相違点 を学ぶ..
E N D
情報工学演習Ⅰ Java入門の入門 104 slides
表現系工学研究室の担当する内容(ソフトウェア工学と人工知能の基礎)表現系工学研究室の担当する内容(ソフトウェア工学と人工知能の基礎) 演習Ⅰ 実験Ⅰ 認知システム論 Java入門の入門 AIプログラミング オブジェクト指向プログラミングⅠ ニューラルネット(1)(2) 探 索 論 理 論 理 ヒューマン・サイバネティクス 実験Ⅱ ニューラルネット 機械学習
内容 • Javaの文法や扱うデータについて: • C言語との共通点を確認する. • C言語との相違点を学ぶ. (オブジェクト指向の内容は含まない.) 参考文献 改訂 新Java言語入門,林 晴比古,ソフトバンクパブリッシング(2004)
1 Javaの周辺 ・Javaとはどのような言語か ・Javaはどのような環境で動作するのか ・Java仮想マシンとは何か ・Java開発キットとはどのようなものか
Java言語とは • Sun Microsystems社で開発されたプログラミング言語 • プラットフォーム独立 • CPUやOSが異なっていてもOK.移植が不要 • ネットワークに1つあれば,どのプラットフォームからもダウンロードできる • Write Once, Run Anywhere
Java仮想マシン(JVM: Java Virtual Machine) • 仮想的なCPU.その機械語をバイトコードという. • Javaコンパイラは,ソースプログラムをバイトコードにコンパイルする. • 各プラットフォーム用のJVMでバイトコードを実行する. • JVMは,インタプリタでバイトコードを解釈実行したり,ネイティブコンパイラで機械語に翻訳して実行する.
Javaで作成できるプログラム • アプリケーション • コンソール型アプリケーション • ウィンドウ型アプリケーション • アプレット(Applet) • ホームページに埋め込まれて動作する • サーブレット(Servlet) • サーバーの上で動作する
Javaクラスライブラリ • Javaプログラムはクラスという単位で構成される. • 利用価値の高いクラス群がJavaクラスライブラリとして提供されている. • 既存のクラスを流用(継承)して,そこに機能を追加して,新しいクラスにできる.これがJavaプログラミングのスタイル.
パッケージ 主要なJavaパッケージ • 関連したクラスがパッケージと呼ばれる単位でまとめられている.
Java開発キット • JDK (Java Development Kit) • Sun Microsystems社のフリーソフト • バージョン 1.0→1.1→1.2→1.3→1.4→5.0 • J2SE = Java2 Standard Edition • J2EE = Java2 Enterprise Edition • J2ME = Java2 Micro Edition • J2SE 5.0 (=Java2 Standard Edition 5.0) • Eclipse • IBM商品がオープンソース化したもの
2 最初のアプリケーション ・Javaプログラムの基本スタイル ・コンパイルと実行の方法
基本プログラム例(1) ファイル名は Jsmp1.javaのように .java を付ける. 大文字と小文字は区別される. public class Jsmp1{ public static void main(String args[]) { System.out.println("My first java."); } }
基本プログラム例(2) Jsmp1.java クラス名とファイル名は同じ public class Jsmp1{ public static void main(String args[]) { System.out.println("My first java."); } } プログラムはmainメソッド からスタートする クラス メソッド
基本プログラム例(3) 1つの命令(文)最後に”;”が付く System.out.println("My first java."); 画面に出力しろという命令 出力する内容(引数という)
プログラムのコンパイル手順 コマンドプロンプトを起動し,カレントディレクトリに移動する。 cd ........ • プログラムをコンパイルする。javac ファイル名(例: javac Jsmp1.java)(成功すると クラス名.classというファイルが作られる) • プログラムを実行する。java クラス名(例: java Jsmp1)(ここは,ファイル名ではないことに注意!)
3 最初のアプレット 省略
5 Javaの基礎知識 ・コメント ・字下げ ・名前の付け方 ・文字列の出力 ・変数宣言と数値出力 ・繰り返し文と条件文の雰囲気
基本スタイル public class クラス名{ public static void main(String args[]) { (いろいろな記述) } }
コメントを入れる(1) /* ファイル名 Cmnt.java 開発者 ○○ ○○ 作成日 2006.10.18 */ public/* このようにもコメントを入れられます */class Cmnt{ public static void main(String args[]) {//mainの記述 System.out.println(“My first java.”); //文字出力 } }
コメントを入れる(2) • 用例1/* a = 10; b = 20; c = 30;*/ デバッグ作業への利用
字下げで見やすくする public class Smp1b { public static void main (String args[]) { System.out.println("My first java."); System.out.println("My second java."); } }
名前のつけかた • 1文字目に使用できる文字: 英字大文字(A~Z),英字小文字(a~z) 下線( _ ),ドル($) $はユーザは処理系用 • 2文字目以降に使用できる文字: 1文字目で使用できる文字 数字(0~9) • 予約語(Javaが文法上使用するキーワード)は使用不可 • 大文字と小文字は区別される • 全角文字(2バイト文字)はOK.
名前の慣例(1) • 変数名とメソッド名には小文字を使う:int dt; public void sample1() • 名前が複数の語で構成される場合,それぞれの語の先頭を大文字にするか,区切りにアンダーバー( _ )を入れる:public void getData() public void get_data()
名前の慣例(2) • クラス名は先頭を大文字にする:public class Greeting public class TextSort • 記号定数はすべて大文字にする。複数の語で構成されるときには,必要ならアンダーバー( _ )で区切る:public static final int SIZE = 1000; public static final int MAX_DATA = 2000;
文字列を出力する public class Jsmp4{ public static void main(String args[]) { System.out.print("AAAAA"); System.out.print("BBBBB\nCCCCC\n"); System.out.println("DDDDD"); System.out.println("EEEEE\nFFFFF\n\nGGGGG"); } }
変数と代入 数字,文字等 変数への値の代入 a = 3; 変数 a
数値出力 自動的に 文字列に 変換される public class Jsmp5 { public static void main (String args[]) { int a, b, sum; a = 100; //変数aに100を代入 b = 200; //変数bに200を代入 sum = a + b; //変数sumにa+b (=300)を代入 System.out.print("a="); //文字列だけ System.out.println(a); //数値だけ System.out.println("b=" + b); //文字列と数値 System.out.println("a+b=" + sum); //結果 System.out.println("a+b=" + (a+b)); //直接計算 } } 文字列の結合
繰り返し処理 public class Jsmp6 { public static void main (String args[]) { int i, sum; for(i=1; i<=5; i++) System.out.println("i = " + i); sum = 0; for(i=1; i<=5; i++) { sum = sum + i; System.out.println("sum = " + sum); } } } 繰り返される部分 繰り返される部分
条件処理 public class JSmp7 { public static void main (String args[]) { int i; for(i=1; i<=5; i++) { System.out.println("i = " + i); if (i < 3) System.out.println(" 3未満です"); else System.out.println(" 3以上です"); } } }
条件判定式 if (a == b) ー もしaとbが等しいなら if (a != b) ー もしaとbが異なるなら if (a < b) ー もしaがbより小さいなら if (a > b) ー もしaがbより大きいなら if (a <= b) ー もしaがb以下なら if (a >= b) ー もしaがb以上なら
よくあるエラー • '{'と'}'の対応が取れていない • '('と')'の対応が取れていない • "(二重引用符号)の対応が取れていない • /*と */の対応が取れていない • 文末の';'を忘れている • 大文字と小文字の違いがある • メインクラス名とファイル名が不一致である
6 変数と定数 ・基本データ型 ・String型 ・参照型 ・定数 ・型変換(キャスト)
8つの基本データ型 (1) 論理 文字 整数
変数宣言と初期化 変数宣言 int a; double b,c; int d = 10; int e, f = 20, g; 変数宣言と 初期化を同時に記述 混ざっていても可
データの代入 int dt1 = 100; int dt2, dt3, dt4; dt2 = 200; dt3 = dt2; dt4 = dt1 + dt2 + 300; dt1 = dt2 = dt3 = 500; //一度に代入
boolean型(1) 「真」か「偽」かという論理値の表現 true = 真 false = 偽 C言語はint型を用いて論理値を表現している
boolean型(2) boolean b; // boolean型の宣言 b = true; // trueを設定 b = false; // falseを設定 if (b == true) // bがtrueなら if (b == false) // bがfalseなら if (b) // (b==true)と同じ if (!b) // (b==false)と同じ b = 0; // Javaではエラー
char型 文字(文字コード)を保持できる変数 Javaの内部の文字コードは"Unicode" (1文字16ビット) char ch1, ch2; ch1 =‘A’; //半角文字を設定 ch2 =‘亜’; //全角文字を設定
整数型 byte bdt; // 8ビット short sdt; //16ビット int idt; //32ビット long ldt; //64ビット bdt = 127; sdt = 32760; idt = 1234567890; ldt = 1234567890123456789L;
浮動小数点型 float fdt; //32ビット 単精度実数 double ddt; //64ビット 倍精度実数 fdt = 123.456F; ddt = 123.456789012345;
String型 (文字列) String型は「基本データ型」ではなく「クラス」 String ss; String gg = "aaaa"; ss = "bbbb"; ss = ss + "cccc" ss = "dddd" + "eeee";
参照型(1) • 基本データ型以外のデータとして,クラスと配列がある. • クラスと配列を扱う変数の型を参照型という. • 参照とは,アドレスあるいはポインタのこと. • C言語のように,&や*を用いてポインタを扱うことはしない.
参照型(2) 配列名 a を宣言し, int型10個分の領域確保 int a[ ]; a = new int[10]; a a[0] あるいは int a[ ] = new int[10]; a[9]
参照型(3) String s = "abcde"; s "abcde"
論理定数 bdt = true; // 論理定数 bdt = false; // 論理定数
数値定数(1) idt = 022; // 先頭が"0"だと8進数 idt = 22; // 10進数の22 idt = 0x12AB; // 先頭が"0x"だと16進数
数値定数(2) ldt = 123456789012L; // 末尾がLまたはlだとlong型 fdt = 111.222F; // 末尾がFまたはfだとfloat型 ddt = 123.45678; // 小数点表現の浮動小数点数double型 ddt = 5.67e4; // 指数表現の浮動小数点数double型 5.67×104の意味
文字定数と文字列定数 char ch; ch = 'A'; 文字定数 ch = '亜'; 文字定数 String ss; ss = "abcde"; 文字列定数