mohuneko’s blog

かんばる駆け出しエンジニアのブログです

【Java Silver】基本データ型・文字列操作【初心者】

初心者エンジニア(の末端)がJava Silverに挑戦するためにもくもく勉強します
Java Silverのテストにも出題される内容をまとめていますので、同じような境遇の方の参考になれば幸いです
Qiitaの方でも0からアプリケーション実装をしているので、
もし良かったら参考にしてください

qiita.com

 こんな本で勉強しています

 

今回は、データ型と文字列操作の内容のトピックです
全体的な文法についてはQiitaにまとめていますので参考にしてください qiita.com

リテラル

整数リテラルのルール

  • 先頭が0bであれば 2進数 (0b0111111)
  • 先頭が0であれば8進数 (0413)
  • 先頭が0xであれば 16進数 (0x10B)
  • 桁数の多い数値を見やすくするためにアンダーバーで区切ることができます
    (注)リテラルの先頭と末尾・記号の前後には記述できません
//NG例
int a = _123_;
float b = 3_.14_F;
int h = 0x_52;

文字リテラルと文字列リテラル

  • 文字リテラル(char型)は、'a'のようにシングルクォーテーションでくくります
  • 文字列リテラルは、"abc"のようにダブルクォーテーションでくくります
  • Unicodeの文字符号化形式を使った場合、\uの後に16進数の4桁をつけて、1文字を表すことができます
  • 🌟char型の変数に代入できるのは、'でくくった文字リテラルUnicode文字、0~65535までの数値
  • nullは代入できません(nullは何も参照しないことを表す)
char c = "\u30A2"; //カタカナのア
char d = 65; //アルファベットのA

識別子

  • 識別子とは、変数やメソッド、クラスの名前のことです

識別子の命名規則

  • 予約語を識別子に使うことはできません (for,void,intなど)
  • 使える記号はアンダーバーと通貨記号($)のみ ※$以外の通貨記号は文字化けの可能性あり
  • 数字から始めてはいけません (1abcなど)
  • 識別子内に{}や.は使えません
//OK例
int $a = 123;
float _0 = 3.14;

//NG例
int ${a} = 123;
float a.b = 3.14;

型推論(var)

  • 変数宣言時にJavaがローカル変数のデータ型をいい感じに推測してくれます
  • 'var a = 1;'のように宣言することで、コンパイル時にコンパイラが代入演算子=の右辺から変数の型を予測し、そのデータ型に置き換えます
  • リテラルのみではなく、メソッドの戻り値を受け取る際に、メソッドの定義から戻り値の型推論を行うことができます  ※ラムダ式では推論できない
  • ジェネリクスのダイアモンド演算子(<>)では変数宣言時の型パラメータを参照します。 もし型情報がなかったら、Object型として型パラメータが与えられます
var e = new ArrayList<>();
var e = new ArrayList<Object>();
  • varの型推論ローカル変数の宣言に使えて、フィールド変数には使えません
public class Main {
    //フィールド変数(メンバ変数)
    private String FieldNeko = "tama";
    
    public static void main(String[] args) throws Exception {

        //クラスをインスタンス化してMethodを呼び出す
         new Main().Neko();
    }
    
    public void Neko(){
        //ローカル変数(このメソッド内でのみ有効)では型推論可能
        var neko = 1;
        
        //フィールド変数はメソッド内からアクセス可(this.valueでもOK)
        System.out.println(FieldNeko); //tama
    }
}
  • 引数の型宣言にも型推論が使えません
//NG
public class Neko{
    public void test(var value) 
        System.out.println(value);
}
  • 🌟varの型推論コンパイル時に実行され、代入演算子の右辺から、変数のデータ型が推論され、そのデータ型に置き換えられます
  • 🌟変数宣言以降の行は考慮されません

今日の問題

次のうち、コンパイルエラーにならないものはどれでしょうか

var a;
var b = null;
var c = () -> {};
var d = {1, 2, 3};
var e = new ArrayList<>();
  • 正解はeでした!(Object型として型パラメータが与えられます)

 本日もお疲れ様です