美文网首页
Java-基础-数据类型-常量池

Java-基础-数据类型-常量池

作者: 杨昌沛 | 来源:发表于2018-11-19 23:15 被阅读0次

整数类型常量池范围:[-128, 127],Byte Short Integer Long Character 都是这个范围,当使用
Integer a = 127;
Integer b = 127;
时 a == b 返回 true
每个整数类型的封装类型中都有一个 封装类型简单名称 + Cache 私有静态内部类用于保存其常量数字。当上述五种基本类型的封装类型用字面值来进行赋值时,如果其值大小在常量池的范围之中则直接使用常量池的引用,否则 new 一个出来。

字符串的常量池通常来源于class文件的字符串常量,并且必须在编译期就能确定的字符串,并且有动态添加的特性,例如使用String#intern()方法。和整数常量一样,字符串的常量之间的 + 运算仍然是一个常量(整数类型+运算后不超出范围的前提下),并且整数类型的四则运算结果只要不超出范围都是引用常量池的变量,同时即便是采用下面的方式仍然是相等的 。

Integer a = 127;
Integer b = 126 + new Integer(1);
a == b; // true

Integer a = new Integer(126) + new Integer(1);
Integer b = 128 - 1;
a == b; // true
public class A {
  private static final String A = "Hello";
  private static final String B = "World";
  public static void main(String...args) {
    System.out.println("HelloWorld" == (A + B)); // true 编译时 A 和 B的值已经确定了
  }
}

public class B {
  private static final String A;
  private static final String B;
   
  static {
    A = "Hello";
    B = "World";
  }

  public static void main(String...args) {
    System.out.println("HelloWorld" == (A + B)); // false   编译时不确定A和B的值
  }
}

public class C {
  private static final String A = new String("Hello");
  private static final String B = new String("World");
  public static void main(String...args) {
    System.out.println("HelloWorld" == (A + B)); // false 编译时 A 和 B的值不能确定
  }
}

其实根本还是 基本类型比较值 引用类型比较地址

相关文章

  • Java-基础-数据类型-常量池

    整数类型常量池范围:[-128, 127],Byte Short Integer Long Character 都...

  • java基础类型、String类理解、版本对比、1.8新特性

    1、java基本数据类型及长度 2、jvm的常量池: JVM常量池浅析Java常量池理解与总结 Java中的常量池...

  • Java-常量池

    相关概念 常量池的定义常量池(constant pool):指的是在编译期被确定,并被保存在已编译的.class文...

  • java 提升攻略——Java String:字符串常量池原理及

    作为最基础的引用数据类型,Java 设计者为 String 提供了字符串常量池以提高其性能,那么字符串常量池的具体...

  • 对基本类型包装类常量池的补充

    @[toc]在前文JAVA-常量及常量池中,对java中的各种常量池进行分析。在具体的细节中,并不完善。现在对数据...

  • Java知识图谱与细节

    基础 数据类型基本类型引用类型不可变类型值传递 / 引用传递常量池strictfp 基本语法访问控制 public...

  • 安卓堆、栈、常量池区别

    栈:存放基础数据类型跟局部变量会自动回收堆:存放new 对象,GC会回收这里面的对象常量池:存放字符串常量和基本类...

  • JS基础

    JavaScript概述 、 JavaScript基础语法 、 变量和常量 、 数据类型 数据类型转换 、 运算符...

  • Hello Java

    目录 Java-基础(1/6) Java-对象(2/6) Java-核心库类 上(3/6) Java-核心库类下(...

  • 字符串常量池

    静态常量池,运行期常量池,字符串常量池 静态常量池 运行时常量池 字符串常量池 问题 结果: 验证new Stri...

网友评论

      本文标题:Java-基础-数据类型-常量池

      本文链接:https://www.haomeiwen.com/subject/sejzfqtx.html