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

type
status
slug
date
tags
summary
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“ 中发生了什么

上一篇
nrm|npm快速切源
下一篇
Redisson延迟队列
Loading...
文章列表
王小扬博客
Git
AI
产品
film
AI Code
Java
其他
计算机网络
DB
云原生
Node
Docker
操作系统
Elasticsearch
Apollo
Nestjs
Think
大前端
PHP
软件开发
设计
生活技巧
CI
缓存