駆け出しのエンジニア日記

プログラミング言語勉強中の奮闘日記

Javaの配列

配列を使う目的

・・・普通の変数は一つの変数に一つの値しか入れることしかできないが、配列の場合は一つの変数に複数の値を入れることが可能である。

一つのかたまりを示す情報を持たせて扱いたいときに使用する。

例)会員情報・・・名前・メールアドレス・電話番号といった情報をまとめて持っているイメージ

 

今までのやり方

public static void main(String args) {
String name = "鈴木";
String email = "suzuki@xxxx.com";
String phone = "090-0000-1234";

・・・会員情報として3種類の変数をバラバラに持たせている

 

一方配列では

public static void main(String args) {
String[] customer; // String型の配列宣言
customer = new String[3]; // 配列の初期化
customer[0] = "鈴木";
customer[1] = "suzuki@xxxx.com";
customer[2] = "090-0000-1234";
 配列のindexとは配列の要素の順番で、0から要素を数えていく
 →[0]の部分

インデックス( index )の英語の意味は「索引」です。本の目次をイメージするとわかりやすい

・・・会員情報としてまとめて配列に持たせている

 

配列宣言・・・

これから配列が入る箱を用意するのでその形に合う配列を入れてくださいとコンピューターに最初に伝えてくおく行為

配列の初期化・・・

配列変数に対して複数の情報が入る「要素」と呼べる情報のかたまりを作成し、

配列変数に代入すること。「要素」を作成するときに、「要素」の個数の上限も決めておく。

※上記はString型の配列のかたまりを3つ用意しておくということ。

※一度個数を決めてしまったら後から変更はできない

 

以上は基本的な配列の記述の仕方をまとめてみました!

 

Javaのループ構文

ループ構文は繰り返し処理を行いたい時に使用するものになる。

・whileループ

判定結果が

trueの時、{ }の処理を実行

falseの時、{ }の処理をスキップしてループ終了となる

実際に1つやってみる

public static void main(String[] args) {
// whileループ
System.out.println("番号!!");
int number = 1;
while (number <= 10) {
System.out.println(number + "!");
number++;
}

変数numberに+1され、10になるまで繰り返す

出力結果としては、「1〜10」までが表示される。

 

・do-whileループ

基本的にwhileループと同じではあるが、一周目は無条件に実行するのが特徴

判定結果が

trueの時、{ }の処理を実行し、doへ戻る

falseの時、{ }の処理をスキップしてループ終了となる

// // do-whileループ 最初に条件判定したくない時に使う
System.out.println("多い番号順から点呼!!");
int num = 11;
do {// 必ず1行目は実行される
System.out.println(num + "!");
num--;
} while (num <= 10 && num >= 1);   ・・・numが10以下かつ1以上という意味

変数numが−1され、1になるまで繰り返す

出力結果としては、「11〜1」までが表示される。

 

・forループ

回数を決めて{ }の処理を繰り返したい時に使う

繰り返す回数を数えるための「カウント変数( i )」を使う 

forの右側()内が重要になる

左から、「1:カウント変数宣言」「2:繰り返し条件式」「3:閉じカッコの処理」

for (int i = 1; i <= 10; i++)

1:実行されるのは最初の1周目のみ

2:trueの時、{ }の処理を実行

   falseの時、{ }の処理をスキップしてループ終了となる

3:閉じカッコ } まで処理が進んだ時にやりたいことを記述する

// forループ
for (int i = 0; i <= 10; i++) {
int n = i + 1;
System.out.println("繰り返し:" + n + "周目");
}

iは0から始まり、11になるまで繰り返し足し算していく

出力結果としては、「1〜11」までが表示される。

 

以上簡単にまとめてみましたが、現場で使うことが多いのはwhileループである

 

Javaのswitch-case構文

switch-case構文は条件分岐の一種であり、switchの値が一致するcaseラベルごとに処理の流れを分岐させていくものである

・caseラベルには必ずswitchの値と同じ型の変数値を記述する

・各caseラベルと別にdefaultラベルも指定することができる

→defaultラベルは他のcaseラベルと一致しない場合に処理が実行される

意味的にはif-else構文のelseと同じになる

public static void main(String args) {
int myAge = 28;
switch (myAge) {
case 8:
System.out.println("私の年齢は8歳です");
break;
case 18:
System.out.println("私の年齢は18歳です");
break;
case 28:  //画面に表示されるのはこのcaseになる
System.out.println("私の年齢は28歳です");
break;
case 38:
System.out.println("私の年齢は38歳です");
break;
case 48:
System.out.println("私の年齢は48歳です");
break;
default:
System.out.println("私の年齢はヒミツです");
break;
}
}

変数myAgeと一致するcaseラベルを探す

 

例外パターン

public static void main(String args) {
int myAge = 48;
switch (myAge) {
case 8:
System.out.println("私の年齢は8歳です");
break;
case 18:
System.out.println("私の年齢は18歳です");
break;
case 28:
System.out.println("私の年齢は28歳です");
case 38:
System.out.println("私の年齢は38歳です");
break;
case 48:
System.out.println("私の年齢は48歳です");
break;
default:
System.out.println("私の年齢はヒミツです");
break;
}
}

また、上記のようにbreakがない場合は、その下のcaseまで実行してしまう。

その際、画面に表示されるのは、

"私の年齢は28歳です"」と「"私の年齢は38歳です"」となってしまう。

breakの記述は必須になる。

 

ほとんどのコードにおいて条件分岐の際はif構文を使うことが多いが、if構文に比べて見やすいのがメリットになる

 

以上、簡単にswitch-case構文まとめてみました。

 

Javaのif構文

英語でも学んだことあると思いますが、ifは「はい(true)」か「いいえ(false)」で処理の流れを分岐させたい時に使うものになる。

・ifのみの時

trueの場合、下記文の{ } を実行する

falseの場合、下記文の{ } をスキップして次の実行に移る

public static void main(String args) {
int myAge = 28;
if (myAge == 28) {
System.out.println("私の年齢は28歳!");
}
System.out.println("私の出身地は~~");
 }

※※Javaの場合、「等しい」を表す際は、「==」を使用する

・elseも含む時

public static void main(String args) {
int myAge = 28;
if (myAge == 35) {
System.out.println("私の年齢は35歳!");
} else {
System.out.println("私の年齢は35歳でも40歳以上でもないよ!!");
}

falseだった場合、elseより下の処理が実行される

・else ifも含む時

public static void main(String args) {
  int myAge = 28;
if (myAge == 35) {
System.out.println("私の年齢は35歳!");
} else if (myAge >= 40) {
System.out.println("私の年齢は40歳以上!!");
} else {
System.out.println("私の年齢は35歳でも40歳以上でもないよ!!");
}

という感じで記述することができる。

また、論理演算子(==、&&、||)を用いた条件分岐も可能

public static void main(String args) {
int myAge = 28;
char myBloodType = 'A';
if (myAge == 28 && myBloodType == 'A') {
System.out.println("私は28歳でA型");
} else if (myAge == 28 && myBloodType == 'B') {
System.out.println("私の28でB型");
} else if (myAge == 30 && myBloodType == 'A') {
System.out.println("私は30でA型");
} else {
System.out.println("どこにも該当せず");
}

上記のように複数の条件を含めて分岐させることができる

「 && 」・・・かつの意味(両方含める)

「  ||  」・・・またはの意味(片方が当てはまればOK)

 

以上、ifの条件分岐についてまとめてみました!

Javaの基本データ型について

下記を参考にしてください。

・基本のデータ型

以下のデータ型の変数には数値が入り、全て小文字なのが特徴

※※赤字が特に使用頻度が高い

分類 データ型 入る値        ポイント
 整数  byte ±約128 ほとんど使わないがシリアル通信の時
   short ±約3.2万 あんまり使わない
    int ±約21億

日常で使用する整数のほとんどで使う。

21億という数字がlong型を使うかのボーダーラインになる

    long ±約900京

int型で使えない大きな整数を使用するときに用いる

 小数  float 浮動小数点(単精度) あんまり使わない
   double 浮動小数点(倍精度) floatよりも正確なので、小数ではこちらを使うことが多い

 真偽値  boolean true/false Yes/Noを判断する。2進数と同じ
 文字  char 1文字/文字コード 1文字のみ代入できる

桁が大きくなるにつれて使用するメモリも増える

→大企業になると売上が21億を超えてくるところも多いのでその場合は  long型  を使ったりする

小数に関しては  double型  の方が「正確さ」で判断される

 

・String型・・文字の入力はほとんどこれを使う

 文字列  String  複数の文字
”あいうえお”などの複数の文字が入る
初期値は null ””(空文字)とは異なる
   

以前記述した  ”Hello World”  もString型になる

出力したい文字や言葉はString型がメインとなる

 

・型変換のルール

データ型には大小関係がある

→小さなデータ型の情報は大きなデータ型に無条件で変換ができる

〜逆は基本的にできない、やり方もあるが、使うこと少ないので割愛します〜

整数<小数

・・・小数は小数点以下が存在するため、整数より大きいとみなされている

整数:long型 > int型 > short型 > byte型

小数:double型 > float型

 

以上、使用頻度が高いデータ型をまとめてみました。

Javaの変数

そもそも変数って・・・?

情報を入れるための箱のようなものが変数

状況によって異なる情報を入れ、箱の中身を使って処理をしていく。

変数宣言・・・「この形の箱を用意するので、形に合う情報入れてね」とコンピューターに最初に伝えておく行為

初期化・・・箱の形を用意した後に初めて情報をセットする行為

※これをやらないで、いきなり箱の中身を取り出して使おうとすると、コンパイルエラーになる

  int myAge; // 変数宣言
myAge = 28; // 変数初期化
myAge = 38; // 上書き
myAge = "abc" //型不一致でエラーになる
System.out.println(myAge);

例1

  int myAge; // 変数宣言
myAge = 28; // 変数初期化
System.out.println(myAge);
このとき画面に表示されるのは  「28」 となる
例2
  int myAge; // 変数宣言
myAge = 28; // 変数初期化
myAge = 38; // 上書き
System.out.println(myAge);
この時画面に表示されるのは、上書きされ 「38」  となる

例3

  int myAge; // 変数宣言
myAge = "abc"
System.out.println(myAge);
この時画面に表示されるのは「コンパイルエラー」になる
  型不一致でエラー
  数字を入れる箱に文字を入れてしまうとコンピューターは解釈ができない状態になってしまうため

※※Javaは「静的型付け言語」のため、一度型を決めたら型を変更できない性質

例4

 int myAge; // 変数宣言
System.out.println(myAge);
この時画面に表示されるのは「コンパイルエラー」になる
宣言だけし、初期化せずにいきなり変数の中身を使うとすると、「初期化されてない可能性」というコンパイルエラーになる

 

以上、変数について簡単にまとめてみました。

 

Javaプログラムの構造

かなりお久しぶりです、、、笑

訳あって今、Javaを勉強しているので学んだことを少しずつアウトプットしていきます。

未経験から学んでいるので、最近はじめてよとか今後使いたいとかの方特に参考になればと思います。

 

Javaのプログラム構造

 ・クラスブロック

プログラムの大枠。classの右側は必ずファイル名(=プログラム名)と同じにする

HelloWorld.java ファイル

※大文字、小文字はファイル名とクラス名が完全一致じゃないといけない

 ・クラスブロック
public class HelloWorld {
public static void main(String args) {
System.out.println("Hello, World!!");
}
}

・メソッドブロック

やりたい処理をクラスブロックの内側に記述する

public class HelloWorld {
 ・以下メソッドブロック
public static void main(String args) {
System.out.println("Hello, World!!");
}
}

 

・”public static void main(String[] args)”

これに関しては書かなければいけない慣用句的な存在と最初は覚えてもらえれば大丈夫

・”System.out.println("Hello, World!!");”

System.out.printlnは()に記述されている内容を画面に表示してという命令

上記のように記述し、ターミナルやcmdを使用して出力すると下記のようになる

   「  Hello, World!! 

 

※※ただし、このように出力するにはコンパイル作業が必要になる

ターミナルやcmdで

1:javac HelloWorld.java と入力

2:HelloWorld.classクラスファイルが作成される

3:java HelloWorld  と入力

4:「  Hello, World!!  が出力される

 

そもそもコンパイルとは・・・

人間の言葉によって書かれたソースコードをコンピュータ側が解釈できないため、途中で「コンパイル」という手順を踏んで、翻訳する必要がある。

 

これからしっかり学んで行きましょう!