【你问我答】Java中如何判断字符串相等?

问题描述:

Java中如何判断字符串相等?

回答有奖:

选取一位认真回答问题的牛友,赠送200牛币!
▶回答尽量有自己的思考,不要单纯的只是复制粘贴定理定义,或者他人blog哦~

你问我答问题汇总:点击进入
关注你问我答栏目:点击关注

你问我答 - 答问题,成大佬,拿牛币!
你问我答是牛客新栏目,每周1期几个面试中真实遇到的问题,
牛友在问题贴下留下自己的知识,经验与见解,
帮助更多牛友了解更多技术相关知识!

#悬赏##Java##面试题目#
全部评论
如果是判断内容的话使用equals,如果是比较内存地址的话使用 ==,不过一般都是判断字符串内容的值的,使用equals就好了。
点赞 回复
分享
发布于 2020-05-20 10:35
String 中的 equals 方法是被重写过的,因为 object 的 equals 方法是比较的对象的内存地址,而 String 的 equals 方法比较的是对象的值。 当创建 String 类型的对象时,虚拟机会在常量池中查找有没有已经存在的值和要创建的值相同的对象,如果有就把它赋给当前引用。如果没有就在常量池中重新创建一个 String 对象。 所以比较字符串内容相等,则使用equals方法,如果想判断两个对象引用是否指向同一个地址,则使用 ==
点赞 回复
分享
发布于 2020-05-20 10:47
阅文集团
校招火热招聘中
官网直投
先说结论,判断字符串相等,一般使用equals()方法。 (一)“==”比较的是值【变量(栈)内存中存放的对象的(堆)内存地址】,用来判断两个对象的地址是否相同,即是否是指相同一个对象。如果是引用类型,则一定是同一个对象的引用。比较的是真正意义上的指针操作。 (二)equals用于比较两个对象的类型和值是否相同【不是比地址】,不一定是同一个对象。换句话说,equals用来比较的是两个对象的内容是否相等。 【特别注意】Object类中的equals方法和“==”是一样的,没有区别,而String类,Integer类等等一些类,是重写了equals方法,才使得equals和“==不同”,所以,当自己创建类时,自动继承了Object的equals方法,要想实现不同的等于比较,必须重写equals方法。 “==”比”equals”运行速度快,因为”==”只是比较引用.
点赞 回复
分享
发布于 2020-05-20 11:17
1、java中字符串的比较是==比较引用,equals 比较值 so我们经常习惯性的写上if(str1==str2),这种写法在java中可能会带来问题  example1: String a="abc";String b="abc", 那么a==b将返回true。因为在java中字符串的值是不可改变的,相同的字符串在内存中只会存  一份,所以a和b指向的是同一个对象; example2:String a=new String("abc"); String b=new String("abc");  那么a==b将返回false,此时a和b指向不同的对象。  2、用equals方法比较的是字符串的内容是否相同, example:String a=new String("abc");   String b=new String("abc"); a.equals(b);将返回true。 通常情况下,为了避免出现上述问题,判断字符串是否相等使用equals方法  if(str1.equals(str2) ){ System.out.println("字符串相等"); }else{ System.out.println("字符串不相等"); }
点赞 回复
分享
发布于 2020-05-20 15:18

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务