Javaの基本的な構文や用語を覚えたい
難しい条件分岐や繰り返し処理を理解したい
ここではJavaの基本となる変数の使い方やデータ型、条件分岐や繰り返し処理など、必須で覚えておくべき文法をまとめました。
紹介する文法はJavaの最も基本的な処理となりますので、使い方はしっかりと理解しておきましょう。
なお、Javaの記事については、こちらにまとめています。
Javaの環境構築
Javaプログラムを実行するには、開発環境を準備する必要があります。
Javaの開発環境はJavaのJDK(Java Development Kit )とEclipseや、総合開発環境「Pleiades All in One」をインストールする方法で準備できます。
Javaの環境構築について、詳しくは下記の記事をご覧ください。
Javaの基本文法
Javaの基本文法をコードつきで詳しく解説します。
- 変数
- データ型
- コメント
- 演算子
- 配列
- 条件分岐
- 繰り返し処理(for)
- 繰り返し処理(while)
- break
- クラス
- メソッド
それぞれの構文の、基本的な使い方を見ていきましょう。
データ型
データ型とはプログラム内での数字や文字など、格納するデータの種類を分類するときに指定するものです。Javaでは変数の宣言と同時に、データ型を指定します。
数値を扱うデータ型
データ型の種類 | 名称 | 消費メモリ | 範囲 |
byte | バイト型 | 1バイト | -128~127 |
short | 短整数型 | 2バイト | -32768~32767 |
int | 整数型 | 4バイト | -2147483648~ 2147483647 |
long | 長整数型 | 8バイト | -9223372036854775808~ 9223372036854775807 |
float | 単精度浮動小数点数型 | 4バイト | ±3.40282347E+38~ ±1.40239846E-45 |
double | 倍精度浮動小数点数型 | 8バイト | ±1.79769313486231570E+308~ ±4.94065645841246544E-324 |
その他のデータ型
データ型の種類 | 名称 | 消費メモリ | 説明 |
char | 文字型 | 2バイト | ¥u0000~¥uFFFF |
String | 文字列型 | 4バイト (64ビットJVMでは8バイト) | 参照型 |
boolean | ブーリアン型 | 1バイト | true(真)かfalse(偽)か |
データ型の使い方についてもっとよく知りたい方は、以下の記事で詳しく解説しています。
コメント
コメントは、プログラムの目的や機能などを正しく伝えるために使用します。コメントを記述しておくことで、他の人がプログラムを読んでも容易に内容を理解できます。
Javaで1行コメントする場合は、「//」のあとにコメントを記述するのがルールです。
// これはコメントです。 int num = 10;
複数行コメントする場合は「/*」と「*/」の中にコメントを記述します。
/* これは 複数行の コメントです。 */
コメントについてもっと詳しく知りたい方は、以下の記事も併せてご覧ください。
変数
Javaで変数を宣言するには、データ型を指定する必要があります。
変数の宣言
データ型名 変数名;
変数の宣言例
int num; String str;
変数の宣言と同時に値を代入する場合は、変数名のあとに「=」を使い、以下のように記述します。
int num = 10; String str = "test";
変数名に使える文字は以下のとおりです。
- アルファベット(大文字・小文字どちらもOK)
- アンダースコア(_)
- 数字(変数名の先頭を数字にすることはできないので注意)
変数の使い方についてもっとよく知りたい方は、以下の記事で詳しく解説しています。
演算子
演算子とは、プログラムで計算を行ったり比較したりする場合に使用する記号です。
以下のように、さまざまな種類があります。
演算子の種類
演算子の種類 | 記号 |
算術演算子 | +, -, *, /, % |
比較演算子 | >, >=, <, <=, ==, != |
代入演算子 | =, +=, -=, *=, /=, %= |
インクリメント・デクリメント演算子 | ++, –- |
論理演算子 | &, |, ^, !, ||, && |
シフト演算子 | <<, >> |
演算子の使い方について詳しく知りたい方は、以下の記事でそれぞれの使い方について詳しく解説しています。
配列
配列とは、同じ型の値を複数にまとめてひとつの変数として扱うことができるものです。
たとえば人数分のテストの点数を保持しておきたいとき、int型の変数をひとつずつ宣言して格納するのは面倒ですね。配列を使用すれば、1回の宣言でまとめて値を格納できます。
public class Main { public static void main(String[] args) { int[] score = {60, 20, 50, 70, 80}; System.out.println(score[0]); System.out.println(score[1]); System.out.println(score[2]); System.out.println(score[3]); System.out.println(score[4]); } }
60 20 50 70 80
配列の使い方については、以下の記事で詳しく解説しています。
条件分岐
条件分岐とは、条件によって処理を分岐させることです。
条件分岐では、if文を使います。
たとえば「あなたの年齢は20歳以上ですか?」という問いに対して、
①Yes(20歳以上)の場合は「あなたの年齢は20歳以上ですね!」と出力
②Noの場合は何も出力しない
といった具合に処理を分岐できます。
public class Main { public static void main(String[] args) throws Exception { int age = 25; // 条件分岐処理 if (age > 20) { System.out.println("あなたの年齢は20歳以上ですね!"); } else { System.out.println("あなたの年齢は20歳以上ではありません"); } } あなたの年齢は20歳以上ですね!
if文の使い方についてもっとよく知りたい方は、以下の記事で詳しく解説しています。
繰り返し処理(for)
同じ処理を繰り返し実行するには、「for」「while」などを使用します。
まずは、指定した回数の繰り返し処理を実行するfor文を見てみましょう。
public class Main { public static void main(String args[]) { // 処理を10回繰り返す for (int i = 0; i < 10; i++) { System.out.println("i = " + i); } } }
i = 0 i = 1 i = 2 i = 3 i = 4 i = 5 i = 6 i = 7 i = 8 i = 9
出力してみると、処理が10回繰り返されていることがわかります。
for文は「for (初期化式; 条件式; 変化式)」のように記述し、条件式の結果がtrueのときに{}のブロック内の処理が実行されます。
for文の使い方についてもっとよく知りたい方は、以下の記事で詳しく解説しています。
繰り返し処理(while)
while文は、条件式がtrueである限り処理を繰り返し実行します。
たとえば、変数iの値が5になるまで(iが5未満の間繰り返す)繰り返し処理を行いたい場合は、以下のように記述します。
public class Main { public static void main(String[] args) { int i = 0; while (i < 5) { System.out.println("i = " + i); i++; } } }
i = 0 i = 1 i = 2 i = 3 i = 4
while文の使い方についてもっとよく知りたい方は、以下の記事で詳しく解説しています。
continue
continue文は、ループ処理の途中で現在処理対象の要素に対する残りの処理をスキップして、次の要素に遷移するときに使います。複数のループ処理を行っている場合は、最も内側のひとつをスキップするのがルールです。
public class Main { public static void main(String args[]) { // 処理を10回繰り返す for (int i = 0; i < 10; i++) { // インデックスが5の場合はcontinueして次の要素へ遷移する if (i == 5) { continue; } System.out.println("i = " + i); } } }
i = 0 i = 1 i = 2 i = 3 i = 4 i = 6 i = 7 i = 8 i = 9
continueの使い方についてもっとよく知りたい方は、以下の記事で詳しく解説しています。
break
continue文は、ループ処理の途中で残りの処理をスキップして、ループを抜け出します。複数のループ処理を行っている場合は、最も内側のひとつが対象となります。
public class Main { public static void main(String args[]) { // 処理を10回繰り返す for (int i = 0; i < 10; i++) { // インデックスが5の場合はbreakしてループを終了する if (i == 5) { break; } System.out.println("i = " + i); } } }
i = 0 i = 1 i = 2 i = 3 i = 4
breakの使い方についてもっとよく知りたい方は、以下の記事で詳しく解説しています。
クラス
クラスとは、プログラムを実行するための処理をまとめたオブジェクトです。
クラスの中には、そのクラスだけで使用できる変数やいくつかの処理をまとめたメソッドが存在します。クラスはひな型のように、実際にプログラミングで使用するときオブジェクトを生成します。
// クラスを定義する class ClassSamurai { // メソッドの宣言・定義 void methodTestA(){ System.out.println("Call methodTestA"); } } public class Main { public static void main(String args[]) { // オブジェクトを生成 ClassSamurai samurai = new ClassSamurai(); // メソッド呼び出し samurai.methodTestA(); } } Call methodTestA
クラスの使い方についてもっとよく知りたい方は、以下の記事で詳しく解説しています。
メソッド
前述のとおり、メソッドはいくつかの処理をまとめたものです。メソッドをつくることで、同じ処理を複数の箇所から呼び出せます。
public class Main { public static void main(String args[]) { // addメソッド呼び出し int result1 = add(1, 2); System.out.println(result1); // addメソッド呼び出し int result2 = add(4, 6); System.out.println(result2); } // 引数1と引数2を合計した結果を返すメソッド public static int add(int num1, int num2) { return num1 + num2; } }
3 10
メソッドの使い方についてもっとよく知りたい方は、以下の記事で詳しく解説しています。
Javaをコンパイルする方法
プログラミング言語は、インタプリタ型言語とコンパイラ型言語という2種類に分けられます。
人間が書いたプログラムを、コンピュータが理解できる形式に変換しますよね。
インタプリタ型の場合、プログラムを書くたびに変換して実行します。コンパイラ型は、書いたプログラムをまとめて変換し実行するのが特徴です。
コンパイラ型言語でまとめて変換する処理を「コンパイル」といいます。Javaファイルをコンパイルするためには、下記の準備が必要です。
- JavaJDKをダウンロード・インストールする
- 環境変数を設定する
- パソコンを再起動する
準備が完了したら、コマンドプロンプトを起動しましょう。Javaファイルをコンパイルするためには、対象のJavaファイルが保存されているフォルダに、コマンドプロンプト上で移動します。
コマンドプロンプトでフォルダを移動するためには、以下のコマンドを実行します。
cd Javaファイルが保存されているフォルダのパス
Javaファイルが存在するフォルダに移動できたら、コンパイルしてみましょう。コンパイルは以下のコマンドを実行します。
javac Javaファイルの名前.java
以上の手順で、Javaをコンパイルすることができます。
Javaのコンパイルについて詳しく知りたい方は、以下の記事をお読みください。
Javaのオブジェクト指向について
オブジェクト指向は、RubyやC#などといったさまざまなプログラミング言語に取り入れられている普遍的な考え方です。この記事のテーマであるJavaも、オブジェクト指向を採用しています。
オブジェクト指向は、効率よく開発するためのひとつの考え方です。オブジェクト指向を理解するうえでは、以下の3つの考え方(概念)が重要になります。
- カプセル化(独立性)
- 継承(再利用性)
- ポリモーフィズム(拡張性)
これらの概念のうえで、独立性・再利用性・拡張性をもったプログラムを開発することでできるのが、オブジェクト指向プログラミングです。
オブジェクト指向について詳しく知りたい方は、以下の記事をお読みください。
インターフェース(interface)の使い方
Javaには、インターフェース(interface)というものがあります。インターフェース(interface)には、定数とメソッド定義の宣言をします。
インタフェースのメソッドは抽象メソッドと同様に、インタフェースを実装したクラスでメソッドを実装します。なおひとつのクラスに対して、複数のインターフェースを宣言することが可能です。
インターフェースは、下記のようなメリットがあります。
- 後からメソッドの内容を記述できるため保守性や拡張性の向上が期待できる
- 実装すべきメソッドが明確になるため生産性の向上が期待できる
- メソッドの実装漏れを防ぐことができる
インターフェースについて詳しく知りたい方は、以下の記事をお読みください。
ファイルを読み込む方法
Javaには、ファイルを操作するための機能が用意されています。
FileReaderクラスは、ファイル内のテキストを1文字ずつ読み込んでいきます。FileReaderクラスでファイルを読み込むとき指定したファイルが存在しなかった場合は、「FileNotFoundException」という例外が発生します。
あらかじめ、ファイルの存在有無を確認しましょう。
FileInputStreamクラスは、ファイル内のデータをバイトストリーミングで読み込みます。
またJavaのプログラムで使用する定数や既定値などは、プロパティファイルという特別なファイルで管理します。Javaには、このプロパティファイルを操作するResourceBundleクラスやPropertiesクラスも用意されています。
Javaでファイルを読み込む方法については、こちらの記事でも詳しく解説しているので、併せてご覧ください。
FileInputStreamでファイルを読み込む方法
FileInputStreamクラスでファイルを読み込む方法について、具体的に説明します。
実はコンピューターの種類によってUTF-8やShift-JISなど、使っている文字コードは異なります。FileInputStreamクラスでは、読むファイルのコードを指定して、文字をエンコードをしながらファイルを読み込みます。
import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception { // c:\\Test.txt を読み込む try (FileInputStream fIStream= new FileInputStream("c:\\Test.txt")) { InputStreamReader iSReader = new InputStreamReader(fIStream, "UTF-8"); int data; while ((data = iSReader.read()) != -1) { System.out.println(data); } } catch (IOException e) { e.printStackTrace(); } } }
FileInputStreamでファイルを読み込む方法については、こちらの記事でも詳しく解説しています。
ラムダ式の使い方
ラムダ式は、Java8から追加された新しい記述方式です。C#、F#、Scala、Schemeといった関数型言語と呼ばれるプログラミング言語に採用されています。
ラムダ式を簡単に説明すると「メソッドを変数と同様に扱う記述様式」といえます。
ラムダ式を使用すると既存のプログラムより少ない記述でプログラミングできたり、配列などの要素の集合を処理したり場合にStream APIといわれるものを利用できる点がメリットです。
ラムダ式については、こちらの記事でも詳しく解説しています。
まとめ
この記事では、Javaの基本文法をまとめて紹介しました。基本文法を理解しておけばさまざまな操作を行えるので、使い方はしっかりと覚えておきましょう。
もし基本文法の使い方を忘れてしまったら、この記事を思い出してくださいね。
この記事のおさらい
以下の手順が必要です。
1.Javaをダウンロード・インストールする。
2.環境変数を設定する。
3.パソコンを再起動する。
4.コマンドプロンプトでJavaファイルが保存されているフォルダへ移動する。
5.コマンドプロンプトで「Javac」コマンドを用いてコンパイルする。
以下のメリットがあります。
・後からメソッドの内容を記述できるため、保守性や拡張性の向上が期待できる
・実装すべきメソッドが明確になるため、生産性の向上が期待できる
・メソッドの実装漏れを防ぐことができる
Java8から追加された「メソッドを変数と同様に扱う記述様式」です。