はじめに
Javaの学習はじめたので用語をまとめています。
理解のためにRailsでやった内容だとこういう意味かな?とリンクさせたりしていますが合っているのか自信はないです🙇♀️
(Rubyは学習できていないのでRailsで考えています)
なにやらメソッドやらクラスやらインスタンスやらの用語が結構出てきます。
モデルへのメソッドの定義方法を知れたことが結構でかく、言っていることが少しわかります。
↑これが出来るようになるまでは出てくる用語に対して全然理解できていなかったのでJavaの学習が進まなかったと思います。
言語
Java:コンパイル言語
はじめにソースコードをパソコンが理解できるように置き換えてからプログラムを実行。
いちいちコンパイルしてから実行するので面倒だけど一度書いちゃえば環境問わず、高速に動作する。
Railsみたいにdebuggerを入れてデバッグは出来ないらしい
Rails:スクリプト言語
実行するたびに理解できるように書き換える。プログラムが途中でも実行が可能。
Javaの使いづらい部分を改善するために出来た言語が多いが、それでもJavaはよく使われている。大人数での開発だとJavaを使うことが多い。
構文
大文字小文字を区別します。
{}で囲まれたブロックと;で終わる文で構成
必ず文が終わる時は;が必要なのでちょっとめんどくさいです。
ブロック:プログラムの塊、do ~ endみたいなもの
メソッドブロック:メソッドを記述する、クラスブロックの内側に記述
クラスブロック:メソッドをまとめるクラス、Modelをイメージするとちょっと分かる
空白や改行がなくてもOK(単語の途中ではNG)、わかりやすさのために改行する。
JavaScriptみたいな書き方だと思いました。
変数
ここが大きくRailsとは違いました。
型 変数名;
Railsだと型は意識しなくても変数を作れるので手当り次第作れましたが、Javaでは何を入れるか、何が入るかを意識してつくる必要がありそうです。
そして変数を使うには宣言が必要になります。
ここもRailsではなかったかなと思います。
変数の宣言
int number;
ってやると変数numberが使えます。
変数に入れる値が決まっているのなら↓でいけます。
int number = 15;
これを変数の宣言と初期化と言うそうです。
初期化:宣言した変数に初期値を代入すること
定数
final と付けると定数になる。
条件分岐
- if文
- switch文:breakを明示的に記述してあげる必要がある。
Railsでのwhen ~ と同じ感じでしょうか?
繰り返し
- while文
- do-while文
ここの違いはfalseのときに何も実行しないのがwhile文
falseでも必ず1回は実行して切れるのがde-while文 - for文:繰り返したい数が決まっていればwhileよりもこっちが良い?
- 拡張for文:配列やコレクションの全要素に対して処理を行う
Railsでのmapメソッドに近いのかなと思いました。
取り出しては処理、取り出しては処理してくれるので.eachだと処理書くと複数行になってしまうけど.mapだと一行で書けていました。
continueはif文がtrueだと処理をスキップ
クラスとメソッド
パッケージ:目的に合わせてグループ化したもの
ディレクトリ構成が jp1 > practice.javaとなる場合
practice.javaファイルの冒頭に package jp1; と宣言する。
インポート:他のファイルをインポートして使えるようにする
メソッドを書くファイルと実行するファイルを分けるらしい、なのでimportが必須。
実行ファイルには public static void main(String[] args) { ~ }が付く
Railsのモデルに書いてviewは違うファイル(ディレクトリ)みたいな感じ?かなり違う気がするけど理解はしやすいのでとりあえず進みます。
this変数:自分自身のインスタンスを指す、Railsのselfだと思います
コンストラクタ:インスタンスを生成する際に実行されるメソッド、クラスメソッドみたいなものだと思っときます
例外処理
- Errorクラス:致命的なエラーを表すクラス
OutOfMemoryError等 - Exceptionクラス:一般的な例外を表すクラス
例外を補足する記述がないとコンパイルエラーになる
→きちんと例外処理されているかチェックできるので「チェック例外」とも呼ばれる
FileNotFoundException等がある - RuntimeExceptionクラス:バグと言われる例外を表すクラス
コンパイルはされても、プログラム実行中に発生する例外
コンパイル時にはチェックされず実行されるため「非チェック例外」と呼ばれる
NullPointExceptionやArithmeticException(0で割り算した時のエラー)等がある
例外処理自体全く意識していなかったです。
たしかに世に出回っているサイトでエラー画面とか見たこと無いので、すごく重要なことだと思いました。
上記のエラークラスを使用しながら例外処理を行っていきます。
try {
tryブロック(例外が発生する可能性がある処理)
} catch (例外クラス 変数名) {
catchブロック(例外が発生した時に実行する処理)
} catch (例外クラス 変数名) {
catchブロック(例外が発生した時に実行する処理)
} finally {
finallyブロック(例外発生の有無にかかわらず必ず実行する処理)
}
try文:必ず必要な文 本当に実行したいプログラム
catch文:try↑での起きた例外と、例外クラスが一致するとブロックの処理が行われる
なので複数の例外クラスを記述する事ができる
例外処理がいらないなら使わない
finally文:例外発生問わず必ず実行される文、無くてもOK
throw文:意図的に例外を発生させたいときに使用「例外をスローにする」という
例外処理が動作しているかチェック?
例)throw new SQLException("好きな文字列")で呼び出し+文章出力
メモ
◯シンプルなメソッドの呼び出し
クラス名.メソッド名
クラス名. とかインスタンス. とか忘れがち
最後に
ダラダラ長くなっているので②に書いていくことにします。
かなり曖昧で学習中ですので多々間違っている所があるかと思います。
ただ、youtubeをみて概要を少し知れたのでもう少し精度を上げて②を作成できたら、と考えています。
閲覧いただきましてありがとうございました!