Javaの基礎③ (javaとjdkの違い/順次・分岐・繰り返し)

Java

Javaの基礎の第三弾!
過去の投稿をみていない方は、ぜひそちらからご覧ください。

javaとjdkの違いって?

ざっくり言うと、Java は「プログラミング言語」で、JDK は「Javaでプログラムを書くための道具一式」です。

Javaとは

  • プログラミング言語そのもの
  • 文法やルール(構文)、型、キーワードなどが定義されている
  • 「Javaで書かれたコード」は .java ファイル
  • Java言語そのものは「道具」じゃないので、単体では動かせない

JDK(Java Development Kit)とは

  • Javaで開発するための道具セット
  • 以下が含まれています
    1. Javaコンパイラ (javac) → .java.class(バイトコード)に変換
    2. Java実行環境(JRE: Java Runtime Environment)→ .class を動かす
    3. 標準ライブラリ(文字列操作、ファイル入出力、ネットワークなど)
    4. 開発用ツール(デバッガ、アーカイブツールなど)

関係を図にすると

Java言語(ルール・文法)

JDK(開発ツール一式)
├─ コンパイラ(javac)
├─ 実行環境(JRE)
└─ 標準ライブラリ
  • Java → 「何語で書くか」(英語・日本語みたいな位置づけ)
  • JDK → 「その言語を使うためのペンとノートと辞書のセット」

補足

  • プログラムを動かすだけなら JRE(Java Runtime Environment)だけでOK
  • プログラムを作るなら JDK が必要(JREもJDKに含まれている)
  • JRE(Java Runtime Environment)
    → Javaプログラムを動かすための「環境」そのもの
    → Java仮想マシン(JVM)、Javaの標準クラスライブラリ、その他必要な部品を含む
  • .jar ファイル
    → Javaのプログラムをまとめた「実行可能パッケージ」
    → 中身はコンパイルされた .class ファイルやリソース(画像、設定ファイルなど)がZIP形式で詰められている

Javaの代表的な命令実行文

丸暗記をするというよりは、どういうものがあるのかを知っておくことのほうが重要で、実現したいことがある時に、調べ直せるようにしておくことをお勧めします!

出力系

命令文 / クラス役割
System.out.println("文字列");コンソールに文字列や数値を表示(改行あり)
System.out.print("文字列");改行なしで表示

入力系

命令文 / クラス役割
import java.util.Scanner;標準入力用のクラスを使う準備
Scanner sc = new Scanner(System.in);キーボード入力受付の準備
sc.next();1単語を文字列として取得
sc.nextLine();1行全体を文字列として取得
sc.nextInt();整数を取得
sc.nextDouble();小数を取得

変数・データ型

命令文 / 構文役割
int num = 10;整数型の変数宣言と代入
double pi = 3.14;小数型の変数宣言と代入
String name = "Java";文字列型の変数宣言と代入
final int MAX = 100;定数の宣言

条件分岐

命令文 / 構文役割
if (条件) { ... }条件がtrueのときに実行
if ... else ...条件がfalseのとき別処理
switch (値) { case 値1: ... break; ... }値ごとに処理を分ける

繰り返し

命令文 / 構文役割
for (int i = 0; i < n; i++) { ... }回数を指定して繰り返し
while (条件) { ... }条件がtrueの間繰り返し
do { ... } while (条件);1回は必ず実行してから条件判定

配列

命令文 / 構文役割
int[] nums = new int[5];長さ5の整数配列を作成
nums[0] = 10;要素に値を代入
System.out.println(nums.length);配列の長さを取得

その他便利系

命令文 / クラス役割
Math.max(a, b);大きい方の値を返す
Math.min(a, b);小さい方の値を返す
Math.random();0.0以上1.0未満の乱数
String.toUpperCase();文字列を大文字に変換
String.length();文字列の長さを取得

順次・分岐・繰り返し

プログラミング全般で大事な3つの基本制御の考え方として、順次(じゅんじ)・分岐(ぶんき)・繰り返し(くりかえし)があります。

順次

  • プログラムの命令を上から下へ順番に1つずつ実行すること。
  • 例えば、レシピの手順を順番にこなしていくイメージ。
例)「起きる」→「朝ごはん」→「学校へ行く」の順に実行される
System.out.println("1. 起きる");
System.out.println("2. 朝ごはんを食べる");
System.out.println("3. 学校へ行く");

分岐

  • 条件によって実行する処理を切り替えること。
  • 「もし○○なら〜、そうでなければ〜」という判断をプログラムで行う。
例)age が18以上なら「お酒が飲めます」を表示、それ以外は「飲めません」を表示する
int age = 20;
if (age >= 18) {
System.out.println("お酒が飲めます");
} else {
System.out.println("お酒はまだ飲めません");
}

繰り返し

  • 同じ処理を何度も繰り返すこと。
  • 「10回ジャンプする」「リストの中身全部を処理する」など。
例)1回目、2回目、3回目のジャンプを順番に表示
for (int i = 1; i <= 3; i++) {
System.out.println(i + "回目のジャンプ!");
}

構造化定理(Structured Programming Theorem)
プログラミングにおける重要な理論のひとつで、「すべてのプログラムは、順次(Sequential)、選択(Selection)、反復(Iteration)の3つの基本的な制御構造だけを使って書くことができる」という定理です。1970年代にエドガー・ダイクストラらによって提唱されました。

複雑なgoto文(無条件ジャンプ)を使わず、これら3つの構造だけでプログラムを書くことで、プログラムの可読性や保守性が高まります。
※「順次、分岐、繰り返し」は、日常的にわかりやすい言い方であり、これがまさに構造化定理の3つの基本構造です。

タイトルとURLをコピーしました