Heim > Java > javaLernprogramm > Detaillierte Erläuterung des Bereichs von Ganzzahlwerten in Java

Detaillierte Erläuterung des Bereichs von Ganzzahlwerten in Java

黄舟
Freigeben: 2017-09-09 10:34:24
Original
3160 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich den Beispielcode des Ganzzahlwertbereichs in JAVA vor. Freunde, die ihn benötigen, können darauf verweisen.

Ohne weitere Umschweife werde ich den Code direkt für Sie veröffentlichen Der Code lautet wie folgt:


package com.test;
public class Test {
  public static void main(String []args) {
   Integer a = 100;//此处若使用new,则==值必为false
   Integer b = 100;
   System.out.println(a==b);//true
   Integer c = 150;
   Integer d = 150;
   System.out.println(c==d);//false
  }
}
Nach dem Login kopieren

Was ist der Grund dafür?

 1. Beim Kompilieren von Java wird Integer a = 100; in -> Integer a = Integer.valueOf(100);

 2 übersetzt. Beim Vergleich handelt es sich immer noch um einen Vergleich von Objekten

 3. Im JDK-Quellcode


public static Integer valueOf(int i) { 
  final int offset = 128; 
  if (i >= -128 && i <= 127) { // must cache 
  return IntegerCache.cache[i + offset]; //符合值范围时候,进入也创建好的静态IntergerCache,i+offset的值表示去取cache数组中那个下标的值
  } 
  return new Integer(i); //当不符合-128 127值范围时候。记住用的:new,开辟新的内存空间,不属于IntergerCache管理区
}
Nach dem Login kopieren

Und


private static class IntegerCache { 
  private IntegerCache(){} 
  static final Integer cache[] = new Integer[-(-128) + 127 + 1]; //开辟-128到127的内存区。有0的位置哦
  static { 
    for(int i = 0; i < cache.length; i++) 
      cache[i] = new Integer(i - 128); //为内存区的数组每个对象赋值
    } 
  }
Nach dem Login kopieren

Hier ist die Java-Initialisierung zur Verbesserung Effizienz Es wird ein ganzzahliges Objekt zwischen -128 und 127 erhalten, sodass die Zuweisung das gleiche Objekt innerhalb dieses Bereichs ist.

Weiteren Satz hinzufügen


Integer a = 100;
  a++;
  //这边a++是新创建了一个对象,不是以前的对象。
  public static void main(String []args) {
    Integer a = 100;
    Integer b = a;//此时b指针指向值为100的堆地址 即a的堆地址,a==b成立
    a++;//此时a指向的值发生变化为101,a指针指向101的堆地址。而b任然指向100
    System.out.println(a==b);//false
  }
Nach dem Login kopieren

Zusammenfassung

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Bereichs von Ganzzahlwerten in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage