【Java】String == 和equals()
来源:互联网 发布:马库斯·斯马特数据 编辑:程序博客网 时间:2024/06/03 17:57
public static void main(String[] args) { String a = "scd"; String b = null; String c = new String("scd"); System.out.println("a = "+a); System.out.println("b = "+b); System.out.println("c = "+c); System.out.println("a+b+c = "+a+b+c); //System.out.println("b.equals(null)? (equals):"+b.equals(null));//NullPointerException System.out.println("b ==null?:"+(b == null));// == 优先级小于+ System.out.println("a == c?"+(a ==c));}
//运算结果://a = scd//b = null//c = scd//a+b+c = scdnullscd//b ==null? (==):true//a == c?false
比较字符串值是否相同一般用euqlas()方法。判断字符串是否为null,用==即可,因为
当字符串本身为null值时,使用.equals会报NullPointerException。
从其他博客看到解释如下:
对字符串的相等判断,==判断的是地址是否相同,equals()判断的是字符值是否相同。
如果都是用String a = "abc"这样直接赋值的方式,==相同;如果其中一个是new String("abc"),则==不同,equals()相同。
大多数时候==跟equal()的结果都是相同的。这是因为String对象是不变模式的,如果你不是明确地new一个String对象,Java对于String对象的保存默认的
是会把新生成的String 对象放到一个缓冲区,然后每次判断缓冲区中是否已经有了这个对象,如果有了,那么后建立的同样字符值的String对象也会指向
最初建立是该字符值对象的地址。也就是说字符值相同的时候,大多数情况下地质也是相同的。==与equal()效果是相同的。但是当对象是
str = new String(“abc”)生成的而不是直接str = “abc”这样赋值生成,或者经过了一些字符串连接处理,或者通过StringBuffer等对象生成,都会在内存中
开辟新的地址的,这个时候==和 equal()结果是不同的。
是不是稍微有些复杂?这里需要一些关于内存,堆栈,对象保存方面的理解。我不想纠缠于这个问题的讨论。如果不能理解,那么只要记住如果你想要判
断两个字符串的字符值是否相等,没有别的要求的时候,那么请使用equal()而不是==,至于什么时候需要使用==,我想当你需要的时候,你自然就会明
白了。实际上,对于字符串的判断,我们很少需要用==的。
0 0
- Java String equals和==
- java string equals 和 ==
- 【Java】String == 和equals()
- Java String中的==和equals()
- Java String == equals
- java string == equals
- String ==和equals
- String"=="和equals
- java Object equals 和 == String equals 和 == 的异同
- Java里String 的equals和==
- java和c#中的String equals == 比较
- Java里String 的equals和==
- java的String的equals方法和"=="比较
- java 中String中的equals和==
- Java String equals和==的详细介绍
- Java比较String ==和equals() 解析
- Java中String的equals和==
- java:String使用equals和==比较的区别
- 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
- fastjson使用方法
- linux dict
- Date,Calendar实例
- Anroid调用系统相机或相册获取图片
- 【Java】String == 和equals()
- Linux命令之必须掌握的十条命令
- notifyDataSetInvalidated和notifyDataSetChanged有什么区别
- web.xml标签顺序
- 指针数组 和 数组指针
- 史上最详细的Android Studio系列教程一--下载和安装
- 现在开始写博客啦
- Qt项目管理
- respberry pi 3学习