Your SlideShare is downloading. ×
Javaプログラミング入門【第2回】
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Javaプログラミング入門【第2回】

921
views

Published on

Javaプログラミング入門2回目 …

Javaプログラミング入門2回目
変数と型
if文
swich文
for文
while文
String型


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
921
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Javaプログラミング入門【第2 回】
  • 2. 今日の内容       変数と型 if文 swich文 for文 while文 String型
  • 3. 変数とは   何かを入れておく箱のようなもの 変数という箱に対してできること     変数を作る(変数宣言) 値を入れる(代入) 値を見る(参照) 変数名は数字で始めることは出来ない
  • 4. 変数を作る(変数宣言)  int x;   int型のxという変数宣言 変数の型  その箱は何を入れる箱なのか?
  • 5. 値を入れる(代入)  x = 4; 箱に何かを入れること  変数に値を入れる場合は、必ず変数は左辺に書 くこと =(イコール)演算子 x = 4; x = 3; xの値は? 変数とメモリ  『変数』は、コンピュータのメモリを抽象化し たものと言える   
  • 6. 値を見る(参照) • 変数の値 ▫ 変数の中に入っているもの • 変数を参照する ▫ 変数の中に入っているものを見ること ▫ System.out.println(x);  xの値が表示される
  • 7. 変数の初期化 • 初期化 ▫ 変数宣言と同時に値を定める  int x = 3;  3という値で初期化されたint型変数x  int x;  未定義の変数
  • 8. 代入演算子 • 代入演算子 ▫ x = 3;  x←3; という意味 • 値が等しいかどうかを調べる(等価) ▫ x == y
  • 9. 演習1 • 変数x=15,y=32を宣言し、2つの変数を加算し て、2で除算したプログラムを書きなさい
  • 10. 浮動小数点数 • 小数計算する場合はdouble型を使用する ▫ double x = 15.0;
  • 11. 演習2 • 演習1で宣言した変数をdouble型に変更して計算 結果を表示しないさい
  • 12. 文字型変数の初期化 • 文字型を(char)を生成する場合は、『‟‟(シング ルクォート)』で囲む ▫ char a = „a‟; • 文字列を生成する場合は『””(ダブルクォー ト)』で囲む • 文字と文字列は別物 • Javaのchar型はUnicodeという文字コード
  • 13. Java言語の型 • 基本型(primitive type/プリミティブタイプ) ▫ 論理値及び数値を表す型 • 参照型(reference type/リファレンスタイプ) ▫ クラス、インターフェース、配列やenum型を表 す型
  • 14. 基本型の一覧 型名 意味 boolean 論理型(trueまたはfalse) char 整数型(文字型)(0以上65535以下) 符号なし16ビット(Unicode) byte 整数型(-128以上127以下) 符号付き8ビット short 整数型(-32768以上32767以下) 符号付き16ビット int 整数型(-2147483648以上2147483647以下) 符号付き32ビット long 整数型(-9223372036854775808以上9223372036854775807以下) 符号 付き64ビット float 単精度浮動小数点数型 double 倍精度浮動小数点数型
  • 15. 名前と年齢を尋ねるプログラム import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class HowOldAreYou { public static void main(String[] args) { System.out.println("あなたの名前は?"); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { String line = reader.readLine(); System.out.println(line + "さん、こんにちは"); System.out.println("年齢は?"); line = reader.readLine(); int age = Integer.parseInt(line); System.out.println("今、" + age + "歳とすると、20年後は" + (age + 20) + "歳ですね"); } catch (IOException e) { System.out.println(e); } catch (NumberFormatException e) { System.out.println("年齢が正しくありません"); } } }
  • 16. 実行 • Eclipseで実行し、コンソール入力に文字や数字 を入力してEnterキーを押してください。 • プログラムが入力するのを待っている状態のこ とを入力待ちの状態と言う
  • 17. 解説 • readLineメソッド ▫ String line = reader.readLine(); ▫ 文字列を1行分取得するメソッド • readerは? ▫ BufferedReader型の変数 ▫ 参照型のクラス ▫ データの読み込みを行うためのクラス • new ▫ newの後にクラス名と()を付けると、そのクラスに属 するオブジェクト生成を行う →これをインスタンス生成と言う
  • 18. 解説 • String ▫ 文字列を表すクラス • Integer.parseInt ▫ 文字列を整数(Integerクラス)に変換するメソッド
  • 19. intとInteger • int型は32ビットの整数を表す基本型 • Integerクラスはint型を利用しやすくするための クラス ▫ int型に関連した機能を持っている • 基本型に対応したこのようなクラスをラッパー (wrapper)クラスと言う ▫ Boolean, Byte, Character, Double, Float, Integer, Long, Shortなどが他にある
  • 20. 例外処理/import • try~catch ▫ エラー処理を行う機能 • import ▫ クラスライブラリを利用する際に使用する
  • 21. コメント • 一行コメント ▫ // (スラッシュ・スラッシュ) • 通常コメント ▫ /* ~*/ (スラッシュ・アスタリスク) • ドキュメンテーションコメント ▫ /** ~*/ (スラッシュ・アスタリスク) ▫ JDKのJavadocというツールを使って自動的にド キュメントを生成する機能
  • 22. 演習3 • 2人の名前と年齢を入力するとその人たちの年 齢の平均を表示するプログラムを記述しなさい。 なお、平均値は小数点以下まで表示すること
  • 23. if文 • 日本語の『もしも…ならば』 if (条件式) { 条件が成り立つ時の処理 } • 条件式は必ずboolean値(true/false)の値になる
  • 24. 比較演算子 Java 数学 意味 p == 50 p = 50 pが50に等しいならtrue、それ以外はfalse p != 50 p ≠ 50 pが50に等しくないならtrue、それ以外はfalse p >= 50 p ≧ 50 pが50以上であればtrue、それ以外はfalse p <= 50 p ≦ 50 pが50以下であればtrue、それ以外はfalse p > 50 p > 50 pが50より大きいならtrue、それ以外はfalse p < 50 p < 50 pが50より小さいならtrue、それ以外false
  • 25. if ~else文 • 日本語の『もしも…ならば、それ以外は』 If (条件式) { 条件式に当てはまった時の処理 } else { 条件式に当てはまらなかった時の処理 }
  • 26. 演習4 • 降水確率を入力すると、傘を持って行った方が いいか教えてくれるプログラムを記述しなさい。 傘を持って行った方が良い場合は、降水確率が 50%以上の場合とする(50%は含む)
  • 27. if文の連鎖 • if文は連鎖で書ける if (条件式1) { 条件式1を満たす時の処理 } else if (条件式2) { 条件式2を満たす時の処理 } else { 条件式1、2共に当てはまらない時の処理 }
  • 28. 演習5 • 演習4のプログラムで、降水確率が0~100%以 外の数値を入力された場合、『降水確率は0~ 100の間です』という警告を表示するプログラ ムを追記しなさい。
  • 29. 論理演算子『||(または)』 • 2つの条件を結びつけ、その2つのうちどちらか 一方でも(両方でも可)成り立っていればよい • 論理和、OR条件という
  • 30. 論理演算子『%%(かつ)』 • 2つの条件式を結びつけ、その2つのどちらも成 り立つ • 論理積、And条件と言う
  • 31. 演習6 • 『今、飲みたいのは何ですか?』とコンソール 表示し、1が入力された場合は、『オレンジ ジュースです』、2が入力された場合は『コー ラです』、3が入力された場合は、『どちらで もありません』と表示するプログラムを記述し なさい
  • 32. switch文 • 多くの選択肢から1つを選んで実行する場合、 switch文を使用するとプログラムが見やすくなる switch (式) { case 定数式1: case1の時の処理 break; case 定数式2: case2の時の処理 break; default: } case1、2共に当てはまらない時の処理 break;
  • 33. switch文 • Switch文を実行する時、()でくくられた式が計 算される。 ▫ これを『式の評価』という • break ▫ 処理の中断を表す • 文字(char)による式の評価も出来る
  • 34. 定数式 • 『コンパイルした時点で値が決まる』のが定数 式 ▫ 定数式:1+2+3 • x+2+3は定数式ではない ▫ xの値が評価する時点で式の値が変化するため
  • 35. 補足:String型のswitch文 • Java7からString型でもswitch文が使用できるよ うになった ▫ case “orange”:  定数式にString型(文字列)を使用できる
  • 36. 演習7 • 演習6で記述したプログラムをswitch文に書き換 えなさい
  • 37. 演習8 • はじめに、『0~6の数値を入力しなさい。対応 した曜日を表示します』と表示し、コンソール 入力から入力された数値を入力すると、その数 字に応じて『日曜日』…『土曜日』と表示して 終了するプログラムを記述しなさい。また、0 ~6以外の数値を入力された場合は、その旨を 警告するようにしなさい。
  • 38. for文 • 条件を満たす間繰り返す for (初期化; 条件式; 次の一歩) { 繰り返す処理 }
  • 39. for文で0から3までを表示する public class Count3 { public static void main(String[] args) { for (int i = 0; i < 4; i++) { System.out.println(i); } System.out.println(“end”); } }
  • 40. 解説 • 初期化:int i = 0; ▫ 繰り返しの準備。繰り返し前に一度だけ実行され る • 条件式:i < 4; ▫ 繰り返しを続ける条件 • 次の一歩:i++; ▫ 繰り返す処理が1回終わった後に必ず実行される 処理
  • 41. 演習9 • 1から9までの2乗と3乗を表示するプログラムを 記述しなさい
  • 42. 二重のfor文 • for文の繰り返し範囲の中にfor文を記述することも 出来る public class DrawGraph { public static void main(String[] args) { for (int i =0; i < 10; i++) { System.out.println(i + “:”); for (int j = 0; j < i; j++) { System.out.print (“*”); } } } } System.out.println(“”);
  • 43. 変数の有効範囲(スコープ) pubic static void main(String[] args) { for (int i = 0; i < 4; i++) { System.out.println(i); } System.out.println(“i = ” + i); ↑iは有効範囲外なのでコンパイルエラー } • iはfor文の初期化部分で宣言されているため、 括弧の外では使用できない
  • 44. 演習10 • 九九を表示するプログラムをfor文を用いて記述 しなさい
  • 45. while文 • 条件文が条件を満たす限り、ある処理を繰り返 して行う while(条件式) { 繰り返す処理 } • 条件式はboolean型の式(true/false)
  • 46. 0から3までを表示する Public class While1 { public static void main(String[] args) { int i = 0; while (i < 4) { System.out.println(i); i++; } System.out.println(“end”); } }
  • 47. 入力をそのまま出力する import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class CopryDisplay { public static void main(String[] args) { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { String line = reader.readLine(); while (line != null) { System.out.println(line); line = reader.readLine(); } } catch (IOException e) { System.out.println(e); } } }
  • 48. 解説 • readLineは標準入力から文字列を取得するメソ ッド • readLineは、入力の終わりに到達した場合は nullを返却する • line = reader.readLine(); ▫ 標準入力から次の1行を読み込む
  • 49. 複雑な条件式 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class CopyOfCopryDisplay2 { public static void main(String[] args) { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { System.out.println(e); } } }
  • 50. 解説 • 条件式(line = reader.readLine()) != null ▫ 入力された文字を変数lineに代入し、その値を nullと比較する
  • 51. 大文字を小文字に変換する public static void main(String[] args) { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { String line; while ((line = reader.readLine()) != null) { String s = line.toLowerCase(); System.out.println(s); } } catch (IOException e) { System.out.println(e); } }
  • 52. toLowerCaseメソッド • java.lang.Stringクラスのメソッド • 文字列中の大文字を全て小文字に変換した新し い文字列を作る • 大文字以外の時は何もしない • line変数を書き換えていないことに注意
  • 53. Stringクラス、StringBufferクラス、 StringBuilderクラス • 文字列を表すStringクラスは、書き換えること が出来ない文字列 • 内容を書き換えることが出来るのは、 java.lang.StringBufferクラス、および java.lang.StringBuilderクラスになる
  • 54. Stringクラスにあるメソッドの一部 メソッド 動作 String replace(char oldChar, char newChar) 文字列のoldCharをすべてnewCharに置換 した新しい文字列を返却する String substring(int beginIndex) 文字列のbeginIndex番目の文字以降からな る新しい文字列を返却する String substring(int beginIndex, int endIndex) 文字列のbegineIndex番目~endIndex-1番 目の文字からなる新しい文字列を返却する String toLowerCase() 文字列中の大文字を全て小文字に変換した 新しい文字列を返却する String toString() 文字列自体を返却する String toUpperCase() 文字列中の小文字を全て大文字に変換した 新しい文字列を返却する String trim() 文字列の両端からホワイトスペースを取り 除いた新しい文字列を返却する
  • 55. 演習11 • 標準入力された文字列から、『。』を『.(ピリ オド)』に、『、』を『,(カンマ)』に変換する句 読点変換プログラムを記述しなさい。
  • 56. Stringオブジェクトの管理とガーベッ ジコレクション • 大文字を小文字に変換するプログラムでは変数 はいくつ使用されていたか? • while文が回る度に、Stringオブジェクトはその 分生成される • オブジェクトを作る=コンピューター上のメモ リ領域を確保する→いつかはメモリがなくなる • メモリがなくなってくると、JVMは使われてい ないオブジェクトを集めて、自動的にメモリを あける→ガーベッジコレクションと言う
  • 57. オブジェクトを『参照』する • String型などのオブジェクトの型は参照型と言 われる • 参照型の変数にはオブジェクトが直接代入され ているわけではなく、メモリのどこかに存在す るオブジェクトを指し示す値(メモリのアドレ ス、ポインタ、インデックス、インジケータな どとも呼ばれれる)が代入されている
  • 58. オブジェクトを『参照』する • String word = “Hello!”; 変数word Hello!
  • 59. オブジェクトを『参照』する • word = “こんにちは”; 変数word 文字列Helloは書き変わらない Hello! →ガーベッジ(ごみ)になった 変数wordの値は 変わる こんにちは
  • 60. オブジェクトを『参照』する • String newWord = word; 変数word 変数wordとnewWordが 同じ文字列を指す 変数newWord こんにちは
  • 61. オブジェクトを『参照』する • word = null; 変数word 変数wordは何も参照していない こんにちは 変数newWord
  • 62. 文字列検索関連のStringクラスのメ ソッド • char charAt(int index) • boolean equals(Object object), boolean equalsIgnoreCase(String string) • int compareTo(String anotherString) • boolean startsWith(String prefix, int index), boolean startsWith(String prefix) • boolean endWith(String suffix) • int indexOf(ch ch), int lastIndexOf(int ch) • int indexOf(String s), int lastIndexOf(String s) • 詳しくは『java api string』でググる(http://eclass.center.yuge.ac.jp/jdk_docs/ja/api/java/lang/ String.html)
  • 63. 多重定義(オーバーロード) • 複数のメソッドが同じ名前を使うことをメソッ ドの多重定義(オーバーロード)と呼ぶ • メリット:プログラマが覚えなければならない メソッドの名前の数を減らすことが出来る • コンパイラは引数の方と個数によって、実際に 使われているメソッドを認識する • 引数の方と個数のことをメソッドのシグニチャ と呼ぶ
  • 64. 文字列の一致はequalsを使う • 変数xとyが等しいかどうかを調べる時 • 変数xとyが基本型の場合 ▫ x == y • 変数xとyが参照型の場合 ▫ x.equals(y)
  • 65. 演習12 • 以下のプログラムをwhile文で書き換えなさい public class DrawGraph { public static void main(String[] args) { for (int i =0; i < 10; i++) { System.out.println(i + “:”); for (int j = 0; j < i; j++) { System.out.print (“*”); } System.out.println(“”); } } }
  • 66. do-while文 • 繰り返す処理を1回必ず実行する →処理を行ってから、条件式を判定する Do { 繰り返す処理 } while (条件式);
  • 67. break文 • forやwhileの繰り返しを中断する仕組みにbreak 文がある while (…) { … if (条件式) { break; } … } ←while文を抜ける
  • 68. 二重ループとbreak文 • forやwhileが二重になっている場合、breakで中断 するのは内側のループのみ while (…) { while (…) { if (条件式) { break; } … } … } 内側のwhile文のみ中断
  • 69. continue文 • ループをスキップするのがcontinue文 while (…) { … if (条件式) { continue; } … } whileの残りの処理をスキップし、 次のループに入る
  • 70. 演習13 • 次のスライドのプログラムContinueTest.javaは 何をするプログラムか?また、 ContinueTest.javaをcontinueを使わない形式に 書き換えなさい
  • 71. ContinueTest.java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class ContinueTest { public static void main(String[] args) { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { String line; while ((line = reader.readLine()) != null) { if (!line.endsWith("{") && !line.endsWith("}")) { continue; } System.out.println(line); } } catch (IOException e) { System.out.println(e); } } }
  • 72. 参考文献 • Java言語 プログラミングレッスン[第3版]上 ▫ 結城浩[著]