Java
初心者

はじめに

今回はインプレス社が出版しているスッキリわかるJava入門について必要な部分をかいつまんで説明し、疑問点とそこについての個人的な解釈を記述いたします。今回は1章から5章辺りを説明いたします

javaについて

まずjava とは、プログラミング言語の中でも比較的オブジェクト指向に近い言語である。オブジェクト指向については後述いたします。
javaのプログラムを実行するには大まかに以下の手順行います。
1.ソースコードの作成
2.コンパイル
3.実行

ここで注目していただきたいのがコンパイルの部分です。コンパイル時にexeファイルが生成されることが多いが、javaではclassファイルと言われるバイトコードが生成されます。このclassファイルは人間が読めないマシン語に変換されたソースコードが記載されています。バイナリコードがあればどの環境でもプログラムが動かせるようになります。そしてそのコードを読み込むためにJVM を使用します。JVMとバイナリコードがあればプログラムが動くわけです。

大まかなプログラム書き方

Example.java
public class Example
    publuc static void main(String args[])
      
    …
        

上記のようにまずクラス名の定義、次にメソッドの定義を行う。
メインメソッドが記載されているクラスのクラス名は作成したjavaファイル名と同じ名前にする。そしてクラス名はアルファベット大文字で始めなければならない。

式・演算子について

変数の値を足す際に、++という表記で値に足し込む事ができます。しかし
○++と++○では計算処理に差異が出てしまうので注意してください。
○++ではある一巡の処理を行ったあとに足し込む処理が行われます。
++○では一巡の処理を行う前に値を足し込んでから処理を行います。
この違いは後述されるfor文などの繰り返し処理で影響が出てきます。

コード書く際、多少のデータ型の違いは内部で変換を行ってくれます。
小さな型から大きな型に変換する場合は内部的に変換をしますが、逆の場合は明示的にキャスト演算子等を使用し型変換、もしくは明示的に型の変換を行う必要があるので注意してください。

if文とfor文

ここではif文とfor文について説明します。

if文について

if文で条件を記述し、処理を分岐させる際、関係演算子使用して比較をします。式が等価の場合は==を使用します。ここでもし関係演算子を=1つにした場合、その演算子は代入を意味してしまうので注意する必要があります。
文字列の比較をする場合、文字列==文字列で式を構築すると必ずfalseを返却するので注意してください。文字列格納するのはString 型ですがString型の文字列を2つ作るとそれぞれ別のアドレスが割り当てられてString ○○ ==String ○○で表現すると各要素は中の値ではなくアドレスを指します。なのでfalse になります。なので文字列を比較する際は○○.equals()を使用してください。

if文の数が増えれば増えるほどコードがややこしくなりエラー箇所が判別しにくくなることや、想定と違った結果が出てしまう場合があるので分岐が多い場合はswitch case文を用いる。

for文について

繰り返しの構文にはfor文、while文、 do while文がある。プログラムでどの繰り返し構文を使用するかの判断基準は
-繰り返しの回数が決まっている
-繰り返しの回数が決められていない
の2つである。
基本的に前者の場合はfor文を使用するのが望ましいです。
後者の場合はwhile 文を使用するのが望ましいです。
for文は最初に初期値、for文を抜ける条件(回数)、どのように繰り返すかを記述する。例えば10この要素配列の中で全部の合計を求めるなどの場合は繰り返す数を指定できるが、ある文字列の中から指定文字を探すといった場合繰り返す周期等を最初から決めて行うのは難しいです。while文は終了条件を○回ではなく○○が見つかるまでや、文字列が終端でない限りなどの表現ができます。
この違いを理解してプログラムを作成すると作りやすいと思います。

配列

配列を作成する際は要素の開始する場所が0から始まることに注意する。

メソッド

メソッドとは、他の言語で言う関数と同じ意味です。引数と戻り値を指定してその中に該当の処理を記述します。
メインで宣言した変数をメソッドで使用したい場合は引数として渡さないと使用できないので注意する。

複数メソッドで類似した処理を実装する際、オーバーロードを使用するといいです。メソッド定義内の引数の型を変更することで同じメソッド名で宣言することができます。オーバーロードを使用すると他の人が複数のメソッドをいちいち覚える必要がなくなります。

メソッドで配列を引数に渡す際、価渡しと参照渡しで元の値に反映されるものと反映されないものがあるので注意する。

所感

今回他の言語少し学んだ状態の私が本書を読んだ所、大まかな差は見られなかった。しかし次回以降記載するクラスについてや、String型についてはやはり理解しにくいしこりのようなものが残る。ここを解決するにはオブジェクト指向についての知識と理解度を深める必要がある。

参考文献

スッキリわかるJava
(インプレス社 中山清喬 国本大悟 著)