String类型的 == 和 equals() 判断,及运算符优先级的问题
来源:互联网 发布:格式化数据恢复 编辑:程序博客网 时间:2024/05/10 13:03
public class Test { public static void main(String[] args) { String s1 = "ab" + "c"; String s2 = "abc"; System.out.println(s1 == s2 + " : " + s1.equals(s2)); }}
上面程序运行的输出结果是什么呢?
在这题目里有两个知识点
== 判断的是 变量所指向的引用地址是否相同,equals()判断的是引用所指向的值是否相等。编译器在编译时就会把 s1 =“ab”+”c” 的值合并成s1=“abc”,我们用反编译器查看 Test.class即可验证。
第二个就是 运算符优先级的问题,+的优先级高于 ==,所以我们的输出语句实际输出的是 (s1 == (s2 + ” : ” + s1.equals(s2)))很显然,输出结果为false。
如果把 s1==s2外面加上括号则可以输出 两个 true。
我们再把 s1改成 s1 = arg0[0] + argo[1],在运行是再传入值
java Test “ab”“c”则会输出 false : true 。
0 0
- String类型的 == 和 equals() 判断,及运算符优先级的问题
- java的String类型的==和.equals()
- 类型转换和运算符优先级问题
- Equals() 和运算符 == 的重写准则及使用方法
- 强制类型转换运算符的优先级
- String 里的==和equals
- String,“==”和“equals”的用法
- 关于String的==和equals
- String类的equals和==
- String的equals和==
- String的==和equals()
- String的== 和equals 比较
- String 的 equals 和 ==
- String的equals 和 ==
- String 的==和equals()方法
- C及C++运算符的优先级和结合性
- 运算符优先级与指针类型判断
- Java和C#下String类型中的==和equals的原理与区别
- 227. Basic Calculator II LeetCode
- 安装APK运行Genymation时报错:Installation failed with message INSTALL_FAILED_CPU_ABI_INCOMPATIBLE.
- banner图片自适应
- MySQL数据库引擎介绍、区别、创建和性能测试的深入分析
- 冒泡排序C++
- String类型的 == 和 equals() 判断,及运算符优先级的问题
- C#委托与C++函数指针辨析
- 常见Js跨浏览器复制代码
- 《GLSL渲染语言入门与VBO、VAO使用:绘制一个三角形》的正确版本及源代码
- 指针基础知识 ,破坏指针数组的讨论,
- FZU 1058粗心的物理学家
- 一台电脑启动多个tomcat
- 字段定义引起的bug
- cs231n Lecture 3