Integer和String 相等判断

news/2024/9/1 3:08:09

Integer和String 相等判断

Integer

Integer 有一个缓存,范围为-128~127,Integer i1 = 10,在字节码中实质是调用了Integer.valueOf,在此范围内返回的就是IntergerCache中的Integer对象,否则会返回新的Integer对象
举例:

  • 当变量 i1i2 在缓存范围内,使用的是内部缓存数组中的同一个对象,返回 true

    Integer i1 = 10;
    Integer i2 = 10;
    System.out.println(i1 == i2);//true
    
  • i3i4 不在缓存范围内,他们是两个对象,返回false,此时 缓存中没有,所以只能自行产生新对象:

    Integer i3 = 128;
    Integer i4 = 128;
    System.out.println(i3 == i4);//false
    
  • Integer x = 5 与 int y =5 的相等判断,返回True(因为有自动拆箱的操作):

    Integer x = 5;//调用Integer.valueOf 从数组中返回
    int y = 5; // 基本数据5 
    System.out.println(x == y);//true
    

    Integer x = 5;调用了调用 Integer.valueOf从数组中返一个Integer对象。然后 y 是 基本数据类型的 5。
    x = = y x == y x==y 的比较虽然表面看是引用类型和基本类型的比较,但是 x会自动拆箱为基本数据类型,最终的比较就是x和y的值进行的比较,显然相等,true

String

例子1:

  • str是通过 StringBuilder 通过 append 拼接之后 toString 返回的一个字符串,而 StringBuildertoString实质上就是new了一个String (并且使new 在堆中,而非常量池中)

  • str1是通过字面量方式加载到内存,保存到局部变量表中

  • 所以结果为:str 不等于 str1(可以从存储的地方分析)

    String str = new String("hello") + new String("world");
    String str1 = "helloworld";
    System.out.println(str == str1);//false
    

举例2:

  • 两个new的String是不相等的

    String str2 = new String("helloworld");
    System.out.println(str == str2);//false
    

http://www.niftyadmin.cn/n/4617749.html

相关文章

.ascx和网页.aspx之间的交互方式

1.aspx文件:public void SetLabel(string str) { this.Label1.Text str; ; } ascx文件;protected void Button1_Click(object sender, EventArgs e) { System.Web.UI.Page p this.Page; Type pageType p.GetType(); MethodInfo mi pa…

Python爬虫实战之爬取链家广州房价_04链家的模拟登录(记录)

问题引入 开始链家爬虫的时候,了解到需要实现模拟登录,不登录不能爬取三个月之内的数据,目前暂未验证这个说法是否正确,这一小节记录一下利用浏览器(IE11)的开发者工具去分析模拟登录网站(链家)的内部逻辑过程,花了一个…

JVM 中篇(1):Class 文件结构

文章目录查看二进制字节码的三种方法:Class 字节码文件结构Class 文件数据类型Magic Number(魔数)文件版本号常量池集合常量池计数器:constant_pool_count常量池表: constant_pool [] (常量池)字面量和符号引用补充说明&#xff1…

qs库

源代码:github.com/hapiman/qs Golang中querystring的处理 将结构体转化成categoryc1&categoryc2&page2&page_size50&searchmysearch的形式 -------------- ---------------->| query string ------------------ | ------------…

方法返回值类型

方法返回值类型 首先,在方法声明中我们必须指定返回值类型,如果一个方法没有返回值类型,则必须使用void关键字作为返回值类型,如果方法声明时指定了返回值类型,就必须在方法体中使用return语句返回相应类型的值&#…

idea 插件 better-mybatis-generator 1.5.5 在 mysql8.0以上遇到的坑

下载插件,重启idea 在Settings->Tools中找的Mybatis generator plugin 设置如下图: 一些选项含义: 一个是dao package:generator 还有dao postfix java类文件后缀 Mapperxml package xml文件存放路径:generatormo…

在AD中如何实现统一桌面

实验环境,在公司中,老板要求市场部电脑都用统一的桌面,这时可以用AD域的组策略。实验步骤:一:找到作为背景桌面的图片,放到文件夹,并且共享,设置共享权限。二:打开组策略…

从5万到50万的秘密

从5万到50万的秘密物价上涨飞速恐怕是当今时代人们最大的一个感触。《实战理财:让你的财富滚起来》一书搜集了相关数据:“以2005年到2010年为例,五年前能买一斤牛肉的钱,在五年后已经买不到一斤猪肉;五年前能买到一只鸡…