最初に
この記事は、以下の書籍を通じてJava silverの合格に向けて自分が学んだ内容を体系的にアウトプットする記事である。(目指せ年内合格!)
徹底攻略Java SE 11 Silver問題集[1Z0-815]対応
勉強記録
2章 Javaの基本データ型と文字列操作
整数リテラル
- アンダースコア「_」を使って表現できる
- 先頭と末尾、記号の前後は不可
- 接頭辞で判断
- 0→8進数
- 0x→16進数
- 0b→2進数
char型
- char型の変数に代入できるもの
- ‘’で囲った文字リテラル
- ‘’で囲った¥uから始まるunicode番号
- 0~65535までの数値
- nullは代入できない
- nullは、参照型変数が何も参照しないことを表す
識別子
- 変数などの名前のこと
- 予約語は使えない
- 使える記号は、アンダースコア「_」と通過記号のみ
- 数字から始めてはいけない
var
- javaでの型推論での宣言に使用
- 変数の方を推論できない場合は、コンパイルエラーとなる
- ローカル変数の宣言にしか使えない(フィールドの宣言には使えない)
immutableオブジェクト
- 不変なオブジェクト
- java.lang.Stringや、java.io.Fileのインスタンス
- Stringのimmutableとは?
- プログラムを動かすときはメモリの領域を使いながら処理している
- メモリには、ヒープ領域とスタック領域がある
- ヒープ領域は、アプリケーションの要求によって確保される領域
- スタック領域は、一時的な記憶領域
- https://hidemaru.blog/immutable-java/
- 参照型変数をメソッド引数に渡すときなど注意
- https://qiita.com/dung717/items/6552005a4fdccc893c43
indexOfとcharAtの、引数で指定した文字等がない場合の違い
- indexOf:-1が戻される
- charAt: StringIndexOutofBoundsExceptionが投げられる
文字列の連結
- メソッド
- concatは、String
- appendは、StringBuilder
- 参照を持たないString型変数に対し、+や+=で連携するとき、nullは、「null」という文字列に置き換わる
- StringBuilder
- 保持している文字列+余分のバッファ(デフォルトで16文字分)を持つ
感想
- 1年くらいsaas系の新規プロダクト開発に携わった経験でしか語れないが、Javaでvarを使った記憶・使われているのを見た記憶がない。(バグの温床になりうるのであまり使わないのかな?)
- 同様に、整数リテラルを「_」で表現したりした記憶もない。(こっちは、プログラムでそんな大きい数値を定義する場面がなかっただけ?)
- メソッド等は、読めはするがうろ覚えでその都度なんだったけ?とたまに調べたりしていたので、この機会にこのレベルは覚えとかないと(世界一流エンジニアの牛尾さんもいつでも取り出し可能な知識をどれだけ持てるかが生産性に寄与するって言っていたし)と感じた。
- Javaのスタック領域とヒープ領域の部分は恥ずかしい話、Stringが参照型でimmutableである。くらいの理解だったので、この機会に少し理解を深められて良かった。
- (特に以下の記事の例題を解きながら自分の理解の浅さを痛感。)https://qiita.com/dung717/items/6552005a4fdccc893c43