A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我想要判断两个字符串的内容是否相同,最好用什么方法呢?在两个对象之间用"=="可不可以,
或者这样可不可以
if (s1.equals(s2) )

    or  if (s1.equalsIgnoreCase(s2) )

    or  if (s1.startsWith(s2) )

    or  if (s1.endsWith(s2) )

    or  if (s1.regionMatches(s1_offset, s2, s2_offset, length) )

    or  if (s1.compareTo(s2) <0)

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

5 个回复

倒序浏览
用equal()啊,String复写了Object类的equal方法,用于比较两个字符串内容是否完全相同
回复 使用道具 举报
字符串比较内容是用equals,如果忽略大小写用equalsIgnoreCase
回复 使用道具 举报
首先你要搞清楚equals和==的区别与值类型和引用数据类型
1. 值类型是储存在内存中的堆栈(后面简称栈),而引用的变量在栈中仅仅是储存的是引用数据
   变量的地址,而值本身世储存在内存中的堆中的。
   == 操作比较的两个变量的值是否相等,对于引用变量则比较的是在栈中储存的地址,
   即栈内的内容是否相等。
2.  equals操作的两个变量是否对同一个对象的引用,即堆中内容是否相同。
  ==比较的是两个对象的地址,而equals比较的是2个对象的内容。
  显然 当equals是为true时,==不一定为true;
  你要比较两个字符串内容(值类型)是否相同,即用equals

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
Equals和 ==
equals() 用于引用数据类型(除了基本数据类型8个,都是引用数据类型,包括封装类,Object子类等),  比较是否指向相同的对象, 例如 String str = "abc"; 等效于: char data[] = {'a', 'b', 'c'};  String str = new String(data); 就是str 指向了  new String(data) 这个对象. 如果再有其他变量也指向这个对象,他们比较的结果就返回true;由于此方法在Object里, 所以它有很多重写, 具体要看需求;
如果对象之间用==比较,是比较两个对象的hash值是否相等,你可以认为是在比较两个对象是不是在同一个内存地址的对象.

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
用 equals比较内容
但如果你是对象的比较的话,你得自己重写 equals方法 和 hashcode方法
一般格式是固定的  
public boolean equals(Object obj){
                if(obj instanceof EqualsDemo){
                        EqualsDemo ed = (EqualsDemo)obj;
                        if(ed.getName().equals(this.getName())&&ed.getAge()==this.getAge()){
                                return true;
                        }else{
                                return false;
                        }
                }else{
                        return false;
                }
        }

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马