🗒️Java字符串比较 == 和 equals 的区别 intern

type
status
slug
date
summary
tags
category
password
icon

一、== 和 equals 的区别?

如果⽐较的对象是基本数据类型,则⽐较的是数值是否相等;如果⽐较的是引⽤数据类型,则⽐较的是对象的地址值是否相等。 equals ⽅法:⽤来⽐较两个对象的内容是否相等。注意:equals ⽅法不能⽤于⽐较基本数据类型的变量。如果没有对 equals ⽅法进⾏重写,则⽐较的是引⽤类型的变量所指向的对象的地址(很多类᯿新了 equals ⽅法,⽐如String、Integer 等把它变成了值⽐较,所以⼀般情况下 equals ⽐较的是值是否相等)。

二、Java字符串比较

输出结果:
解析:
"=="符号是判断地址是否相等,所以每次"new String("")"都会有自己地址空间所以s1和s3,s4,s5为"false"。而s1和s6为什么也为"false"呢?这是因为字符串变量相加会额外创建StringBuilder调用append方法,之后会StringBuilder转换String,在此会new对象,因此也为false。
"equals"只是判断值是否相等,所以s1和s5,s6为"true"。
"intern"字符串的值输出无任何变化,在调用s5.intern()方法的时候会返回”abc”,但是这个方法会首先检查字符串池中是否有”abc”这个字符串,如果存在则返回这个字符串的引用,否则就将这个字符串添加到字符串池中,然会返回这个字符串的引用。

三、在JVM中JAVA String a = “abc“ 中发生了什么

上一篇
Redisson延迟队列
下一篇
jar包添加到本地
Loading...
文章列表
王小扬博客
产品
Think
Git
软件开发
计算机网络
CI
DB
设计
缓存
Docker
Node
操作系统
Java
大前端
Nestjs
其他
PHP