JAva面接資料整理

4593 ワード

お気に入りはコレクションできますが、その後も更新が続きます.
2020/4/22
  • コードは次の
  • です.
    char c ='a';
    char b = c+3;

    これはコンパイルできますか?
  • もちろんだめです.cはcharタイプなので、intに変換できますが、intはcharに変換できません.少し覚えておけばいいです.小範囲は大範囲に回転でき、低精度は高精度に回転できますが、大範囲は小範囲に回転するとコンパイルエラーが発生しますが、強回転で解決できます.

  • 2.コードは以下の通り
    String a ="abc";
    String b ="abc";
    System.out.println(a==b);
    -----------------------------------
    String a = new String("abc");
    String b = new String("abc");
    System.out.println(a==b);

    上の2つのコードの実行結果はtrueですか、falseですか.
  • Stringはfinal修飾であるため、Stringは定数プールという概念があるため、aとbは同じメモリを指す.だからtrueを返します.しかし、第2セグメントのコードはnewキーワードを使用するため、スタックメモリに空間を再開するのでfalseの値になります.

  • 3.Stringはなぜfinalで修飾するのか.(前に見たことがありますが、直接見たことがあります.顔が届くはずがないと思ったので、顔がぼんやりしているまで聞かれました)
  • Stringはfinal修飾で各文字列のhashcodeを一意に実現することができる.
  • String final修飾により、スタックメモリ
  • を節約するための定数プールを実現することができる.
  • は、マルチスレッドに属するスレッドが
  • で安全であるために使用することができる.
    4:汎用消去(汎用消去を知っているかもしれませんが、なぜ汎用消去を行うのか知っていますか)
  • javaとc#はいずれも汎用型に対して使用されているが、javaで得られる汎用型は擬似汎用型であり、コンパイル期間のみ有効であり、具体的な効果もコンパイル期間に集合などとデータ集合をタイプ検証するために使用される.ただし、汎用型はjdk 1であることに注意する.5後に普及し、これは以前のjdkのバージョンと互換性を得るために、汎用的な消去が必要になった.

  • 5:コードは以下の通り
    Integer a = new Integer(50);
    Integer b = new Integer(50);
    System.out.println(a==b);
  • 上の結果はtrueであり、JAVAのIntegerにはIntegerCacheが-128~127間のオブジェクトをキャッシュするため、上のnew Integer(50)はIntegerのvalueOf()メソッドを自動的に呼び出し、このメソッドで1つのIntegerオブジェクトを返すので、同じオブジェクトを返し、自然出力の値もtrueとなる.ただし、newの値がIntegerCacheキャッシュ範囲の値を超えるとfalseとなる