首页 > 其他分享 >JVM-常量池

JVM-常量池

时间:2023-12-02 23:55:30浏览次数:30  
标签:常量 -- System String JVM println out

概要:

1.Java 基本类型的包装类的大部分都实现了常量池技术,即 Byte、Short、Integer、Long、Character、Boolean;
2.且数值 [-128,127] 的相应类型的缓存数据,但是超出此范围仍然会去创建新的对象。
3.两种浮点数类型的包装类 Float、Double 并没有实现常量池技术。

实例:

     Integer i = 1;
        double d2 = 1.0;
        /**
         * 有小数点的时候必须加上f后缀
         * 编译器可以自动向上转型,如int 转成 long 系统自动转换没有问题,因为后者精度更高
         * byte--short--char--int--long--float--double,由左到右等级升高,double为最高级;
         * double 转成 float 就不能自动做了,所以后面的加上个 f;也就是说必须写成float f=(float)3.4 或float f = 3.4f
         */
        float f2 = 1.0f;
        Double d3 = 1.0;
        /**
         * true
         * 常量池技术
         */
        System.out.println(i == d2);
        System.out.println(i == f2);

        /**
         * false
         */
        System.out.println(i.equals(d3));

        Integer i1 = 33;
        Integer i2 = 33;
        /**
         * 输出true
         */
        System.out.println(i1 == i2);
        Integer i11 = 128;
        Integer i22 = 128;
        /**
         * 输出false
         * 范围是-128到127
         */
        System.out.println(i11 == i22);
        Double i3 = 1.2;
        Double i4 = 1.2;
        /**
         * 输出false
         */
        System.out.println(i3 == i4);


        String a = "11";
        String b = "11";
        /**
         * 输出true
         * 因为只在常量池创建了对象
         * 对于字符串:其对象的引用都是存储在栈中的,
         * 如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,
         * 如果是运行期(new出来的)才能确定的就存储在堆中。对于equals相等的字符串,
         * 在常量池中永远只有一份,在堆中可能有多份。
         */
        System.out.println(a == b);

        String c = new String("129222");
        String d = new String("129222");
        /**
         * 输出false
         */
        System.out.println(c == d);

 

标签:常量,--,System,String,JVM,println,out
From: https://www.cnblogs.com/nxjblog/p/17872495.html

相关文章

  • JVM-垃圾回收
    虚拟机栈:描述的是方法执行时的内存模型,是线程私有的,生命周期与线程相同,每个方法被执行的同时会创建栈桢(下文会看到),主要保存执行方法时的局部变量表、操作数栈、动态连接和方法返回地址等信息,方法执行时入栈,方法执行完出栈,出栈就相当于清空了数据,入栈出栈的时机很明确,所以这......
  • Java环境变量配置及报错java --version Error: could not open `D:\APP\Develop\JA
    C:\Users\Administrator>java--versionError:couldnotopen`D:\APP\Develop\JAVA\jre\lib\amd64\jvm.cfg'Java环境变量的配置控制面板→系统→高级系统设置→环境变量在下方系统变量中新建在下方系统变量中找到Path,双击打开,新建两个%JAVA_HOME%\bin%JAVA_HOME%\jre\b......
  • JVM内存模型
    JVM内存模型堆:新生代老年代常量池字符串常量池运行时常量池虚拟机栈:栈帧方法区:元空间本地方法栈:程序计数器:java内存结构(JMM内存模型)主内存:工作内存:java线程高速缓存操作变量时的规则:Java内存模型规定了所有的变量都存储在主内存线程的工作内存中保存了被该......
  • 查看JVM默认参数
    java-XX:+PrintFlagsFinal-version[Globalflags]uintxAdaptiveSizeDecrementScaleFactor=4{product}uintxAdaptiveSizeMajorGCDecayTimeScale=10{product}u......
  • 数仓实践丨常量标量子查询做全连接导致整体慢
    本文分享自华为云社区《GaussDB(DWS)性能调优:常量标量子查询做全连接导致整体慢》,作者:Zawami。问题描述由于SQL中存在标量子查询同另一查询做笛卡尔积使SQL整体慢。标量子查询,即结果集只有一行一列的子查询。这里导致的SQL语句执行慢不只是在于做笛卡尔积慢,也会使后续聚合更慢......
  • 常量中有换行符
    出现该问题的原因是编码问题,解决方案:C++解决报错常量中有换行符_c++常量中有换行符_在下令狐的博客-CSDN博客将高级保护选项添加到文件目录中:C++解决报错常量中有换行符_c++常量中有换行符_在下令狐的博客-CSDN博客......
  • Day12 变量、常量、作用域
    变量变量:可以变化的量java是一种强类型语言,每个变量都必须声明其类型。java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。//数据类型变量名=值;可以使用逗号隔开来声明多个同类型变量(不建议这么做会很乱)注意事项:每个变量都有类型,类型可以是基本类......
  • python基础之变量与常量
    注释语法#学语言先学注释,注释是代码之母!1.什么是注释? 注释就是对一段代码的解释,它不参与代码的实际运行,起到提示作用.2.如何使用注释? 方式一: 警号#单行注释""" 还可以借助于快捷键 code reformatcode ctrl+......
  • Java learning Day2 常量 变量 运算符 Scanner 方法 数组
    常量:字面值常量(直接写值的常量)+自定义常量变量:long型变量后必须加L;小数字面值常量默认double 若用float需加F;变量强转:小的会自动转成大的float虽然只有4个字节但是比所有整型的取值范围都大    浮点型有精度问题  表达式类型提升:如果表达式当中存在多种数......
  • Python变量和常量
    【一】注释语法【1】什么是注释注释就是就是对代码的解释说明,注释的内容不会被当作代码运行【2】为什么要注释增强代码的可读性【3】如何使用注释代码注释分单行和多行注释1、单行注释用#号,可以跟在代码的正上方或者正后方2、多行注释可以用三对双引号""""""【4】......