2016 年度 JAVA 講座第六週目 目次 パッケージ... 2 パッケージの作成... 2 パッケージの使用方法... 3 異なるパッケージ同名クラスの宣言... 4 パッケージの側面から見たアクセス修飾子... 4 ラッパークラス... 5 ラッパークラス利用法:キャスト... 5 ラッパーク

Similar documents
オブジェクト指向プログラミング・同演習 5月21日演習課題

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

JavaプログラミングⅠ

JavaプログラミングⅠ

r1.dvi

Java知識テスト問題

JavaプログラミングⅠ

Microsoft Word - java a.doc

K227 Java 2

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

Programming-C-9.key

Java (9) 1 Lesson Java System.out.println() 1 Java API 1 Java Java 1

新・明解Java入門

PowerPoint プレゼンテーション

JavaプログラミングⅠ

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

Prog1_10th

デジタル表現論・第6回

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

PowerPoint プレゼンテーション

Prog1_11th

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1

JavaプログラミングⅠ

例外処理とファイル入出力

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

GEC-Java

プログラミングA

スライド 1

Java講座

プログラムの基本構成

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

Prog2_9th

Prog1_2nd

Prog1_15th

Microsoft PowerPoint - prog09.ppt

Prog2_10th

Microsoft PowerPoint - prog09.ppt

プログラミング入門1

Microsoft PowerPoint ppt

デジタル表現論・第4回

プログラミング入門1


class TestPrimitiveType{ public static

問題1 以下に示すプログラムは、次の処理をするプログラムである

PowerPoint Presentation

12.1 インターネットアドレス インターネットアドレス インターネットアドレス 32 ビットの長さを持つインターネットに接続されたマシンを識別するのに使う インターネットアドレスは ピリオドで区切られたトークンの並びで表現されることもある インターネットアドレス

text_10.dvi

JAVA入門

メソッドのまとめ

ÿþ˜u#u·0¹0Æ0à0

File IO

JavaプログラミングⅠ

Microsoft PowerPoint - prog03.ppt

リファレンス,配列 例外処理

2

Prog1_6th

PowerPoint プレゼンテーション

できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 3 回コレクションと例外処理 テクノロジックアート 瀬嘉秀

IT プロジェクト

メディプロ1 Javaプログラミング補足資料.ppt

2

Javaの作成の前に

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy

Javaセキュアコーディングセミナー東京 第3回 入出力(File, Stream)と例外時の動作 演習解説

Javaハンドブック

Java言語 第1回

JAVA とテンプレート

JavaプログラミングⅠ

GEC-Java

Javaプログラムの実行手順

Microsoft PowerPoint - prog13.ppt

3,, となって欲しいのだが 実際の出力結果を確認すると両方の配列とも 10, 2, 3,, となってしまっている この結果は代入後の配列 a と b は同じものになっていることを示している つまり 代入演算子 = によるの代入は全要素のコピーではなく 先をコピーする ため 代入後の a と b は

プログラミング基礎I(再)

Microsoft PowerPoint - prog13.ppt

応用プログラミング 2004/11/23 データの入出力 データの入出力データをキーボードからコンピュータに入力することや CRT に表示すること, さらにハードディスク (HDD) や MO などに保存されているファイルからデータをコンピュータに読み込むことや ( 逆に ) データをこれらの装置に

2

Microsoft Word - CompA-Ex doc

第 3 回 Java 講座 今回の内容 今週の Java 講座はコレクション 拡張 for 文, ガベージコレクションについて扱う. 今週の Java 講座は一番内容が薄いも のになるだろう. コレクション コレクションとは大きさが決まっていない配列だと考えればよい. コレクションには List 先

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

** 平成 16 年度 FE 午後問題 Java** 示現塾プロジェクトマネージャ テクニカルエンジニア ( ネットワーク ) など各種セミナーを開催中!! 開催日 受講料 カリキュラム等 詳しくは 今すぐアクセス!! 平成 16

ガイダンス

PowerPoint プレゼンテーション

マークアップ言語

PowerPoint プレゼンテーション

Microsoft Word - 商業-3

<4D F736F F D2091E F196E291E889F090E C4816A82CC838C E646F6378>

問題1 以下に示すプログラムは、次の処理をするプログラムである

Java演習(4) -- 変数と型 --

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

解きながら学ぶJava入門編

Prog1_13th

教材ドットコムオリジナル教材 0から始めるiアフ リ リファレンス i アプリ簡易リファレンス ver i アプリ Java 独自のメソッド (1)iアプリの命令を使えるようにする import com.nttdocomo.ui.*; (2) 乱数を使う import java.u

メソッドのまとめ


Microsoft Word - no11.docx

文字列操作と正規表現

情報技術 Java の特徴 Java は現在 事務処理計算用プログラミング言語として開発された COBOL に取って代わり C 言語や C++ と並んで 現在最も使われているプログラミング言語の一つである Java は Write Once, Run Anywhere( プログラムを一度作成したらど

2004/11/23 オブジェクト指向プログラミング - モデル図とシーケンス図の表現方法 - オブジェクト指向プログラミング (OOP:ObjectOrientedPrograming) オブジェクト指向プログラミング言語 (OOPL) Java,C++,Delphi(Pascal),Visual

Transcription:

2016 年度 JAVA 講座第六週目 目次 パッケージ... 2 パッケージの作成... 2 パッケージの使用方法... 3 異なるパッケージ同名クラスの宣言... 4 パッケージの側面から見たアクセス修飾子... 4 ラッパークラス... 5 ラッパークラス利用法:キャスト... 5 ラッパークラス利用法:ArrayList... 5 例外:Exception... 6 ぬるぽ... 6 例外処理:try-catch-finaly... 7 例外処理のサンプルソース... 7 標準入力... 8 スレッド... 11 演習問題... 12

パッケージ パッケージとは Java のクラスやインターフェースをひとまとめにしたもののこと である 第三週 JAVA 講座で使用した動的配列などのコレクションを提供する util パッケージ や 数学的な関数を提供する math パッケージ等が標準で用意されている パッケージの作成 1. プロジェクトを右クリック 2. 新規 パッケージ をクリック 3. package-info.java を作成する のチェックを外す 4. packagea という名前を付けて 完了 をクリック パッケージエクスプローラーの中に パッケージが追加されていれば 作成されて いる 今 作成したパッケージに以下のクラスを追加してみる ClassA.java package packagea; public class ClassA { public void print(){ System.out.println("This is classa in packagea."); さらに メイン関数に以下の記述を追加する ClassA classa = new ClassA(); classa.print(); このようにソースコードを記述すると エラーが発生する 何故なら メイン関数 を実行するクラスのパッケージと ClassA のパッケージが異なるからだ 異なるパッ ケージのクラスは 特殊な宣言方法でないと使用することができない

パッケージの使用方法 異なるパッケージを使用するには import キーワードを使う必要がある package week6; import packagea.classa; public class week6 { ClassA classa = new ClassA(); classa.print(); そこで メイン関数を以下の様に変更する こうすることで packagea 内の ClassA をメイン関数のクラスでも使用することが可 能になった と宣言することで packagea 内の全てのクラスを使用できるようになる Import packagea.*;

異なるパッケージ同名クラスの宣言 別々のパッケージで クラス名が重なってしまっても 使用することができる そこで packageb を作成し その中に以下のクラスを作成する classb.java package packageb; public class ClassA { public void print(){ System.out.println("This is ClassA in packageb"); さらに メイン関数を以下の様に記述する package week6; public class week6 { packagea.classa classa = new packagea.classa(); packageb.classa classb = new packageb.classa(); classa.print(); classb.print(); こうすることで 異なるパッケージの同じクラスを使用することができる パッケージの側面から見たアクセス修飾子 アクセス修飾子 private 機能 なし protected 同じパッケージからアクセス可能 public 全クラスからアクセス可能 同じクラスからのみアクセス可能 同じパッケージ 継承先からアクセス可能

ラッパークラス プリミティブ型をオブジェクトに変更する時に ラッパークラスを使用する プリミティブ型のラッパークラスの対応を以下に載せる プリミティブ型 int char byte short boolean long float double ラッパークラス Interger Character Byte Short Boolean Long Float Double 以下に ラッパークラスの2つ挙げておく // 文字列の数字を整数値に変換 int num = Integer.parseInt("1000"); // 実数値を文字列に変換 String num = Double.toString(123.456); ラッパークラス利用法:キャスト ラッパークラス利用法:ArrayList package week6; import java.util.arraylist; public class week6 { ArrayList<Integer> arraylist = new ArrayList<Integer>(); for(int i=0;i<10;i++)arraylist.add(i); for(int i :arraylist)system.out.println(i);

えrm 例外:Exception プログラムの実行中にエラーが起きることを例外という 頻繁に発生する例外としては ゼロで割り算を使用した時に発生する ArithmeticException 存在しない null の値を参照しようとした時に発生する NullPointerException 通称:ヌルポ 配列の範囲外に参照しようとすると発生する ArrayIndexOutOfBoundsException などがある ぬるぽ package week6; public class week6 { String str = null; System.out.println(str.length()); 上記のソースを実行すると NullPointerException が発生する 例外への対策方法を大きく分けてふたつある まず 例外が発生しないようソースを書くこと そして もうひとつは try 文を使用すること

例外処理:try-catch-finaly try{ 例外が発生しそうなプログラムの処理を記述する catch(発生した時に対策したい例外を指定する){ 例外は発生した時の処理を記述する finally{ 例外の発生に関係なく行う処理を記述する 省略可能 try-catch-finally を使用して 例外が起きた時に行うべき処理を書くことができる 例外処理のサンプルソース package week6; public class week6 { String str = null; //String str = "ぬるぽ"; //例外が発生しそうなとこでtryを囲む try{ System.out.println(str.length()); //catchで指定した例外が発生した時の処理を書いておく catch(nullpointerexception E){ System.out.println("ぬるぽ:nullの値には参照できない"); //例外が発生しなくてもしても行う処理を記述するfinally //省略可 finally{ System.out.println("プログラムを終了"); throws キーワードを使用すると例外が発生させる関数を定義することも可能であ る また 例外処理をしないとコンパイルすらしてくれないクラスや関数がある

その一つが 標準入力である 標準入力 Java の標準入力は 様々な知識を必要とする Java では 入出力を行うには ストリームというものを使用する 元来 stream とは 流れを意味する英語で Java ではデータの流れを表す抽象的な 概念として使われている これを使うことで 様々な環境で同様なデータの入出力 が行える 文字を出力する際に使用していた System.out は PrintStream というクラスのインスタ ンスである PrintStream は文字を出力するストリームである キーボードからの入力を受け取る際には InputStream, InputStreamReader, BufferedReader が必要になる InputStream : 入力をバイトデータで受け取るストリーム InputStreamReader : バイトストリームから文字ストリームに変換するストリーム BufferedReader : 文字をバッファリングしてテキストを効率よく読み込むストリーム ストリームの関係は以下のようになっている

package w6; import java.io.bufferedreader; import java.io.ioexception; import java.io.inputstreamreader; public class Week6 { //System.in: キーボードからの入力をバイトで受け取る //InputStreamReader: バイトデータを文字に変換する InputStreamReader isr = new InputStreamReader(System.in); //BufferedReader: 文字をバッファリングして文字列として読み込む BufferedReader br = new BufferedReader(isr); try { System.out.print("input:"); String str = br.readline(); System.out.println("output:" + str); catch(ioexception e) { System.out.println(e.getMessage()); 標準入力をするときは 例外処理も同時に記述しないとコンパイルが通らない

スレッド スレッドとは プログラムの処理の単位のことであり 普通のプログラムは一つの スレッドで実行するシングルスレッドで 実行されている 複数の処理を平行して行うことをマルチスレッドという 例えば ゲームなどはマルチスレッドで動いている Loading 画面などがマルチスレ ッドで実行されており ゲームに必要なデータ 音楽 CG 等を メモリに格納する 処理をしながら 画面上には現在ロード中であることを表す Loading 画面を表示し ている ただ 一つの CPU につき 一つの命令しか実行できないので 短時間で複数の命令 を切り替えて実行する時分割処理 タイムシェアリング でマルチスレッドを実現 している Java では Thread クラスを継承することで マルチスレッド処理を行うことができ る まず マルチスレッドをするクラスを作成してみる Week6.java package w6; public class Process extends Thread{ //マルチスレッド処理をさせたい部分をrunメソッドにオーバライド 上書 き する public void run(){ for(int i =0;i<10;i++){ System.out.println(i); try { Thread.sleep(200); catch (InterruptedException e) { // TODO Auto-generated catch block e.printstacktrace();

次に main メソッドで実行させてみる 出力結果から 2つの処理が同時に行われていることがわかる 演習問題 1.キーボードから 数字を入力し その数字の二倍を出力するプログラムを作成せ よ(double 型で) Sample Input and Output Input: 2.3 Output: 4.6 2.キーボードから 2つの数字と四則演算の符号を入力し その入力をもとに四則 演算を行うプログラムを作成せよ double 型 例外処理はしなくてもいい Sample Input and Output Input:1 + 1 Output:2 Process process1 = new Process(); Process process2 = new Process(); //startメソッドで 処理を開始する process1.start(); process2.start(); Sample Input and Output2 Input: 2 * 3 Output:6 ヒント String 型の split メソッドやキャストを使用するとできるかも