Javaプログラミングの基礎【現役エンジニアがわかりやすく解説】
Javaプログラミングの基礎を知りたい方に。
この記事を読まれている方は、
- Javaのプログラミングがどんなものか知りたい
- Java言語の簡単な書き方が知りたい
- Javaが使われる場面を知りたい
おそらくこのように考えている方が多いと思います。
この記事を書いている私は、
プログラミング未経験から転職を果たした現役のWeb系エンジニアです。
エンジニア歴は3年ですが、本業とは別にフリーランスの副業で月10万円ほど、多いときで20万円ほどの収入があります。
この記事では、現役のエンジニアが、Javaプログラミングの基礎を解説しています。
プログラミング言語のJavaの特徴
Javaはプログラミング言語のひとつで、静的型付けのコンパイル言語で、オブジェクト指向型の言語です。
静的型付けとは、簡単に言うと、データをプログラム実行前に文字列型や数値型、論理型などにきちんと分けることです。
コンパイル言語とは、プログラムの実行前に、必ず開発者の方でコンパイラーを使って構文チェックなどをしたうえで中間言語に変換しないと動作しない言語のことです。
スクリプト言語では、プログラム実行時にコンパイルしていると言えるので、処理速度がコンパイル言語に比べて遅くなります。速度が求められる処理では、コンパイル言語が使用されることが原則です。
オブジェクト指向型言語とは、オブジェクトという概念を持つ言語のことで、簡単に言うと、データ構造として、配列や構造体に加えて、オブジェクト(クラス)があるということです。
オブジェクトのおかげで、ソースコードのメンテナンスがしやすかったり、機能の流用ができます。
したがって、Javaは速度が求められる場面であったり、言い方に語弊があるかもしれませんが、まともなプログラミングをする際に、採用される場合の多い言語です。
Javaは、様々なプラットフォームで動作するアプリ系、Androidで動作するスマホアプリ、Java Servletを使用したWeb系のアプリを作ることができますので、どのような開発においても、選択肢に入れられるのが魅力的なポイントです。
Javaの用途
Javaは静的型付けのコンパイル言語ということもあり、速度が求められる環境で開発言語に採用されるケースが多いです。
例えば、PHPとの処理速度の差は6倍以上の差があります。逆にC言語と比較すると、C言語よりJavaの方が、1.5倍程度速度が遅くなります。原始的な言語であればあるほど、通常処理が単純なため、速度が速くなります。
静的型付けということから、開発者としては「まともな」コーディングをしている気がするため、お気に入りの言語となっている方もいます。
また、Javaはアプリ系とWeb系、おまけにAndroidのスマホアプリとしても動作するので、Javaはどこにでも使えることも、人気の理由の一つになっています。
日本ではJavaの開発はEclipseという統合開発環境(IDE)を利用する場合が多いです。IDEでは便利なプラグインもあり、プロジェクトの管理やデバッグなどが行いやすくなります。
Webで使う場合はJSPと組み合わせて開発することが多く、WebサーバーはApache Tomcatなどを利用することでプログラムを動作させることができます。
Androidで利用する場合は、Android StudioというIDEで開発することがほぼ確定となり、言語も厳密にはAndroid Javaとなっています。
つまり、AndroidというOSはJavaで作られているのです。
知らなかったでしょう?Androidはオープンソースのため、ソースも公開されていますので、興味があればぜひ見てみて下さい。
Javaの書き方
ここでは簡単に書き方を少しだけ紹介します。実際に始める気になったら、ぜひ参考書などの教材を参考にして、試してみて下さい。
Hello World!を画面に出力する
まずお決まりの「Hello World!」という文字列を画面に出力する方法から。
public class YourClass{ public static void main(String[] args){ System.out.println("Hello World!!"); } }
これで出力することができます。
C言語と同じように、main関数というものを作らないと動かないというわけです。
この中に必要な処理を記述していきます。Androidの場合はまた違ってきますので注意です。(あっちはonCreate関数の中です。)
Javaはコンパイル言語なので、このプログラムを実際に動かすためには、javacコマンドでコンパイルをしてからでないと動かませんので、気をつけて下さい。
変数宣言と分岐処理
次は少し踏み込んで、main関数の中で変数宣言と分岐処理をしてみます。
public class YourClass{ public static void main(String[] args){ int age = 19; if (age < 20) { System.out.println("未成年"); } else { System.out.println("成人"); } } }
上記の例では、まずageという数値型の変数を作り、その中に19という数値を入れています。
次にageが20未満であれば”未成年”という文字列を、それ以外であれば”成人”という文字列を出力するような分岐処理をしています。
配列と繰返処理
続いて、配列の使い方と繰返処理について、解説します。
ここでは配列を作って、以下のようにデータを出力することにしましょう。
佐藤,田中,小林
これを出力するコードは以下です。
public class YourClass{ public static void main(String[] args){ String[] students = {"佐藤", "田中", "小林"}; int studentsCnt = students.length; for (int i = 0; i < studentsCnt; i++) { System.out.print(students[i]); if ( i < (studentsCnt-1) ) {System.out.print(",");} } } }
上記の例では、まず文字列型の配列studentsに「佐藤」「田中」「小林」の3つの文字列を格納しています。
次に、配列studentsの要素の数をカウントし、その値を数値型の変数であるstudentsCntに格納します。
その後、カウンタ変数iを0に初期セットし、studentsCntに到達するまでループでiを1ずつ増やしてまわしていきます。その際に、print関数を使い、配列studentsのi番目の要素の値を出力し、最後の要素以外、その後に「,(カンマ)」を出力しています。
構造体の取り扱い
最後に構造体の取り扱い方法について解説します。
ここではエクセルのようなデータを作って、以下のようにデータを出力することにしましょう。
名前:佐藤,性別:男性 名前:田中,性別:女性 名前:小林,性別:女性
これを出力するコードは以下です。
import java.util.HashMap; import java.util.Map; public class YourClass{ public static void main(String[] args){ Map<String, String> first_row = new HashMap<String, String>(){{ put("A", "佐藤"); put("B", "男性"); }}; Map<String, String> second_row = new HashMap<String, String>(){{ put("A", "田中"); put("B", "女性"); }}; Map<String, String> third_row = new HashMap<String, String>(){{ put("A", "小林"); put("B", "女性"); }}; Map[] excel_data = {first_row, second_row, third_row}; int rowCnt = excel_data.length; for (int i = 0; i < rowCnt; i++) { System.out.print("名前:"+excel_data[i].get("A")); System.out.print(","); System.out.print("性別:"+excel_data[i].get("B")); if ( i < (rowCnt-1) ) {System.out.print("\n");} } } }
上記の例では、まずJavaにおける連想配列の型であるMap型のデータを作り、Aというキー(列)に名前を、Bのキーに性別の値を入れていきます。
3つ作ったら、それら全てをexcel_dataというMap型の配列に入れます。
次に、配列excel_dataの要素の数をカウントし、その値を数値型の変数であるrowCntに格納します。
その後、カウンタ変数iを0に初期セットし、rowCntに到達するまでループでiを1ずつ増やしてまわしていきます。その際に、print関数を使い、配列excel_dataのi番目の要素の中のA列とB列の値を出力し、最後の要素以外、その後に「\n(改行コード)」を出力しています。
補足ですが、連想配列を作る際に、MapとHashMapのクラスを使うため、最初の2行でそれらをインポートをしています。
まとめ:Javaはどこでも使える便利な言語
Javaの良さを簡単にまとめると、以下のとおりです。
- まともな言語 ← 静的型付け
- 処理速度が速い ← コンパイル言語
- 用途が多い ← クロスプラットフォーム
つまり、堅実で処理速度が速く、何にでも使えるプログラミング言語というわけです。
歴史はまだ30年にも満たない言語ですが、企業が開発した言語なので、信頼性が高いです。
もともとはサン・マイクロシステムズ社が開発した言語ですが、現在はオラクル社に移行されています。
今後も急激に衰退するなどいったことはなく、比較的安定して長く使える言語なのではないかと思います。
例えば、Androidではkotlinという言語でも開発できますが、こちらはJavaと100%互換なので、Javaが衰退したわけではないですよね。
Javaは資格もありますので、学習してみたいなという方がいましたら、取得を目指してみるのもありです。
静的型付けのコンパイル言語なので、PHPなどとは異なり、まともに覚えなければいけないことが多いと思いますので、独学は少し難しいかもしれません。
独学でできなさそうな方は、プログラミングスクールも手段の一つに入れると良いと思います。
現役エンジニアがオススメするプログラミングスクール3選【無料体験あり】
「一からきちんと学べるオススメのプログラミングスクールを知りたい。プログラミングの効率的な学び方を知りたい」←こういった疑問に答えます。本記事内容:まずはどのプログラミング言語を選ぶべきか/現役エンジニアがオススメするプログラミングスクール3選/プログラミングスクールにプラスして行うべきこと