JAVA X2 type02　Season1 Chapter3：JAVAさん！はじめまして！！

# おつう、やっとコーディングするってよ！！

## こんにちは、或いはこんばんわ。エージェント02です。

いよいよHello Worldします。第一関門ですね。
毎回ですけど、私の記事は初学者の理解に添わせてまとめます。
なので詳細ずれてたりしますが「むむ！！」てなったら無視してください。
ネガティブコメントには耐えられる気がしません。

ではでは、ここからは。
Capter0に出てきた師匠の教えも含めて書きます。よろしくお願いいたします。

## ここからの登場人物

↓　これがでてきたら偉い人の教えです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/f5e69618-a033-cd12-4c3a-2183eee80efa.png)

↓　これがでてきたらポンコツのコメントです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/ae5ee4db-e49e-a9d8-4935-aa7dfbd5cb8d.png)

## 調理開始します～

大嫌いだったMAVENの力を借りて、簡単にプロジェクト作ります。
（過去にいろいろあったんです）

ではまず
「CREATE MAVEN PROJECT」を実行します。エクスプローラの空いているところで右クリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/ff4df1db-beea-81c2-9731-7d036b8e0d62.png)

画面上のほうになにしますか？てでてくるので、いまはなにも考えずquickstart使います。
とりあえずjdk8選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/3beadf58-80e9-e019-d7e6-bb4f71fcaf12.png)

バージョンはとりあえず新しいバージョン選びましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/d0bbde80-bb68-d372-01ba-4d3c362d34f8.png)

グループIDを決めます。
一般的には自分のもっているドメインの逆順（例：google.comだったらcom.googleのように）にするのが慣習。
※慣習の理由は、これがパッケージ名としてもつかわれるから
もっていなければ自由でいいっす。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/701b8993-9105-61b6-ebd2-463b86333a7c.png)

最後、プロジェクト名。好きな名前つけてください。
今回のは私のおもちゃなので「toy」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/eed37a8f-5e1b-4cc2-1a7c-6c9422d9a273.png)

ここまで作ればプロジェクトのひな型が勝手に（自動的に）作られます！
ありがとうMAVEN！！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/3748d385-29f0-3e4c-2490-c6a85af09fcc.png)

いま、App.javaに"Hello World!"を実行させるプログラムが勝手に（自動的に）作られたので実行してみますかね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/e11a5544-e3d2-c0c4-b71e-93f692bd47c8.png)

「実行（R）」の「デバッグなしで実行」を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/69c1e5e6-fb72-27af-6698-fcccf39782e1.png)

ターミナルになんかでた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/d85cdd59-2a92-ee57-fd5b-18211536c520.png)

### では続いて作ったものを分解しま～す

## パッケージとクラスについて

↓　ここ解剖します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/5b21e1b5-aedc-d428-2953-dfb56b1c5046.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/e601f591-d950-81c1-dc27-717517ca0740.png)

クラス：オブジェクト指向の話なので省略（そのうち）クラスの中に処理を全部書くというきまりがJAVA
いまはいったんそういうことで・・・きまりだから

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/2602c93d-0c04-6970-89d2-9d766de511e7.png)

おつうの勝手な解釈イメージ
パッケージ名：サイトURL
クラス：index.html のようなファイル名

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/16fbc9ca-abec-47ba-f978-4f4d4dbabc50.png)

## クラス

↓今度はここを説明

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/9bc7c8a4-143b-ffbc-2fdc-afe4d2ac3ed4.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/4d48289c-afa7-3732-c854-b1bec49c8f9f.png)


public > アクセス修飾子（プログラムを使える人の許可範囲）：だれが見ていいの？
final >　ファイナル修飾子（ファイナル（変更一切ゆるさん！）にしたくなかったら必要ないもの）：ファイナルにしたくない＝変更してもいいよ
class >　クラス宣言（ここからがクラスのはじまりですよーの印）：コンパイラに教えてるところ
App >　クラスの名前（自由につけていいところ）：※publicの場合はファイル名と同じでないとNG

## コンストラクタ

↓ここを説明・・します・・・？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/50ee9859-342f-6cbb-5c4a-969e1ba1a912.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/1ff56aa3-6643-286f-1f61-5fff9d548224.png)

ここ、コンストラクタをプライベートにして隠すテクニカルなことをしているから
いったんみなかったことにしてください。（のちのち説明します）

## メソッド

↓ここ解剖します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/964b7eb6-0454-dcf2-7288-bdceea466355.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/2751e861-97d1-91ab-bc8e-ed0b08d58dec.png)

さっきクラスでpublicが出てきたのに、ここでまたでてくるこいつは何者？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/1cab2462-f3ee-5ae3-4e34-a6e536126c43.png)

機能（メソッド）ごとに「誰が見ていいか？」をコントロールしたいからだよ。
一つのクラスに対して、複数のメソッド（機能）があるから。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/9eaeec13-7d85-6ef9-cca6-454e4083e480.png)

ガンダムの「腕を動かす」というクラスに、「右に90度」（メソッド）、「上に45度」（メソッド）、、、とたくさんの動き組み込む的な？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/ab780683-5e15-4d59-b5b4-2d40643e412f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/5ed3f037-bbcc-80f8-09a8-b8587491075e.png)

メソッドの中身はこんな感じ

public > メソッドのアクセス修飾子
static > インスタンス化しないで呼べるメソッド。クラスにくっついているメソッド（newしなくてもつかえる）
※意味わからないので詳しくはあとで
void > 返却値の型（voidはなにもない）
main > メソッドの名前
(String[] args) > 
String[]:引数の型（[]が配列）
args:仮引数（使うときの名前）

## やりたい処理（いよいよ）

↓実際の命令（つまり、プログラムの内容がここだけ！！！）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/265ffd6c-88cc-4194-64db-85ac56f9f32b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/0fb858be-fe60-bed2-11c6-075dafe0907e.png)

System > OS全般を表すパッケージ
out > 標準出力
ここまでで、「OSの標準出力を使うよ」＝コンソールをつかう

plintln > 一行出力するよ
全体合わせて、「OSの標準出力に１行だすよ」

なにを出力するかってーと・・かっこの中身：”Hello world”


>ここで出てきたXは・・
x: -> vscodeが勝手に見せてるものでふつういらない（書かない）なので、メモ帳で開くとみえないものです
↓メモ帳でひらいてみた
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/b70bcdbe-1b0c-5430-0345-4be1502fc8c8.png)

## プログラムをRUNする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/ddb43790-ea46-dd1b-3f89-8c39afb22e86.png)

↓実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/c0cf7d82-6e99-5bfa-80d2-92086ebf3842.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2308477/0e4a6e1b-fc03-29f2-3691-14a6beef6bda.png)

クラスしか指定していないのに、なぜかmainメソッドが実行されている。
これはJAVAのルールで、**public static void main(String[] args)**（シグネチャ） が特別な名前だから。。JVMが起動引数としてクラスを与えられたとき、必ずこのシグネチャのメソッドを呼び出すという決まり（仕様）。
逆にこのシグネチャはこの目的以外では使ってはいけない。

## まとめ

ただハローワールドしただけのプログラムですが、わからないことをわからないまま進むの大嫌いなイルカのせいで、こんなボリューミーに・・・進むのか？これ？？？
相変わらずマイペースな展開で、今後も進めていきます。引き続きおつきあいください。

＞＞次回、Chapter4[「さて、書いてみましょうか（震）」](https://qiita.com/comchiki66/items/d2afd2c149bc7032d29a)をお送りします。