プロフェッショナル×つながる×メディア
CREATIVE VILLAGE

Java入門 – 開発環境からサンプルコード実行まで解説します

JavaはWebだけでなく基幹システム開発からデスクトップアプリ、Androidアプリ開発まで広く活用されている、汎用性が高いオブジェクト指向のプログラミング言語です。企業の開発案件で使用する機会も多く、Javaを扱えるとエンジニアとしてIT系への就職で有利な場面も多々あります。プログラミング言語としてのシェア率も高く世界中で活用されているJavaは、プログラミング言語を学びたいと考えているなら習得しておいて損のない言語といえます。

ここではJavaの開発環境のインストールと構築方法から簡単なサンプルコードの解説まで、プログラミング初心者に向けて紹介していきます。

インストールと環境設定

大まかなインストールの流れ

Javaで開発を行うために必要なソフトウェアをまとめたものをJDKと呼びます。Javaを開発しているOracle社が無償で提供しており、ライセンス条項を遵守する限り誰でも利用できます。2019年4月16日にライセンスが変更されているため、詳細についてはOracle社のWebサイトを参照してください。

Javaの開発環境を構築するには、このJDKをインストールする必要があります。JDKのファイルはWindowsはexe、Macはdmg形式での配布があるので、圧縮ファイルを解凍してインストールする必要はありません。なおJDKは、Windowsではインストール直後の状態ではすぐには使用できず、環境変数と呼ばれる変数の設定が必要になります。
環境変数とはWindowsやMacOSなどのOSが使用する共通の変数のことで、Javaが正常に動作するように、インストールしたファイルの位置や構成などJDKに関する設定を行います。
環境変数は2種類あり、それぞれ「ユーザー環境変数」と「システム環境変数」です。JDKを正しく動作させるためにはOSのシステム設定で「システム環境変数」を変更・設定します。

Windowsにインストール

公式ページよりインストーラーをダウンロードします。2019年10月現在の最新はJava Platform (JDK) 13になります。
「DOWNLOAD」をクリックするとダウンロードページに遷移するので、「Accept License Agreement」をクリックし、リンクを有効にしてWindows用のインストーラーを選択します。

クリックして画像を拡大

画面の指示に従ってインストールを進めていきます。
インストール後、環境変数を設定します。環境変数を設定するために、システムのプロパティ画面を表示します。
※スタートメニュー>システム>システムの詳細設定>詳細設定>環境変数

クリックして画像を拡大

ここで「Path」と「JAVA_HOME」の2つの環境変数を設定、追加します。

Pathの設定

まずPathをクリックし、編集を押して画面を開きます。「新規」をクリックし、JDKをインストールしたパスを入力します。今回のインストール先はCドライブなので、「C:\Program Files\Java\jdk-13.0.1\bin」と入力します。(ご自身の環境に合わせてパスを変更してください)

JAVA_HOMEの設定

次にシステム環境変数に戻り、「新規」をクリックして新しいシステム変数「JAVA_HOME」を追加します。変数値には「C:\Program Files\Java\jdk-13.0.1\」を入力します。

クリックして画像を拡大

どちらの変数もインストールしたフォルダによって変わるため、必ずJDKをインストールしたパスを指定してください。(ご自身の環境に合わせてパスを変更してください)

インストール確認

最後にスタートメニューの検索にcmdと入力してコマンドプロンプトを起動し、以下のコマンドを入力します。

java -version

インストールされているJavaのバージョンが表示されれば、インストールは完了しています。

Macにインストール

Windowsと同様に公式ページからインストーラーをダウンロードします。
「DOWNLOAD」をクリックするとダウンロードページに遷移するので、「Accept License Agreement」をクリックし、リンクを有効にしてMacOS用のインストーラーを選択します。インストーラーの起動後は、画面の指示に従ってインストールを進めます。インストール先など変更がなければ特に行うことはありません。
Macの場合、変数の設定はインストーラーが行うため、インストール後の環境設定は不要です。

インストール確認
でターミナルを起動します。
※アプリケーション>ユーティリティ>ターミナル

ターミナルに以下のコマンドを入力します。

java -version

ターミナルの画面にJavaのバージョンが表示されていれば、インストールは完了です。”

Javaの基本

インストールが完了しましたので、ここからはJavaの書き方や、基本的な構造についてみていきましょう。

演算子

計算や数値を比較する演算子は大きく6種類あります。

演算子 説明
算術 +, -, *, /, %
四則演算などを行います
比較 >, >=, <, <=, ==, !=
2つ以上の数値を比較します
代入 =, +=, -=, *=, /=, %=
変数に値を代入するときに使用します、算術演算子と同様の計算をしながら代入も行います
インクリメント・デクリメント ++, –-
数値を1増やしたり減らしたりします
条件演算子・三項演算子 &, |, ^, !, ||, &&
条件によって処理を分けることができます
シフト演算子 <<, >>
対象の値の各ビットを右または左へシフトします、大きな数値変化に使用します

データ型

データの基本型としては8種類あります。なお、Javaでは多くのプログラミング言語にある配列型といったものはなく、Stringクラスとして提供されていますので注意が必要です。

データ型 説明
byte 値の範囲:-128~127
1バイト符号付き整数
short 値の範囲:-32768~32767
2バイト符号付き整数
int 値の範囲:-2147483648~2147483647
4バイト符号付き整数
long 値の範囲:-9223372036854775808~9223372036854775807
8バイト符号付き整数
float 4バイト浮動小数点数
double 8バイト浮動小数点数
char 文字列
boolean true または false

条件分岐

Javaの条件分岐にはifとswichがあります。どちらも条件に対して評価を行い、結果によって異なる分岐を行います。

if

ifは一般的なプログラミングと同様の条件分岐です。定義された条件に対して合致するか否かを判断し、falesであった場合はブロックの処理を行わずに次の行へと移動します。else ifやelseと組み合わせることで複数の結果に分岐することができます。elseはifに合致しなかった結果をすべて受けて処理します。
判定が複雑な場合でも書きやすい反面、switchと比べると可読性が下がったり、処理速度が遅くなるといわれていたりします。

サンプルでは10度以下なら「寒い」、30度以上で「暑い」、11~29度で「快適」と判定し、それぞれメッセージを表示します。

/* if文による条件分岐 */
// 温度
int temperature = 35;

// 温度が10度以下なら寒い
if (temperature <= 10) { System.out.println(“寒いです。”); // 30度以上なら暑い } else if (temperature >= 30) {
System.out.println(“暑いです。”);
// 11度〜29度なら快適
} else {
System.out.println(“快適です。”);
}

switch

swichも同じく条件分岐を行いますが、可読性が高く処理も早いといわれています。
サンプルは信号機の色を識別し、アラートを表示する条件式です。「緑」または「青」の複数条件に対し「進め」という結果を表示しています。

/* switch文による条件分岐 */
// 信号機
String signal = “黃”;
switch (signal) {
// 赤ならとまれ
case “赤”:
System.out.println(“止まれ”);
break;
// 黃なら注意して進め
case “黃”:
System.out.println(“注意して進め”);
break;
// 青か緑なら進め
// 複数条件も指定可能
case “青”:
case “緑”:
System.out.println(“進め”);
break;
// どれにも該当しない場合
default:
System.out.println(“色の種類が不正です。”);
break;
}

ループ

Javaのループにはwhileとforの2つのループ式があります。同じ処理や条件を少しずつ変化させながら指定回数処理を繰り返す場合、何度も同じようなコードを書くよりもfor文やwhile文を使うことで簡潔にプログラムを記述することができ、メンテナンス性も向上します。

while

whileは条件が満たされている間、何度でも同じ処理を繰り返す目的で利用されます。
条件式を評価し、trueだった場合{}内に記述された命令を実行します。処理が終了するたびに条件式を評価し、trueだった場合はブロック内の命令を実行します。条件式の評価がfalseになるまで処理をループし続け、falseになった時点でwhile文を終了します。
サンプルでは1回処理が行われるごとにiに1が追加され、10以上になると処理を終了します。

/* while文によるループ */
int i = 0;
// iが10未満ならループを続ける
// つまりiが10以上になるとループを抜ける
while (i < 10) {
System.out.println(i);
i++;
}

for

forは指定した回数だけ処理を繰り返します。命令文の中でループの変数の初期化、条件、追加処理をまとめて記述できるため、シンプルに表記できます。
サンプルでは1回処理が行われるごとにiに1が追加され、10以上になると処理を抜けます。

/* for文によるループ */
// while文のサンプルと同じ動作になる。
// ループに変数の初期化、ループの条件、1ループごとの追加処理をまとめて記述できる
for (int i = 0; i < 10; i++) {
System.out.println(i);
}

拡張for文であるforeachは、配列やコレクションのような複数の要素を持っているものから、すべての要素に含まれる値を順に取り出して処理していきます。
サンプルではAlice、Bob、Charlieというユーザー名を一人ずつ取り出し、表示していきます。

/* 拡張for文によるループ */
// 配列などのコレクションを1つずつ処理する。
// 他言語のforeach文に相当する

String users[] = {“Alice”, “Bob”, “Charlie”};
for (String user : users) {
System.out.println(user);
}

クラスとメソッド

クラスとはなにかをさせたいブロックに対して付けるラベルのようなものです。メソッドはクラスの主要な要素の1つで、クラスが持つ機能(関数)になります。
クラス宣言は「class クラス名{}」で行います。サンプルでは犬クラスとして「class Dog{}」を定義しました。
今回は犬クラスの中に、様々なメソッドを設定しています。
メソッドは「修飾子 戻り値のデータ型 メソッド名(引数1, 引数2, …){}」で定義します。修飾子はアクセスの制限を示すアクセス修飾子とそれ以外の定義をする修飾子が存在します。また、戻り値はメソッドの呼び出し元に返す値です。なにも返さないときはvoidと定義します。

/**
* 犬クラス
*/
class Dog {
// 犬の名前
private String name;
// 犬の名前をクラスの外から参照するためのメソッド
public String getName() {
return this.name;
}

// 犬の鳴き声
private String cry;
// 犬の鳴き声を変更するためのメソッド
public void setCry(String c) {
this.cry = c;
}

// コンストラクタ
// 名前だけを入力するか、名前と鳴き声を入力することができる
// 名前だけを入力した場合、鳴き声は”ワンワン”になる
public Dog(String name) {
this.name = name;
this.cry = “ワンワン”;
}
public Dog(String name, String cry) {
this.name = name;
this.cry = cry;
}

// 鳴き声を表示するメソッド
public void bark() {
System.out.println(String.format(“%sの鳴き声: %s “, this.name, this.cry));
}
}

上記のクラスを定義後、以下のように呼び出します。

/* 犬クラスの呼び出しサンプル */
// 名前だけを渡しているので鳴き声は”ワンワン”になる
Dog pochi = new Dog(“ポチ”);
pochi.bark(); // ポチの鳴き声: ワンワン
pochi.setCry(“ニャーニャー”); // 鳴き声を変更
pochi.bark(); // ポチの鳴き声: ニャーニャー

// 名前と鳴き声を指定している
Dog taro = new Dog(“タロー”, “バウバウ”);
taro.bark(); // タローの鳴き声: バウバウ

コメントの書き方

Javaのコメントは3種類あります。
1行だけの場合、行頭に//と入力します。//以降はすべてコメントとして扱われるため、コードの途中になんらかのメモを残したいときなどにも使用できます。
複数行の場合、/*と*/の間に記入します。
このほかにドキュメンテーションコメントというコメントがあります。/**と*/の間に記入されるドキュメンテーションコメントはJavadocというコマンドによってhtml形式のドキュメントとして出力ができます。

実行の仕方

Javaはコンパイル言語なので、コードを書いてもそのままでは実行できません。実行するためにはコンパイルが必要になります。
「コンパイル」は人間が書いたプログラムを機械がわかるように翻訳する作業で、コンパイルしてはじめてコンピュータが実行できるようになります。「コンパイラ」はコンパイルを行うプログラムで、ほとんどのコンパイラは実行環境のコンピュータに合わせてコードを機械語に変換してくれます。

Javaのコンパイルはコマンドプロンプトまたはターミナルから行います。コマンドプロンプトの画面でコンパイルを実行したいファイルがある場所へ移動し、

javac Javaのファイル名

と入力します。
コンパイルが完了すると指定したフォルダに「ファイル名.class」が生成されています。

Hello Worldを書いてみよう

それでは、プログラミング言語の手始めとしてHelloWorldを出力してみましょう。
以下のサンプルをテキストファイルにコピーし、拡張子をjavaで保存します。

class HelloWorld {
public static void main(String[] args){
System.out.println(“Hello, World!”);
}
}

次にコマンドプロンプトまたはターミナルを起動して、次のコマンドでHelloWorld.javaを保存したフォルダに移動します。

cd E:\Javatest

※E:\Javatest は今回サンプルを作成したパスになります。ご自身の環境に合わせて変更してください。

続いてコンパイルを実行します。

javac HelloWorld.java

HelloWorld.classがフォルダに生成されていればコンパイルは成功です。
早速、次のコマンドで実行してみましょう。

java HelloWorld

画面に「Hello, World!」と表示されたら成功です。

少し複雑なJavaサンプル

最後に少し複雑な命令文を実行してみましょう。先ほど説明した条件分岐とループを使って、計算結果によって表示される文字が変わる命令文です。

/**
* 1から100までの数値を標準出力に表示する。ただし、
* 3の倍数なら数値の代わりに Fizz
* 5の倍数なら数値の代わりに Buzz
* 3の倍数かつ5の倍数なら数値の代わりに FizzBuzz
* を出力する。
*/
class FizzBuzz {
public static void main(String[] args){
// 1から100までの数でループ
for (int i = 1; i <= 100; i++) {
// 3の倍数の場合
if (i % 3 == 0) {
// 3の倍数かつ5の倍数の場合
if (i % 5 == 0) {
System.out.println(“FizzBuzz”);
// 3の倍数だが5の倍数ではない場合
} else {
System.out.println(“Fizz”);
}
// 3の倍数ではなく5の倍数の場合
} else if (i % 5 == 0) {
System.out.println(“Buzz”);
// どれにも該当しない場合
} else {
System.out.println(i);
}
}
}
}

ここまでのおさらいで、クラス定義とforの条件、ifの分岐をまず見ていきましょう。
FizzBuzzと定義されたクラスのメソッドにはforで1から100まで100回のループが定義されています。
さらにifの条件分岐は2段階になっています。今回、3の倍数でFizz、5の倍数でBuzz、3と5の公倍数でFizzBuzzと表示させます。
そこでまず、最初のifで3の倍数であるか判定します。3の倍数であれば次のifである5の倍数であるかを判定します。両方に当てはまれば3と5の公倍数なのでFizzBuzzと出力しています。
5の倍数ではなかった場合、3の倍数なのでFizzと出力されます。
3の倍数ではなかった場合、次のelse ifで5の倍数であるか判定します。5の倍数だった場合はBuzzと出力し、該当しなかった場合はなにも表示せずに現在のiの値=実行回数を出力します。
最後にSystem.out.printlnを解説します。System.out.printlnは、Javaのプログラムから標準出力に値を出力するための命令文です。
ifによって分岐した条件から出力された判定の結果を、System.out.printlnで標準出力に出力し、画面に表示します。

汎用性の高いJavaでプログラミングをはじめてみては?


Javaは非常に汎用性が高く、また1つのコードで様々なプラットフォームに対応させることができる優れたプログラミング言語です。
その汎用性と柔軟性から、Webからデスクトップアプリ、さらにIoT、組み込みソフトウェア、基幹システム開発まで幅広い分野で採用されているため、今後も需要が高く身につけておいて間違いのない言語といえます。独学でもある程度の開発が行えるほど多くの解説が公開され、活発なフォーラムもあるので、はじめてのプログラミングをJavaで始めてみてはいかがでしょうか。


著者情報
株式会社クリーク・アンド・リバー社
メディア・セクション
CREATIVE VILLAGEは、クリーク・アンド・リバー社※が運営する クリエイティブ業界に特化した情報を扱うメディアです。 クリエイターへのインタビューやコラム、各種セミナー、イベントなど、 ここでしか知ることのできない情報をお届けします。
監修
CREATIVE VILLAGE編集部

キャリアアップセミナー

未経験からWebクリエイターを目指したい。
でも、何からはじめていいかわからない。
CREATIVE VILLEGEでは、あなたの「なりたい!」を応援するキャリアアップセミナーを開催中。受講料は無料です。
Webクリエイター向けセミナー一覧
より豊かなクリエイター人生を!
様々な知見・発見を得てください。
CREATIVE VILLAGEは、

クリエイターの生涯価値向上のため、
有益な各種コンテンツを発信しています。
BACK TO TOP クリエイター求人を探す