独学Java 一日目

この記事は私がペンを握ってノートに書く行為が嫌いであるために独学でJavaを勉強するにあたってノート替わりとして使用するものである。なおプログラミングに関しては全くのド素人である。開始日は2020 9/22

使用している学習本は「すっきりわかるJava入門第三版」

 

ノート

・プログラミング開発のステップは1ソースコードの作成2コンパイル3実行

ソースコードの作成 Javaの定める文法に従いPCに命令を記述。人が読める状態のプログラムをソースコード、またはソースという。ソースを書き込んだファイルのことをソースファイルといい、拡張子は「.java」にする決まりになっている。

 

コンパイル ソースファイルをクラスファイルに変換する処理のこと。クラスファイルの拡張子は「.class」を使い、ソースコードの各命令をPCが実行しやすいように変換したバイトコードが詰まっている。バイトコードは1と0が複雑に並んでいるもの(二進数だろうか)。なおコンパイルコンパイラというソフトウェアを用いるがこの際にソースコードの文法チェックも行われる。ここで誤りがあるとエラーをはきだす。

 

実行 バイトコードではまだ実行には移せないためインタプリタと呼ばれるソフトウェアにバイトコードの変換と実行を依頼する。インタプリタは内部にJVMJava Virtal Machine)という仕組みを持っており、クラスファイル内のバイトコードを読み込みながら、CPUが解釈できるマシンコードに翻訳し、CPUに送って処理実行される。

 

・次の開発環境については使用している本が提供してくれているサービスの説明が主であるため省略

 

・プログラムの骨格

Javaのソースには{…}が多く使われる。波かっこに囲まれた部分をブロックという。外側をクラスブロック、内側をメソッドブロックと呼びJavaのソースは必ずこれらのブロックによる二重構造を持つ。主に記述するのはメソッドブロック(内側)であり外側はあまり変わらないお決まりのパターン。

ただしお決まりのパターンとはいっても全く同じではなく「public class」の直後にこのプログラムの名前を指定する単語を書く。正式にはクラス名という。

 

・ソースファイルの名前

ソースファイルを保存する際、ファイル名は「クラス名.java」でなくてはならない

例:public class MyDiary{..

           public static void main (String args) {

                ︙

   }

       }

この場合ファイル名はMyDiary.javaになる

 

Javaプログラムの書き始め方

1どのようなプログラムを作りたいか考え

2プログラムの名前を決める(クラス名)

3「クラス名.java」でファイルを作り

4ソースの外側を記述

5ソースの内側に命令を書いていく

意識すべき点

 ・正確に記述 …英数字は基本半角、大文字小文字の違いも意識。o、O  0  l、1  ;、:  .、,  などの違い、他にもカッコや引用符の種類に気を付ける。

public static void main(String args)は一字一句間違えずにすらすらと書けるように。

 

 ・上から下ではなく外から内へ …ブロックの閉じ忘れによるエラーは「上から下へ書く」という意識がもたらしやすいエラー。ブロックを開いたらすぐ閉じる(カッコを開いたら中身を書く前に閉じる)、それから中身を書くという「外から内」の意識を定着させる

 ・読みやすいコードを記述する …文法的には誤りがなくても「人間が読みにくい乱雑なコード」、「複雑すぎて理解に時間がかかるコード」は修正や改良が難しくなる。誰が見てもわかりやすいようインデントとコメントを活用する。

 「インデント」 ブロックの開始と終了で正確に字下げを行い、多重構造の見通しをよくする。この字下げをインデントと呼ぶ。TABキーで行うのが一般的

改行なし↓

public class main {public static void main(String args) {System.out.println("フォーマットの実験");}}      

改行あり↓

 public class main {

   public static void main(String args) {

     System.out.println("フォーマットの実験");

   }

 }      

なおインデントはむやみやたらといれていいものではない。誤ったインデントは構造の読み間違えや致命的エラーにもつながる。

 「コメント」 ソースコード中に書き込んだ解説文のこと。コンパイルと実行のときには無視される。

(ここからソースコードは提供してくれるサービスに書けばいいやんと気づき、ソースコードは気が向いたときにしかこのノートには書かなくなる)

 

・Mainメソッドの中身

ソースコードの二行目に「main」の表記が出てくることからこの部分はMainメソッドと呼ぶ。Mainメソッドには文を順に書いていくが文末セミコロンをつけ忘れがちなので注意。Javaには多くの種類の文が存在するが、三種類に分類して考えるとわかりやすい

1変数宣言の文(例 int version;) 2計算の文(例 version=1+5;) 3命令実行の文(例 System.out.println("ver"+version))

 

・変数宣言の文とは

「新たな変数を準備せよ」とPCに指示する文。変数とはデータを格納するためにPC内部に準備する箱のようなもので、数値や文字列などプログラムが扱うさまざまな情報を入れたり取り出したりできる。変数に値を入れることを代入、取り出すことを取得という。文は「型 変数名;」になっており、型とは「変数に入れることができるデータの種類」のことでintであれば整数を表す。この型の変数ageには整数しか入れることはできない。

 

・変数の名前

変数宣言の際に変数に名前を付ける必要があり、それらの名前として使える文字数字の並びを識別子と呼ぶ。名前は基本開発者の自由だがいくつかルールや習慣がある

■禁止されている単語を使ってはならない

 「そもそも名前として使ってはならない単語」とされてる予約語が約50存在する。intやvoid、public、staticなどは予約語であり、変数名としては利用できない。(Java内で既に使い道が決まってる単語は使えないというイメージだろう)

■すでに利用している変数名を再度使ってはならない

区別つかなくなるからダブるのは禁止

■大文字、小文字、全角、半角の違いは区別される

これらの違いはダブり判定にはならない

■小文字で始まるわかりやすい名前を付けることが望ましい

習慣的に変数には小文字で始まる名詞形の名前をつけたり、複数の単語をつなげて変数名にする場合、二つ目以降の単語の先頭は大文字にする。まあかっこつけて奇抜な名前をつけるのではなく普通にしてろということだろう。

 

・データ型

プログラムで扱えるデータの種類のことをデータ型、または単に型という。現段階では9つを覚えればよい

整数 byte(とても小さな整数) short(小さな整数) int(普通の整数) long(大きな整数)

少数 float(少しあいまいでもよい少数) double(普通の少数)

真偽値 boolean(真か偽か)

文字 char(一つの文字)

文字列 String(文字の並び)

 

整数

それぞれの種類では消費するメモリ量が異なる。ただ基本的にはIntのほうが高速で処理できるPCが多いため通常はIntを使えば問題はない

少数

FloatやDoubleは「3.14」や「-15.2」といった小数部を含む数値を代入するための型。PC内部では少数を「浮動小数点」という形式で管理していることから浮動小数点型と総称されることもある。Doubleのほうがより厳密に計算できるため少数を扱う場合特別な事情がない限りはDouble型を使用する。また、浮動小数点方式には真に厳密な計算ができないという弱点があるため金額の計算などには使ってはならない。

真偽値

Boolean型は二者択一の情報を代入するための型。肯定的情報のTrue、否定的情報のFalseのどちらかの値のみ代入できる。

一文字だけ格納できるChar型、文字列を格納できるString型

Char型は全角半角を問わず「一文字」を代入できる型で、String型は文字列を代入できる型。

 

・定数の利用

既に値が入っている変数に代入をすると、古い値は消滅し、新しい内容に内容が書き換わる、変数の上書きというのができる。

しかし絶対に上書きしたくない変数があった場合、変数宣言前にFinalという記述を書き加えると書き換えを防止できる。Finalつきで宣言された変数を定数と呼ぶ。

final 型 定数名=初期値;

第一章、終