Microsystemsからリリースされたプログラミング言語です。Microsystemsを買収したOracleが管理をしています。オブジェクト指向プログラミングをサポートし、プラットフォームに依存しないため様々な環境で動作します。プログラムの記述方法はC/C++から多くを引き継いでいます。世界中の様々な現場で利用され人気の高いプログラミング言語です。ちなみにAndroidのスマホアプリもJavaがメインの開発言語です。子供に人気のゲームであるMinecraftもJavaで作られていたりと、いろいろなアプリやサービスでJavaを活用しています。JDK)を使って開発します。JDKをインストールすれば実行環境が入っているのでJREを別途インストールする必要はありません。JRE)が入っていればJavaは動作します。Java開発に必要なコンパイラやライブラリなどがないので、JDKをインストールしましょう。DOWNLOADボタンをクリックして各プラットフォームのJDKを選択する画面に移動します。JDKのライセンスは一昔前と比べて大きく変わっています。ライセンスの変更によって、Oracleの公式サイトからダウンロードするJDKはサポートが有償化しています。現在では通称OracleJDKとOpenJDK/AdoptOpenJDKが存在します。OpenJDKはGPLライセンスで配布されています。OracleJDKもJavaを個人的に利用するには無償を継続しているので、学習目的でOracleJDKをインストールして利用するのは無償で行えます。OracleJDKの最新ダウンロードはそのままできますが、古いバージョンについてはOracleプロファイルを作成(要するにOracleのアカウント作成)する必要があります。Oracleプロファイルの作成を避けたい方はOpenJDKをインストールして利用してください。Ageement」をクリックしてから、Mac用とWindows用それぞれのJDKを選んでダウンロードします。Mac用Windows用Macへインストールダウンロードしたイメージファイルをダブルクリックでマウントするとpkgファイルが表示されます。pkgファイルをダブルクリックしてインストールを実行してください。あとは特に設定はなく画面の指示に従ってインストールを完了してください。Macでは手動でシステム環境変数の設定も必要なくインストール直後からJavaが実行できます。javaコマンドでバージョン確認してみましょう。-versionコマンドでインストールしたJavaのバージョンが表示されれば完了です。Windowsへインストールダウンロードしたインストールファイルを実行してインストールしてください。Windows版も特にインストールでの設定はなく画面の指示に従ってインストールを完了してください。インストールが完了したらWindowsの場合はシステム環境変数にJAVA_HOMEとPATHの設定をします。Javaのシステム環境変数を設定(Windows)Windowsの場合は、インストール後にJavaコマンドを使うためにPATH変数をシステム環境変数に設定する必要があります。アプリケーションによっては必要な、JAVA_HOME変数もシステム環境変数に設定します。以下はWindows10で説明します。下部にある「システム環境変数」の新規ボタンをクリックします。「システム変数の編集」画面で変数名:JAVA_HOME、変数値:JDKのインストールパスを入力します。インストールパスはJDKのインストールされた場所をエクスプローラーで開いてパス表示欄からコピペするといいでしょう。次にPATHを設定します。システム環境変数欄からPathを選択し、編集ボタンを押します。環境変数の編集画面で新規ボタンを押して、「%JAVA_HOME%¥bin」を入力してエンターキーを押します。これでPATHの設定は完了です。Windowsを再起動して、シェルでjavaコマンドを使ってバージョン確認してみましょう。-versionコマンドでインストールしたJavaのバージョンが表示されればインストールは完了です。Javaの実行JavaはPythonのようにインタプリタ方式で動作するプログラミング言語ですが、C言語のようにコンパイルが必要です。理由は、プラットフォームに依存することなく、且つより速く動作させるために考えられました。)Javaでプログラムを書いたらjavacコマンドを使ってコンパイルします。すると「.class」ファイルが生成されます。Javaで書いたプログラムを実行するには、このclassファイルを指定します。Sample.javaコンパイルすると、「Sample.class」というファイルが生成されます。Samleとコマンドを入力すれば実行します。(*指定するときに拡張子「.class」を省略します。)JDK11からコンパイルせずとも他のスクリプト言語と同じようにjavaコマンドでソースコードを指定して実行できるようになっています。ここではJavaの特徴としてコンパイルするがインタープリターで実行するところを説明します。記述方法と特徴Javaプログラムの記述方法はほぼC言語の記述方法を引き継いでいます。・変数を定義する時はデータ型宣言をします。x;・クラス、メソッド、制御文は{}で囲みます。処理;}・コマンド文は;で終わります。10;System.out.println(x);Javaはクラスベースのオブジェクト指向プログラミング言語です。すべてのプログラムはclassでまとめられています。}}このようなクラスが複数構成されてプログラムが動作します。クラス内ではデータを定義し処理を記述します。この処理の部分をメソッドといいます。args)」がメソッドです。argsこのmainメソッドはアプリケーション実行の入り口となるメソッドで、プログラム本体に必ず記述するメソッドです。この場合Sampleクラスで作ったアプリを実行すると最初に必ずmainメソッドが実行されます。JavaプログラムJavaはコンパイルするため、ソースコードはまずファイルに出力します。ここからはエディタを使ってプログラムを書いていきましょう。World」を表示するプログラムを書いてみましょう。(*これを標準出力といいます。)表示するための処理は「System.out.println()」というメソッドを使います。これは引数で渡した値を標準出力するメソッドです。World");Javaの文字列は全てダブルクォーテーション(“)で囲んで定義します。これを先程のSampleクラスに書いてみましょう。}}エディタでプログラムが書けたら、Sample.javaというファイル名で保存します。※保存するファイル名は必ずクラス名と同じでなくてはなりません。Javaは表記するクラス名・メソッド名・変数名(フィールド名)の全ては大文字と小文字が区別されます。(例:sampleとSampleは違う名前です)今どきのエディタは初期値で文字コードの設定がUTF-8となっていますが、Windowsで使うエディタはShift-JISになっているものもあります。UTF-8でファイル出力しないと動作しないプログラムもあるのでエディタの文字コード設定はUTF-8にしておきましょう。Sample.javaファイルが作成できたら、このファイルをコンパイルします。Sample.javaエラーなく終了できたら、そのフォルダにsample.classファイルが生成されています。それがJavaアプリの本体です。それを実行してみましょう。World」と表示されましたか?Javaのクラス名・メソッド名・変数名(フィールド名)の表記方法はおおまかなルールがあります。errMsgJavaも他の言語と同じようにコメント行を記述できます。Javaのコメント行は「//」を記述します。複数行をコメントに指定することもできます。その場合は「/*」と「*/」でコメントする部分を囲みます。コメント行/*複数行コメントコメント1コメント2*/パッケージJavaのソースファイル(.java)には複数のクラスを記述してもコンパイルできます。コンパイルするとクラスごとに.classファイルが生成されます。基本的には、1ファイルに1クラスを記述します。理由はいろいろあると思いますが、特に違うファイルに同じ名前のクラス定義があると衝突するため避けるためと、クラスの階層構造をより単純に分かりやすくするためかと思います。世の中にはJavaのクラスファイルは多く出回り、ライブラリとして利用するケースも増えます。プログラムの規模が大きくなりクラスが増えてくると、クラス名が衝突する確率も高くなり、クラスを整理する必要があります。Javaはフォルダ階層と同じように、クラスを階層化するパッケージというのがあります。Javaプログラムのほとんどはパッケージが定義されています。パッケージ宣言されていないクラスはデフォルトパッケージとして取り扱われます。{}これはフォルダ(パッケージ)にファイル(クラス)があるイメージです。上記の場合は「jp.hogehoge.sample」パッケージにSampleクラスがあるということになります。通常はパッケージ名のフォルダにソースファイルを置きます。Sample.javaクラス名の衝突を避けるため通常はパッケージ名に所有しているインターネットドメイン名を逆さまにした名前を付けます。インターネットドメインは唯一の名前だからです。変数(フィールド)Javaの変数は全てデータ型を指定して宣言します。\uFFFF*char型は1文字のUnicode文字を格納できます。boolean1bittrue、falseまたクラス型変数も使えます。これはクラスのインスタンスを格納する変数で、クラス名を宣言します。Japan");変数にはメンバ変数とローカル変数があります。メンバ変数はクラス直下に宣言し、クラスの他のメソッドからも参照できます。ローカル変数はメソッド直下に宣言し、宣言したメソッド内でしか参照できません。}}メンバ変数にはクラス変数とインスタンス変数があります。クラス変数はnewによりインスタンスを作成しなくても参照できる変数です。インスタンスに関係なく同じ変数を参照することになります。「static」を付けて宣言します。インスタンス変数はインスタンスを生成しないと参照できません。}}このサンプルの表示結果は以下です。Test変数に「private」修飾子を記述するとカプセル化することができます。すると、そのクラス内でしか直接アクセスできない変数となります。この場合、変数はクラス内だけでアクセスし、その値をセットしたり取得できるように関数を用意します。変数に格納されている値を計算したり、期待通りの値かどうかを評価したり、メソッドの結果を評価するときに使われます。し算”+”、引き算”-“、掛け算”*”、割り算”/”を行うときの演算子です。割り算したときの余りを求める演算子”%”です。aの結果は1(ture)です。この例は、bの結果が0の場合はiは3で割り切れる値なので、iは3の倍数であることがわかります。変数の値を1増加”++”したり、1減算”–“する演算子です。変数の前に記述するのと後に記述するので意味が変わります。aの結果はiを1増加した値です。aの結果はiと同じです。aにiを代入したあとでiを1増加します。比較するときの演算子です。条件文とともに使います。xとyが等しければ実行します。xとyが等しくなければ実行します。比較の判定は「真偽値」で行います。y」が成立するときは「真(true)」、そうでなければ「偽(false)」という値となります。これはどのプログラミング言語でも必ず登場するので知っておきましょう。関数の戻り値として型定義されていることも多く、プログラミング言語によっては「boolean型」として明確に型定義をします。isActive(引数)といった関数があるとして、この関数では(引数)で渡されたものが有効かどうか?を判定する処理を行い、戻り値として真(true)か偽(false)を返します。関数ではこうやって利用されることが多いです。xがy以上であれば実行します。World"を表示します。これは条件をより簡潔に表現するのに使う演算子です。条件文とともに使われます。“、「〜もしくは〜」であることを判定する場合は論理和”||”、「〜でない」ことを判定する場合は否定”!”を使います。xが7で、かつyが3であるときに実行します。xが5でないか、もしくはyが10のときに実行します。func処理の結果がfalse(偽)の場合に実行します。true(真)とfalse(偽)は真偽値といって、ここでは処理結果が”1′′ならばtrue(真)、”0′′ならばfalse(偽)と理解しておくといいでしょう。上記の例の場合だと、「func処理結果が”0′′ならば実行する」ということになります。(func())と記述します。否定”!”は真偽値を反転させて評価します。配列Javaで扱う配列は以下のように宣言します。宣言した配列を使用する時は、配列を生成します。String[10];また初期値を代入して宣言時に生成することもできます。"Five"};Javaの配列は生成後に配列の長さを変更することができません。配列の各要素を扱うときは配列のインデックスを指定します。"Two"が表示されます。条件文Javaの条件文はif文とswitch文があります。式には真偽値を判定する式を記述します。この場合、結果がtrueの場合はif文内を処理し、falseの場合はelse文内を処理します。処理内容;}複数のif文を記述することもできます。xとyが同じなら処理を実行}また、3項演算式を書くこともできます。long)の値だけが使えます。合致したcaseの値があった場合はその処理内容を実行しbreakにてswitch文から抜け出します。どのcaseの値にも当てはまらない場合は、default内の処理が実行されます。while文、for文があります。式には真偽値を判定する式を記述します。結果がtrueの間はwhile文内の繰り返し処理を実行します。while文は一度でもdo文内の処理を実行したい場合に使用します。式には真偽値を判定する式を記述します。結果がtrueの場合再びdo文の処理を実行します。y);for文for文内の処理を実行する前に初期化を行います。条件がtrueの場合はfor文内の処理を実行します。処理実行後に更新の記述内容を実行します。条件の判定に戻り、trueの場合はfor文内の処理を実行します。これを繰り返し、条件がfalseになればfor文を抜けます。iが100より小さい間は処理を繰り返す}FizzBuzz問題プログラムFizzBuzzは海外の言葉遊びで、スタートして1から順に数字を発言していくのですが、3で割り切れる場合はFizz、5で割り切れる場合はBuzz、両方で割り切れる場合はFizzBuzzと発言します。これをプログラミングしてみましょう。プログラム全体の動作を以下のようにします。1から順に100までカウントする数える数字を1行ずつ画面に表示する3で割り切れる数字のときは画面に「Fizz」を表示する5で割り切れる数字のときは画面に「Buzz」を表示する3と5で割り切れる数字のときは画面に「FizzBuzz」を表示するfor文を使って繰り返し処理を行うプログラムを考えてみましょう。数字をカウントしながら、その数字を画面に表示するので、表示処理を100回繰り返すプログラムを記述します。{}処理を100回繰り返すプログラムをfor文で書くとこのようになります。101;」はi変数が101より小さい間処理をする条件となります。1から100まで数えるので、i変数が100のときも画面に表示します。「i++」はfor文内の処理の最後に実行します。この場合は画面に表示したあとにiがインクリメントされます。System.out.println();関数でコンソール画面に表示します。System.out.println(i);}次に、3で割り切れるときは「Fizz」、5で割り切れるときは「Buzz」、両方で割り切れるときは「FizzBuzz」、それ以外は数字を表示するようにプログラムを書きます。{}「%」は割り切れると「0」を返す演算子です。3と5で割り切れるかどうかを「==」で評価しています。各条件文にそれぞれの文字列を表示する関数を記述し、FizzBuzzクラスに定義します。FizzBuzz.java作成されたFizzBuzz.classを実行します。FizzBuzz実行するとコンソールに以下のように表示されましたか?12Fizz4BuzzFizz78FizzBuzz11Fizz1314FizzBuzz...せっかくJavaプログラムを書いているので、クラスとメソッドを活用した記述方法に変更してみましょう。for文内の処理を別のクラスとメソッドに分けて、for文内ではそのメソッドを呼び出して実行するように修正します。分けたメソッドは引数で渡した値に合わせた”FIzz”、”Buzz”、”FizzBuzz”のいずれか文字列を返す機能を持ちます。いずれも当てはまらない場合は数値を文字にして返します。プログラムの本体は以下のようになります。}}次に、文字列を返すクラスとメソッドは以下のようになります。3と5の倍数でない時は、数値を文字にして返さないといけないので、Integer.toString()関数を使って文字に変換して返しています。}}このときFizzBuzz.javaをコンパイルしてできるクラスは、FizzBuzz.classとValue.classです。実行して正しくコンソールに表示されたでしょうか。プログラムはパズルを組み立てたり、なぞなぞを解いたりするのに感覚的に似ていませんか?「はじめてのプログラミング」記事で少し触れましたが、パズルやなぞなぞが好きな人はプログラミングの習得が比較的速いかも知れません。プログラミングは試行錯誤したあとに完成させることで達成感があります。これをきっかけにJavaを学習してみてください。CodeAidについて。