Java上達日記　Day1:Javaの基本

# ①はじめ
どうも。 rii_125です。今回から投稿のモチベを上げるために「Java上達日記」を始めよう！と思ったんです。（本音:アウトプットも必要かなと初心者ながら思ったわけですよ。）
なので、これから少し定期的に投稿できたらなと思っています。
また、これから以下の構成で進めていく予定なのでみてみてください。:relaxed:

ーこれからの **Java上達日記** を書くうえでの構成ー
```mermaid
graph TD;
    目標-->説明-->今回の課題-->解答-->実践;
    実践-->次回;
    次回-->目標;
```
このような構成で進めていきますので興味のある方などはぜひ見てみてください。

--------

### 〜目標〜
Javaについて知り、基本的な文法をマスターする。

-----------
### 〜今日の構成〜
<details open><summary>構成</summary>

①はじめ
▶︎目標
②Javaってなんなの？
▶︎Javaとは
▶︎Javaを実行するにあたって
▶︎開発環境を整備する
③基本的な文法
▶︎文法
④コードの書き方
▶︎インデント
▶︎コメント
▶︎文字を表示させる・計算させる
▶︎変数
⑤今回の課題
▶︎3つの中から選んで表示させよう
▶︎解答
⑥実践例
▶︎私は90歳です。
▶︎計算します。
⑦まとめ
</details>

# ②Javaってなんなの？
:::note warn
Javaを初めて触る人や、Javaについて理解したい人はぜひチェックしてください
:::
Javaについて詳しく知りたい方は以下のリンクをチェックしてください。（情報:wikipedia）

https://ja.wikipedia.org/wiki/Java

##### Javaとは
> Java（ジャバ、ジャヴァ）は、汎用プログラミング言語とソフトウェアプラットフォームの双方を指している総称ブランドである。オラクルおよびその関連会社の登録商標である。1996年にサン・マイクロシステムズによって市場リリースされ、2010年に同社がオラクルに吸収合併された事によりJavaの版権もそちらに移行した。

要はJavaはプログラミング言語ということ。Javaはさまざまなことを作ることができる。一般的なプログラミング言語といえばわかりやすいと思う。
<details open><summary>作れるものの一例</summary>

* webアプリケーション
* 家電製品のプログラム
* ウィンドウアプリケーション
* androidのアプリなど

様々な用途で使用される。
</details>

#### Javaを実行するにあたって
Javaは一般的な言語としても知られ、業務での使用、個人開発、webアプリケーションを作成することができる。
多くのプログラミング言語は、次の3つの手順を踏んで動かしています。

<details open><summary>⒈コードを作成する</summary>

Javaの決まった文法でソースコード（プログラム）を入力する。

＜例＞
```Java:Main.java
public class Main {
  public static void main(String[] args) {
    System.out.println("Hello,Java");
  }
}
```
この場合、public class〜のように人が入力できるコードを **ソースコード** と呼び、また、ソースコードを保存したファイルを **ソースファイル** と呼びます。
そして、ファイルの名前の後には必ず「.java」と入れるのが決まっています。（.javaは **拡張子** ともいったりします。）
</details>

<details open><summary>⒉コンパイル</summary>

ソースコードのままでは実行はできないので **コンパイル** という処理を行い、 **クラスファイル** に変換。このとき、0と1が複雑に組み合わさっており、人間にはとても読めないコード（**バイトコード**）となっています。
また、コンパイラというソフトで文法チェックも行われ、誤りがあれば誤りが指摘され、コンパイルが失敗します。
拡張子が「.class」で変換・生成されます。
</details>

<details open><summary>⒊実行</summary>

実行するには**インタプリタ**と呼ばれるソフトに実行してもらう。
（内部にJVMという仮想マシンが存在する。）
そして、ソースコードどうりに動く。
</details>

①②③の手順を踏まえて初めてJavaが動くということである。

#### 開発環境を整備する
自分のPCに開発環境を整備するか、web上にある開発環境（または仮想デスクトップなど）を利用して実行することも可能である。

**ー自分のPCに開発環境を整備ー**
windowsに標準搭載のメモ帳（notepad）やmacOS標準搭載のTextEditorなどを使用する。
また、JDK公式サイトやサクラエディター、VScodeからダウンロードなども行うことで実行環境を作ることができる。
**ーweb上にある開発環境ー**
Paiza.io・VScode(web)やChrome・Edge・firerfoxなどの開発者用のタブから実行などもできる。

https://paiza.io.ja

https://vscode.dev/?vscode-lang=ja

:::note alert
VScode(web)はコードを入力することができない可能性があります。
:::


# ③基本的な文法
:::note warn
ここからはプログラムを実行するのでお好みの実行環境を選んで実行してみてください。
:::

#### 文法
＜Hello,Javaの表示例＞
```Java:Main.java
public class Main {
  public static void main(String[] args) {
    System.out.println("Hello,Java");
  }
}
```
ソースコードに入っている{  }で囲まれている部分を**ブロック**という。そして必ず、ブロックが2つの二重構造になっています。

public classの後には**クラス名**を入れる必要がある。そして、クラス名の最初は大文字にするのが一般的である。

```Java
public class [クラス名]
```
また、命令文の最後には;（セミコロン）をつける。
＜一例＞
(A)戦闘ゲームが作りたい…
　よし、Battle.javaにしよう。
```Java:Battle.java
public class Battle { //<-1
          // ^
         //大文字
  public static void main(String[] args) {  //<-2
     ・・・
  }  //<-2
}  //<-1
```
# ④コードの書き方
ソースコードは人が読みやすいように空白・改行が許されているため、基本的自由にできるが、見やすいように以下のことを行うことでよりみやすく、修正しやすくなる。
#### インデント
改行をせずに「Hello,Java」のプログラムを動かすと…
```Java:Hello.java
public class Hello {public static void main(String[] args) {System.out.println("Hello,Java");}}
```
**結果**
```:実行
Hello,Java
```

プログラムの全体構造を把握するのが難しく、修正も時間がかかり手間がかかります。
そこで、**インデント**という方法を使って、コードを綺麗にまとめることが重要である。

インデントした「Hello,Java」
```Java:Main.java
public class Main {
  public static void main(String[] args) {
    System.out.println("Hello,Java");
  }
}
```

#### コメント
プログラムは何百、何千、何万と書く場合があります。その場合、何をどうやったなどをコードに直接書き込むことができます。
**コメント**を使うと、人が読むものとしてコンパイルは無視されます。
もちろん、日本語OKです。

|複数行のコメント|１行のコメント|
|:-:|:-:|
|/* コメント */|//コメント|

```Java:Main.java
/*Mainプログラム
　　開発中…*/
public class Main {
  public static void main(String[] args) {
    System.out.println("Hello,Java");
  }
}
```
#### 文字を表示させる・計算させる
##### ー文字を表示させるー
「Hello,Java」のような文字を表示させるコード（`System.out.println`）以外にも`System.out.print`がある。
この二種類はどんな違いがあるのか、表にまとめてみました。
|/|println|print|
|:-:|:-:|:-:|
|特徴|文章を１行ずつ表示させる|文章を改行せずに表示させる|
|組み合わせ方|文章を作るとき|何かと組み合わせて作るとき|

##### ー計算させるー
次の数式をJavaに計算させます。
式) 2837+748
この場合答えは「3585」になりますが、Javaではどんなコードで計算するのか。

Javaで計算結果を表示させる
```Java:Main.java
public class Main {
  public static void main(String[] args) {
    System.out.println("2837+748を計算します。");
    System.out.println("答えは");
    System.out.print(2837+748);
  }
}
```
結果
```
2837+748を計算します。
答えは3585
```

きちんと、「3585」という答えが出ました。Javaで数式を計算させるには、文字を表示させるときと違い、「"（ダブルクォーテーション）」をつけずに計算させました。
3行目のコードに注目すると、文字を表示させるとき、「"」がついている時、
2837+748は数式として認識せず、「"」がついていない５行目のコードに注目すると、数式と認識し答えの3585が導かれます。

##### ー変数ー
年齢や、日数など数字が変わる数は**変数**というデータを入れる箱を作ることができます。そして、変数を作ることを**宣言**と言います。

〜作り方〜
```
[変数の型] [変数名];
```
また、変数に値を**代入**することもできます。
```
[変数名] = [型にあう値];
```
〜略記〜
```
[変数の型] [変数名] = [型にあう値];
```
＜一例＞
```Java:Main.java
public class Main {
  public static void main(String[] args) {
    int age;
    age = 23;
    //もしくは
    int day = 23;
  }
}
```
変数は、`println`、`print`を使って表示させることもできる。

```Java:Main.java
public class Main {
  public static void main(String[] args) {
    int age;
    age = 23;
    //もしくは
    int day = 23;
    System.out.print("年齢");
    System.out.print(age);
    System.out.print("歳");
    System.out.println("Day:");
    System.out.print(day);
    System.out.print("日");
  }
}
```
結果
```
年齢23歳
Day:23日
```

変数名は基本自由だが、**予約語**は使用禁止で`public`や`static`などは変数の名前につけられない。
また、変数同士の計算も可能。
```Java:Main.java
public class Main {
  public static void main(String[] args) {
    int age;
    age = 23;
    //もしくは
    int day = 23;
    System.out.print("年齢");
    System.out.print(age);
    System.out.print("歳");
    System.out.println("Day:");
    System.out.print(day);
    System.out.print("日");
    int sum = age+day;
    System.out.println("合計は");
    System.out.print(sum);
  }
}
```
結果
```
年齢23歳
Day:23日
合計は46
```
# ⑤今回の課題
文法、文字を表示させる・計算させる、変数の中から出題

**ー3つの中から選んで表示させようー**
次の結果を元にコードを＜条件＞を全てクリアして記入しなさい。

＜条件＞

* クラス名は必ず「Main」にする
* `public static~`の省略は行わない
* 大文字小文字の区別をつける

⑴
```
Last Java!!
```
と表示

:::note warn
ヒント
`System.out.〜`
:::

⑵
```
4085+915=5000
```
と表示

:::note warn
ヒント
式:`("4085+915");`
:::

⑶
```
banana:120
melon :1000
120Yen+1000Yen=1400Yen
```
と表示

:::note warn
ヒント
int banana = 120;
int melon = 1000;
:::

**ー解答ー**
これは一例です。
解答と違っても、表示結果が同じだった場合も◯とします。
⑴
```Java:Main.java
public class Main {
  public static void main(String[] args) {
    System.out.println("Last Java!!");
  }
}
```

⑵
```Java:Main.java
public class Main {
  public static void main(String[] args) {
    num1 = 4085;
    num2 = 915;
    System.out.println("4085+915=");
    System.out.print(num1+num2);
  }
}
```

⑶
```Java:Main.java
public class Main {
  public static void main(String[] args) {
    int banana = 120;
    int melon = 1000;
    System.out.print("120Yen+1000Yen=");
    System.out.print(banana+melon);
    System.out,print("Yen");
  }
}
```

# ⑥実践例
**ー私は90歳ですー**
```Java:Main.java
public class Main {
  public static void main(String[] args) {
    byte old = 90;
    System.out.print("私は"+"歳です");
  }
}
```

**ー計算しますー**
```Java:Main.java
public class Main {
  public static void main(String[] args) {
    System.out.println("変数aを作成…");
    System.out.println("変数aに125を代入…")
    int a = 125;
    System.out.println("変数xを作成…");
    System.out.println("変数xに120を代入…");
    int x = 120;
    System.out.println(a+"+"+x+"=?");
    System.out.println("計算します");
    System.out.println(a+"+"+x+"=");
    System.out.print(a+x);
  }
}
```

# まとめ
今回は、2回目の投稿というのもあって結構長くなりましたが、少しでもJavaについて興味を持ってくれたらなと思っています。
次回の投稿日は、 ~~2024/10/20(月)~~ を予定しています。
　　　　　　　　 2024/11/7(金)