String类型中"=="和"equals"的区别
"=="比较的是两个字符串的内存地址。 "equals"比较的是两个字符串的实际值。
例子1.
String s1="abc";
String s2="abc";
if(s1.equals(s2)){
System.out.println("两个字符串值相等")
}
if(s1==s2){
System.out.println("两个字符串指向同一个内存地址");
}
此时输出:两个字符串值相等
两个字符串指向同一个内存地址
why:当给s2赋值abc时,s2会自动去寻找有没有abc这个值得字符串。如果有,会copy s1(包含内存地址)。如果没有,再创建一个新内存地址。
例子2.
String s1="abc";
String s2=new String("abc")
if(s1.equals(s2)){
System.out.println("两个字符串值相等")
}
if(s1==s2){
System.out.println("两个字符串指向同一个内存地址");
}
此时输出:两个字符串值相等
why:s2创建了一个新对象,值为abc,与s1不再是同一个内存地址,所以只输出:两个字符串相等
例子3.
String s1="abc";
String s2=new String()
s2="abc";
if(s1.equals(s2)){
System.out.println("两个字符串值相等")
}
if(s1==s2){
System.out.println("两个字符串指向同一个内存地址");
}
此时输出:两个字符串值相等
两个字符串指向同一个内存地址
why: 虽然new了一个新对象,但没有在此时给值,后来赋值的时候,仍是copy 了s1的内存地址。
例子4.
String s1="abc";
String s2=new String("abc");
s2=s2.intern();
if(s1.equals(s2)){
System.out.println("两个字符串值相等")
}
if(s1==s2){
System.out.println("两个字符串指向同一个内存地址");
}
此时输出:两个字符串值相等
两个字符串指向同一个内存地址
why: 调用了intern()方法,此时s2先去找有没有abc,如果有,copy 内存地址,如果没有,创建新的。
String类型中"=="和"equals"的区别的更多相关文章
- 关于String类型中==和equals的区别。
"=="操作符的作用 1.用于基本数据类型的比较,比较的是值. 2.用于比较对象,判断对象的引用是否指向堆内存的同一块地址. equals的作用 用于比较两个对象的内容是否相同 代 ...
- String类型中 "=="和"equals"比较的差别
String类型中 "=="和"equals"比较的差别 先说明一下String类型的变量的创建方式 在创建新的String类型的变量时,首先会在缓冲区查找是否 ...
- 【原创】Java和C#下String类型中的==和equals的原理与区别
一.Java下 1.几个例子 public static void main(String[] arge) { String str1 = new String("1234"); ...
- [No0000B6]C#中 ==与equals的区别
using System; internal class Person { public Person(string name) { Name = name; } public string Name ...
- Java中“==”和 equals的区别
“==”的作用: 判断两个变量栈内存中存储的值是否相等,如果相等返回true,如果不相等返回false. 有两种形式的比较需要用到比较运算符“==”,一是两个基本数据类型之间的比较,二是两个引用数据类 ...
- 码农带你区分String类型的"=="和equals()
大家玩csdn也可以关注我的博客额http://blog.csdn.net/wujiandong25253344 情形一: String s1= new String("hello" ...
- String类中"=="、equals和普通类中"=="、equals的比较
package cn.method.demo; public class StringDemo2 { public static void main(String[] args) { String s ...
- String类中的equals()方法:
String类中的equals()方法: public boolean equals(Object anObject) { //如果是同一个对象 if (this == anObject) { ret ...
- JAVA中==与equals的区别
equals如果没有被重写的话,和==的作用是一样的,都是判断两个对象引用是否指向同一个地址.一般重写了equals()方法就表示比较它们“实际意义上相等”,比较的是内容,而不是引用地址.Java中S ...
随机推荐
- 【DP 好题】hihoCoder #1520 古老数字
题目链接 这道题的要点是状态转移的顺序. 要从低位向高位进行状态转移. Implementation string s; cin >> s; reverse(all(s)); int x, ...
- SqlServer中union 和 union all的区别
⒈UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同.⒉对重复结果的处理:UNION在进行表链接后会筛选掉重复的数据,UNION ALL不会去除重复的 ...
- 【模板】SPFA(不完全详解)
一种最短路求法(个人觉得比DIJKSTRA好用) 用于有向图. 大概思路:从根节点开始,枚举每一个点,同时更新他们所联通的点的最短路径,如果路径被更新,则把这个点入队,一直重复这个操作直到队伍为空为止 ...
- Ubuntu18.04 出现E: Sub-process /usr/bin/dpkg returned an error code (100)
You might want to reinstall dpkg by doing the following: sudo -i mkdir /tmp/dpkg cd /tmp/dpkg Mind t ...
- CentOS7部署HDP3.1.0.0
Apache Ambari是一个基于Web的支持Apache Hadoop集群的供应.管理和监控的开源工具,Ambari已支持大多数Hadoop组件,包括HDFS.MapReduce.Hive.Pig ...
- IOS手机伪类a:active失效
IOS手机伪类a:active失效:点击更改颜色,松开恢复 解决方案:OS系统的移动设备中,需要在按钮元素或body/html上绑定一个touchstart事件才能激活:active状态 docume ...
- 用原生JS写省市二级联动
HTML代码 <select id="s1"> <option value="0">~请选择省份~</option> < ...
- node + express搭建api项目
express框架 描述 express是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能. 安装 // 1.使用npm淘宝镜像--cn ...
- vscode中外部引入js文件以及里面相应的方法
随便写一个js文件,定义一个方法名,并且在组件中进行引用就算成功 ###~js function shuchu(){ console.log(1) } export { shuchu }; ...
- 从命令行运行postman脚本
为什么要在命令行中运行 可以在无UI界面的服务器上运行 可以在持续集成系统上运行 运行准备 导出collection 安装nodejs和npm(或cnpm) 安装Newman 运行及生成测试报告支持4 ...