【Java】Java SE 11 Silver勉強中...
Java SE 11 Silverを勉強します。
実際受けるのはいつになることやら、早めに受けたいです。
最近某肺炎が流行っていてTOEICが中止になりそうなのですが、2020年2月中旬時点で中国本土はテストセンター停止のようでしたが、日本ではそのようなアナウンスはなかったです。
落ちた場合、再試出来るキャンペーン(第一回目の試験を2020年5月31日まで受ける必要がある)
https://www.pearsonvue.co.jp/Clients/Oracle/Special-Offers/Retake2020.aspx
があるので、3月末か4月末を目安に1回受験したいと思っています。(そう考えるとあまり時間ない)
今回もこちらのシリーズの本を使って勉強しています。
徹底攻略Java SE 11 Silver問題集[1Z0-815]対応
- 作者:志賀 澄人
- 出版社/メーカー: インプレス
- 発売日: 2019/10/18
- メディア: 単行本(ソフトカバー)
本題、Java 11は仕事では一切使っていないので(というかここ2年くらいはJavaしてない)初歩的なところから勉強する必要があるなと思っています。
今使用している黒本↑で4章まで終えたので、備忘録。
1章
- エントリーポイント=処理を始めるメソッド
main()のこと
public static void main(String[] args) { // TODO Auto-generated method stub }
・public
・static
・void
・メソッド名 main
・引数 String型配列、もしくは可変長引数String型(下記でもOK)
public static void main(String... args) { // TODO Auto-generated method stub }
2章
- 「bool」はJavaにない。booleanはあるので同じように使う。
boolean ss = true; System.out.print(ss);
trueと表示される。C++とかだったら、trueは1と表示されたような気もする。
- 数値リテラルを見やすくする表記
int a = 12_34; // OK //int b = _12_34; // コンパイルエラー //int c = 12_34_; // コンパイルエラー long l = 99_99_99L; // OK long m = 99_99_99_L;// コンパイルエラー int i = 0x52; // OK int i2 = 0x_52; // コンパイルエラー float f = 0.333F; // OK //float f2 = 0_.333F; // コンパイルエラー //float f3 = 0._333F; // コンパイルエラー //float f4 = 0.333_F; // コンパイルエラー
Java7から導入したらしいけど、私の部署では誰も使ってなかったから知らなかった。
・アンダーバーを最初と最後につけるとコンパイルエラーになる。
・記号のすぐ前、後もダメ
- var
Java SE 8 Bronzeでは出題されなかったような気がします。
型推論を行うときに使用。Java SE 10から入ったらしい。
// 下記は全部コンパイルエラー。 var a; var b = null; var c = {1,2,3};
以下もコンパイルエラー。
・初期化を行うと型推論出来ない
・引数に使えない
・フィールド宣言に使えない(ローカル変数の宣言OK)
varによる型推論はコンパイル時に行われる。
- 型変換 String
int等数値をString変換
// String.valueOf int num = 123; String t = String.valueOf(num); String test = String.valueOf("Sa");// 意味があるのかわからないけどエラーにならない Saが入る
置換する
// replaceAll String msg = "aaa bbb"; System.out.println(msg.replaceAll("aaa", "ccc")); System.out.println(msg);
出力結果↓
ccc bbb
aaa bbb
該当文字の順番を返す、該当しなければ-1
String msg = "aaa bbb"; System.out.println(msg.indexOf("bbbb")); System.out.println(msg.indexOf("bbb"));
出力結果↓
- 1
4
文字を抜き出す
String msg = "aaa bbb"; System.out.println(msg.substring(1, 5)); //System.out.println(msg.substring(10, 12)); // 10文字目ないので実行エラー
出力結果↓
aa b
先頭文字が一致するか
String msg = "aaa bbb"; System.out.println(msg.startsWith("aaa"));
出力結果↓
true
文字列連結
String msg = null; String msg2 = ""; msg += "null"; msg2 += "null"; System.out.println(msg); System.out.println(msg2);
出力結果↓
nullnull
null
- =するとき、文字列が連結する。参照持たないnullが+=するときに文字列に扱われる。
何も入れないで保持したいときは、とりあえず2行目みたいに宣言すればいいのかなあと思う。(実際どうしてるのかは知らない)
- StringBuilder
こちらもJava SE 8 Bronzeでは出題されなかったような気がします。
public StringBuilder()
文字を持たず、初期容量が16文字である文字列ビルダーを構築します。
こちらどうやって使うねんという感じなくらいわからない。
後で調べる。
3章
- {}がないif
if(num==100) System.out.println("A"); else if(10<num) System.out.println("B"); else if(num==10) System.out.println("C"); else if(num==10) System.out.println("D");
「徹底攻略Java SE 11 Silver問題集[1Z0-815]対応」p.78 部分抜粋
はい、私はこの書き方が本当に嫌いです。"C"が表示されます。
eclipseを開いて書いてみると、下記のように段落下げしてくれます。
int num = 10; if(num==100) System.out.println("A"); else if(10<num) System.out.println("B"); else if(num==10) System.out.println("C"); else if(num==10) System.out.println("D");
これならまあわかりやすいけど、やっぱり括弧があった方が私は好きなんですよね。
作ったものを他人が修正したり、引き継ぐことがありますし。
- switch文
使える:
・int型以下の整数方、ラッパークラス
・文字、文字列
・列挙型 Enum
boolean、long、double、float使えない
- 定数
final使う
const使えない
4章
- do while()
if文と違って{}ないとコンパイルエラー。
- ラベル
break、continueのとき制御を移す箇所を指定出来る。
勉強するよりまとめる方が面倒だった……( ^ω^)