Byteのソースコード検索

1808 ワード

byteは1バイト、8ビット、-128~127
Byte内部にはbyteクラスのインスタンス作成を維持するためのByteCache内部クラスがあり、オブジェクトのインスタンスをより多重化することができます.
 Byte cache[] = new Byte[-(-128) + 127 + 1];  // 256 ( )
  • クラスには静的finalの配列が宣言され、
  • は、配列のサイズ−127〜128を静的コードブロックのデフォルトで初期化する.
  •  static {
                for(int i = 0; i < cache.length; i++)
                    cache[i] = new Byte((byte)(i - 128));// (-128 127)
            }
    

    私たちが呼び出した時

    public static Byte valueOf(byte b) {// byte, -127 128,
            final int offset = 128;
            return ByteCache.cache[(int)b + offset];// 128, 256 , 
        }
    
  • 補足知識は、クラスがデフォルトで呼び出されたとき(ロードされたとき)に1が先に呼び出される場合です.staticの静的ブロック2.次に、構築コードブロック3を呼び出す.初期化メンバー変数を実行します.オブジェクトInner*のデフォルトjvmはメンバー変数に0またはnullの値を割り当てます.クラスのメンバー変数は、値を割り当てるかどうかにかかわらず、さまざまな初期化の前にバイナリ0またはnullに設定されています.
  •  static {
            System.out.println("static");
        }
    
        {
            System.out.println("{}");
        }
    private Inner i = new Inner(); //a private member
        class Inner {
            public Inner() {
                System.out.println(" ");
            }
        }
    
    印刷
    static
    {}
     
    

    小テスト:

        Byte aByte1 = Byte.valueOf((byte) 11111); 
        Byte aByte3 = Byte.valueOf((byte) 11111);
      // 2 , , 
        Byte aByte2 = new Byte("103");// , aByte1 aByte3 
        System.out.println(aByte1==aByte2);
        System.out.println(aByte1.equals(aByte2));
        aByte2 = Byte.valueOf((byte) 11111);
        System.out.println(aByte1);
        System.out.println(aByte1==aByte2);
        System.out.println(aByte1==aByte3);
        System.out.println(aByte1.equals(aByte2));
    

    結果:

        false
        true
        103
        true
        true
        true
    
    ==比較はオブジェクトの参照であり,equalsはオブジェクトの内容を比較する.