Javaプログラムの実行手順

Similar documents
Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

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

Java学習教材

JavaプログラミングⅠ

Microsoft PowerPoint - chap10_OOP.ppt

Prog1_6th

JavaプログラミングⅠ

JAVA入門

Microsoft PowerPoint - prog03.ppt

Microsoft PowerPoint - prog04.ppt

Microsoft PowerPoint ppt

GEC-Java

JavaプログラミングⅠ

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

プログラミング入門1

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

DVIOUT-exer

Java講座

メソッドのまとめ

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

Javaセキュアコーディングセミナー2013東京第1回 演習の解説

Prog1_10th

Microsoft PowerPoint - lec06 [互換モード]

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

プログラミング入門1

JavaプログラミングⅠ

基本情報STEP UP演習Java対策

Prog2_12th

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

GEC-Java

メソッドのまとめ

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

JavaプログラミングⅠ

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

スライド 1

デジタル表現論・第4回

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

ガイダンス

プログラミングA

基礎計算機演習 実習課題No6

Microsoft PowerPoint - prog09.ppt

情報実習Ⅱ

Microsoft PowerPoint - prog09.ppt

ガイダンス

Prog1_15th

PowerPoint プレゼンテーション

ガイダンス

関数の動作 / printhw(); 7 printf(" n"); printhw(); printf("############ n"); 4 printhw(); 5 関数の作り方 ( 関数名 ) 戻り値 ( 後述 ) void である. 関数名 (

JavaプログラミングⅠ

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

Javaの作成の前に

Java言語 第1回

Microsoft PowerPoint - prog13.ppt

人工知能入門

PowerPoint プレゼンテーション

Microsoft PowerPoint - prog13.ppt

2

プログラミング入門1

Prog1_3rd

Week 1 理解度確認クイズ解答 解説 問題 1 (4 2 点 =8 点 ) 以下の各問いに答えよ 問題 bit 版の Windows8.1 に Java をインストールする時 必要なパッケージはどれか 但し Java のコンパイルができる環境をインストールするものとする 1. jdk

PowerPoint プレゼンテーション

プログラミング入門1

Prog2_9th

GUIプログラムⅣ

Microsoft PowerPoint - ruby_instruction.ppt

Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 (

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

Prog2_9th

ToDo: 今回のタイトル

第二回独習 Java ゼミ 第二章クラスとメソッド 2.1 メソッドの構造 2.2 静的メソッドと静的変数の概要 2.3 インスタンスメソッドとインスタンス変数の概要 2.4 Integerクラス 2006/04/19 神津健太

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

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

ガイダンス

2

Microsoft PowerPoint - prog07.ppt

HCI プログラミング 8 回目ボタン チェックボックス ラジオボタン 今日の講義で学ぶ内容 ボタンとアクションイベント ボタンのカスタマイズ チェックボックスとラジオボタン ボタンとアクションイベント 1 ボタンを配置してみましょう ボタンは ラベルと同じようにフォントやその色 画像の貼り付けなど

IT プロジェクト

プログラミング入門1

JavaプログラミングⅠ

プログラミング入門1

Slide 1

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

2

PowerPoint プレゼンテーション

デジタル表現論・第6回

2

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

HCI プログラミング 10 回目テキストフィールドとキーイベント 今日の講義で学ぶ内容 テキストフィールドの利用 キーイベントの処理 テキストフィールドの利用 1 テキストフィールドを配置してみましょう テキストフィールドを用いることにより 数値や文字列などのデータ入力が可能になります ソースファ

問題 01 以下は コンソールより年齢を入力させ その年齢にあった料金を表示するプログラムである 年齢ごとの金額は以下の通りである 年齢の範囲金額 0 歳以上 6 歳以下 120 円 7 歳以上 65 歳未満 200 円 65 歳以上無料 package j1.exam02; import java

プログラミング実習I

/*Source.cpp*/ #include<stdio.h> //printf はここでインクルードして初めて使えるようになる // ここで関数 average を定義 3 つの整数の平均値を返す double 型の関数です double average(int a,int b,int c){

Microsoft PowerPoint ppt

Prog2_10th

JavaプログラミングⅠ

Microsoft Word - VBA基礎(6).docx

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

Prog1_2nd

Microsoft PowerPoint - OOP.pptx

Prog2_10th

Transcription:

戻り値のあるメソッド メソッドには 処理に使用する値を引数として渡すことができました 呼び出し 側からメソッドに値を渡すだけでなく 逆にメソッドで処理を行った結果の値を 呼び出し側で受け取ることもできます メソッドから戻してもらう値のことを もどりち戻り値といいます ( 図 5-4) 図 5-4. 戻り値を返すメソッドのイメージ 戻り値を受け取ることによって ある計算を行った結果や 処理に成功したか失 敗したかの情報など呼び出し側で知ることができます 戻り値のあるメソッドは次のように記述します 戻り値の型メソッド名 ( 引数列 ) { 命令文 return 戻り値 ; 引数が無い場合は 引数列は空のままにします メソッドからの戻り値は 1 つだ け指定でき その値の型をメソッド名の前に記述します ( 戻り値が基本型の場合は int double boolean などの型の名前を記述し 参照型の場合は Point などのク ラス名を記述します ) メソッドの最後に リターン return というキーワードと共に 戻り値を記述します メモ 今まで見てきたメソッドのように 戻り値が無い場合は 戻り値の型 ボイドに void と記述します (voidは 何も無い という意味の英単語です) 戻り値が無い場合は return 文を省略できます 1

05-03/ReturnExample.java class Point { int x; int y; // x と y の値を掛けた結果を返す int getxy () { return this.x * this.y; 新しく追加し た 戻り値のあ るメソッドです class ReturnExample { public static void main(string[] args) { Point p = new Point(); p.x = 5; p.y = 10; int xy = p.getxy(); p のメソッド getxy の戻り値を int 型の変数 xy に 代入しています System.out.println("p の x と y の値を掛けた結果は " + xy); 引数と戻り値のあるメソッド次のプログラムコードは issameposition という名前のメソッドを定義しています このメソッドは 引数として Point クラスのインスタンスへの参照を受け取り そのインスタンスと自分自身の座標値を比較した結果を戻します 戻り値は boolean 型で同じ座標値であれば true を そうでなければ false を返します // 引数で与えられた Point クラスのインスタンスと座標値を比較する // 同じ座標値であれば true を そうでなければ false を返す boolean issameposition(point p) { if(this.x == p.x && this.y == p.y) { 引数で渡された Point クラ return true; else { 2 スのインスタンスと座標値 を比較します

return false; このメソッドのように int や double のような基本型の値だけではなく イン スタンスの参照 ( 参照型 ) を引数にすることができます mainメソッドプログラムの入り口として説明してきた public static void main(string[] args) の記述が含まれますが これを改めて見てみると main という名前のメソッドの宣言であることがわかります void という記述があることから 戻り値が無いメソッドです また 引数は String[] args となっていて 文字列の配列であることがわかります メモ Eclipse でプログラムを実行する時には Eclipse が main メソッドへ引数を渡します main メソッドへの引数は 次の手順で設定できます 1. main メソッドの含まれるプログラムコードのファイルをパッケージ エクスプローラビューで右クリックし [ プロパティー ] を選択する 2.[ 実行 / デバッグ設定 ] で main メソッドの含まれるクラスを選択し [ 編集 ] ボタンを押す 3. 画面に表示される [ 構成の編集 ] ダイアログボックスの [ 引数 ] タブで [ プログラムの引数 ] のテキストエリアに引数とする文字列を記入し [OK] を押す 3

複数の文字列を引数にする場合は 空白で区切って記入します 次のプログラムは プログラム実行時の引数として渡された文字列を出力する例 です [6-5/Example.java] 05-05/PrintArguments.java class PrintArguments { public static void main(string[] args) { System.out.println(" 引数の数 " + args.length); 配列の要素の数を出力 します for(int i = 0; i < args.length; i++) { System.out.println(args[i]); 引数で渡された文字列 を全て出力します 文字列を int 型の数値に変換するには Integer クラスの parseint クラスメソッドを使って次のようにします ( 注 ) int i = Integer.parseInt( 文字列 ); double 型の数値に変換するには Double クラスの parsedouble クラスメソッドを使って 次のようにします double d = Double.parseDouble( 文字列 ); 4

もっと知りたい人に : 論理演算式の値 if(this.x == p.x && this.y == p.y) { return true; else { return false; 上の 5 行分のプログラムコードを 次の 1 行にまとめてしまうことができます return (this.x == p.x && this.y == p.y); if(p1.issameposition(p2) == true) { という条件式は次のように書くことができます if(p1.issameposition(p2)) { 主なキーワード引数 : メソッドを呼び出すときに メソッドに渡す値のこと 戻り値 : メソッドから返される値のこと void: メソッドに戻り値が無い場合に 戻り値の型として使用するキーワード return: 戻り値のあるメソッドで 戻り値を指定するのに使用するキーワード まとめ メソッドには 引数と戻り値を設定できます 戻り値が無い場合は 戻り値の型に void を使います メソッドの引数に インスタンスの参照を渡することもできます 5

5-3 コンストラクタコンストラクタとはコンストラクタとは英語で 構築する という意味の言葉で インスタンスが生成される時に自動的に実行されるメソッドです コンストラクタには 次の 2 つの決まりごとがあります クラス名と同じ名前のメソッドである 戻り値を定義できないつまり Point クラスのコンストラクタは次のような形で宣言することになります 戻り値の定義はありません クラス名を使います Point( 引数列 ) { 命令文 引数を受け取れます コンストラクタの例 05-07/ConstructorExample.java class Point { int x; int y; Point(int x, int y) { System.out.println("Point のコンストラクタが呼び出されました "); this.x = x; コンストラクタの定義です コンストラクタはクラス名と同じ名前で戻り値の定義がありません this.y = y; 6

class ConstructorExample { public static void main(string[] args) { Point p = new Point(5, 10); 座標値を引数に指定して Point ク ラスのインスタンス生成します System.out.println("p の座標は (" + p.x + "," + p.y +")"); 主なキーワード コンストラクタ : インスタンスが生成される時に 自動で実行される特殊なメソッ ド まとめ コンストラクタは クラスのインスタンスが生成される時に自動的に実行されます コンストラクタには 戻り値を定義できませんが 引数を指定できます 7

章末問題 1. 次の空欄を埋めて 文章を完成させてください メソッドを呼び出す時に メソッドに渡す値をのことを[ (1) ] と言い メソッドから戻される値のことを [ (2) ] と言う メソッドの宣言では[ (2) ] の型をメソッド名の前に記述するが [ (2) ] が無い場合は [ (3) ] と記述する インスタンスが生成される時に 自動的に呼び出される特別なメソッドのことを [ (4) ] という 2. 次の文章のうち 誤っているものには を 正しいものには をつけてください 誤っているものは どこが誤っているか指摘してください (1) メソッドの引数に使えるのは int double などの基本型だけである (2) メソッドの引数と戻り値はいくつでも指定できる (3) メソッド内に return; と記述すると コンパイルエラーになる (4) コンストラクタは無くても問題無い (5) メソッドの中で他のメソッドを呼び出しても構わない 3. width( 幅 ) と height( 高さ ) の情報を持つ Rectangle( 長方形 ) クラスを次のように定義しました 以下の問いに答えてください class Rectangle { double width; // 幅 double height; // 高さ (1) 面積 ( 幅 高さ ) を戻り値とする getarea メソッドを追加してください (2) 幅と高さを引数で指定できるコンストラクタを追加してください コンスト ラクタ内でインスタンス変数を参照する時には this キーワードを使うようにし てください (3) 引数で渡された Rectangle クラスのインスタンスと比較して 自分の方が面積が大きければ true を そうでなければ fale を戻り値とする islarger メソッドを追加してください メソッドの宣言は boolean islarger(rectangle r) { 命令文 となります 命令文を考えてください 8

6-1 オーバーロードと this メソッドのオーバーロード 異なるメソッドに同じ名前をつけることをメソッドのオーバーロードと言います 06-01/Point.java class Point { int x; int y; // 座標値を変更する x と y の値は引数で指定されたものにする void set(int x, int y) { this.x = x; this.y = y; set という名前のメソッドです 引 数は int 型の値が 2 つです // 座標値を変更する x と y は引数で渡されるインスタンスの値と同じにする void set(point p) { this.x = p.x; this.y = p.y; set という名前のメソッドです 引 数は Point 型の値が 1 つです Point クラスに含まれる 2 つのメソッドの名前はどちらも同じ set ですが 呼び 出すときに渡す引数の型と数によって どちらが実行されるか区別されます 06-01/OverloadExample.java class OverloadExample { public static void main(string[] args) { Point p1 = new Point(); 新しいインスタンスを生成し p1 とします System.out.println("p1 の座標は (" + p1.x +, + p1.y + ")"); p1.set(10, 0); 2 つの整数を引数にして set メソッドを呼び出します System.out.println("p1 の座標は (" + p1.x + ", " + p1.y + ")"); 9

Point p2 = new Point(); 新しいインスタンスを生成し p2 とします p2.set(p1); Point 型の参照を引数にして set メソッドを呼び出します System.out.println("p2 の座標は (" + p2.x + ", " + p2.y +")"); コンストラクタのオーバーロード 同じクラスの中に 引数が異なるコンストラクタを宣言できます 06-02/Point.java class Point { int x; int y; // x と y の値を 0 にする Point() { 引数が無いコンストラクタです System.out.println(" 引数が無いコンストラクタが実行されました "); this.x = 0; this.y = 0; // 引数で渡された Point 型の参照先のインスタンスと同じ座標値にする Point(Point p) { Point クラス型の参照を引数とするコンストラクタです System.out.println(" 引数が 1 つのコンストラクタが実行されました "); this.x = p.x; this.y = p.y; // 引数で渡された x と y の値を座標値に設定する Point(int x, int y) { 2 つの整数値を引数とするコンストラクタです System.out.println(" 引数が 2 つのコンストラクタが実行されました "); this.x = x; 10

this.y = y; 06-02/OverloadExample2.java class OverloadExample2 { public static void main(string[] args) { Point p1 = new Point(); 引数が無いコンストラクタを使用します System.out.println("p1 の座標は (" + p1.x + "," + p1.y + ")"); Point p2 = new Point(10, 20); 引数が 2 つのコンストラクタを使用します System.out.println("p2 の座標は (" + p2.x + "," + p2.y + ")"); Point クラスのインスタンスを引数とするコン Point p3 = new Point(p2); ストラクタを使用します System.out.println("p3 の座標は (" + p3.x + "," + p3.y + ")"); 引数が異なる複数のコンストラクタを定義することを コンストラクタのオーバーロードといいます コンストラクタが複数あっても インスタンスが生成される時に実行されるのは 1 つだけです どのコンストラクタが実行されるかは引数の型と数によって決められます メソッドとコンストラクタを呼び出すための this キーワード this. メソッド名 ( 引数 ) と記述することで 自分自身 ( メソッドを定義しているクラス ) の別のメソッドを実行できます 次のように記述することで 自分自身のコンストラクタを実行できます this( 引数 ) ただし この記述が使えるのはコンストラクタの先頭行だけです 11

06-03/Point.java class Point { int x; int y; // x と y の値を 0 にする Point() { 引数が無いコンストラクタです this(0, 0); 2 つの整数値を引数とするコンストラクタを呼び出します // 引数で渡された Point 型の参照先のインスタンスと同じ座標値にする Point(Point p) { Point クラスのインスタンスを引数とするコンストラクタです this(p.x, p.y); 2 つの整数値を引数とするコンストラクタを呼び出します // 引数で渡された x と y の値を座標値に設定する Point(int x, int y) { 2 つの整数値を引数とするコンストラクタです this.x = x; this.y = y; 12

this キーワードの省略 メソッド中で参照される変数が インスタンス変数であることが自明である場合 this キーワードを省略できます class Point { int x; フィールドの x を参照します int y; // 現在の座標値を出力する フィールドの y を参照します void printposition() { System.out.println(" 座標値は (" + x + ", " + y + ") です "); this.x の this. を省略 this.y の this. を省略 主なキーワード オーバーロード : 引数が異なる 同じ名前のメソッドを定義すること または 引数が異なるコンストラクタを定義すること まとめ クラスには引数の異なる複数のコンストラクタを定義できます このことをコンストラクタのオーバーロードといいます クラスには引数の異なる同じ名前のメソッドを定義できます このことを メソッドのオーバーロードと言います オーバーロードされたコンストラクタとメソッドは 引数の数と種類によって どれが実行されるか決定されます this キーワードは そのキーワードが使われているインスタンス自身を指します 自明な this キーワードは省略できます 13