Java:String之间通过==比较的情况
2024-09-30 04:21:44
大家都知道在String之间的内容比较的时候,是通过equals函数比较的。
但是在在许多的面试题中,总是出现一堆的判断两个String对象通过==比较的结果,实际上是考的Java内存分配机制。
Java内存分配机制中,常量是保存到常量区的,而对象是保存到堆里面的,基本类型的临时变量是保存到栈里面的,所以就有了下面的一段代码:
public class Test { public static void main(String[] args) {
String x = "abc1";
String s = "1";
int i = 1; String y = "a" + "b" + "c" + 1;
System.out.println(x == y);//true y = "a" + "b" + "c" + "1";
System.out.println(x == y);//true y = "ab" + "c" + 1;
System.out.println(x == y);//true y = "ab" + "c" + 3 % 2;
System.out.println(x == y);//true y = "abc" + s;
System.out.println(x == y);//false y = "abc" + i;
System.out.println(x == y);//false y = "abc" + getS();
System.out.println(x == y);//false } public static String getS() {
return "1";
}
}
从这段代码可以看出,如果想要x==y是true,则x和y都必须是通过常量初始化的或拼接得到的,否则都会返回false。
最新文章
- Spring Boot启动流程详解(一)
- 怎样使用My97日期控件
- 理解 Cinder 架构 - 每天5分钟玩转 OpenStack(45)
- nodejs入门 SSH服务器远程部署nodejs2
- LeetCode: Path Sum II 解题报告
- apache学习
- [React] Radium: Updating Button Styles via Props
- iPhone 设置铃声
- CI Weekly #16 | 从另一个角度看开发效率:flow.ci 数据统计功能上线
- FPGA IN 金融领域
- hdu_1017(水水水,坑格式)
- win10被微软流氓更新后编译基于visual Studio的web项目报[ArgumentOutOfRangeException: 指定的参数已超出有效值的范围
- PHP Misc. 函数
- css背景图片充满DIV
- jquery横向纵向鼠标滚轮全屏切换
- mysql进制之间的转换
- 开源文件服务器file-service介绍
- javaScript之表格操作<;一:新增行>;
- camera-arm-RPI
- vue控制台报错
热门文章
- 【flyway】Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name &#39;flywayInitializer&#39; def
- Oracle RAC环境下怎样更新patch(Rolling Patch)
- BUPT复试专题—找K小数(2011)
- 转:libev和libevent的设计差异
- SolidEdge如何修改线型和线宽
- linux系统之shell编程-正則表達式
- leetcode题解||Container With Most Water问题
- UVA 11246 - K-Multiple Free set(数论推理)
- redis中关于过期键的删除策略
- spark0.9.1集群模式执行graphx測试程序(LiveJournalPageRank,新增Connected Components)