【333天】我愛刷題系列092(2018.01.04)

叨叨兩句

  1. ~

牛客網——java專項練習071

1

如下程序段的輸出結果爲:java

public class EqualsMethod
{
    public static void main(String[] args)
    {
        Integer n1 = new Integer(47);
        Integer n2 = new Integer(47);
        System.out.print(n1 == n2);
        System.out.print(",");
        System.out.println(n1 != n2);
    }
}

正確答案: B
A false,false
B false,true
C true,false
D true,true緩存

使用Integer a = 1;或Integer a = Integer.valueOf(1); 在值介於-128至127直接時,做爲基本類型。
使用Integer a = new Integer(1); 時,不管值是多少,都做爲對象。
有些人說的看源碼選C,這裏有個誤區所謂的緩存,是在使用valueOf的時候使用的,
Integer n3 = Integer.valueOf(47)
Integer n4 = Integer.valueOf(47);
這裏的n3==n4纔是true。
若是直接使用new一個對象,從構造函數來看:
    public Integer(int value) {
        this.value = value;
    }
就是徹底不一樣的兩個對象,沒有使用所謂的緩存。

2

有以下4條語句:()函數

Integer i01=59;
int i02=59;
Integer i03=Integer.valueOf(59);
Integer i04=new Integer(59);

如下輸出結果爲false的是:
正確答案: C
A System.out.println(i01==i02);
B System.out.println(i01==i03);
C System.out.println(i03==i04);
D System.out.println(i02==i04);this

①不管如何,Integer與new Integer不會相等。不會經歷拆箱過程, 
  ②兩個都是非new出來的Integer,若是數在-128到127之間,則是true,不然爲false 
  java在編譯Integer i2 = 128的時候,被翻譯成-> Integer i2 = Integer.valueOf(128);而valueOf()函數會對-128到127之間的數進行緩存 
  ③兩個都是new出來的,都爲false 
  ④int和integer(不管new否)比,都爲true,由於會把Integer自動拆箱爲int再去比
相關文章
相關標籤/搜索