精华内容
下载资源
问答
  • Java中如何判断两个String是否相等

    千次阅读 2015-12-27 20:47:30
    假定有两个字符串str1和str2,那么如何判断str1和str2两个字符串相等?if(str1 == str2){...}?  首先指出,在java中,不能用“==”和“!=”来判断两个字符串是否相等。因为String是引用类型,而不是基本数据类型...

        假定有两个字符串str1和str2,那么如何判断str1和str2两个字符串相等?if(str1 == str2){...}?

        首先指出,在java中,不能用“==”和“!=”来判断两个字符串是否相等。因为String是引用类型,而不是基本数据类型。故它们的比较是使用地址和值(相当于C中的指针)来比较,因为它们是不同的对象,有不同的地址。故str1==str2永远是false,而str1!=str2永远都是true。

        解决方法:

             if("".equals(editText.getText().toString().trim())){
                        
                    }



    展开全文
  • public static void main(String[] args){ String str1="Java"; String str2="Java"; System.out.println(str1==str2); } 当然,像这种情况是对的。 但是你看这种 public static void main(String[] args){...

    很多人喜欢直接用“==”来判断

    public static void main(String[] args){
    		String str1="Java";
    		String str2="Java";
    		System.out.println(str1==str2);
    	}
    

    在这里插入图片描述
    当然,像这种情况是对的。
    但是你看这种

    public static void main(String[] args){
    	Scanner sc=new Scanner(System.in);
    	String str1="Java";
    	String str2=sc.next();
    	System.out.println(str1==str2);
    }
    

    在这里插入图片描述
    像这种情况的时候就不行。
    其实“==”是比较两个字符串的地址是否相等。Java虚拟机在遇到两个相同的常量时会将他们放在同一个地址。
    因为前面那种情况,两个都是常量会存放在同一个地址,所以是可以的。
    而后面的情况是str2是一个对象,不是一个常量(这个的具体原因有点复杂,你记住就行了,除了next()方法还其他一些情况是返回对象的),他们不是保存在同一个地址上,所以会返回false。

    真正要比较两个String类型的字符串的内容是否相等,要用equals()方法。这个才是比较两个String类型的字符串的内容是否相等。

    public static void main(String[] args){
    	Scanner sc=new Scanner(System.in);
    	String str1="Java";
    	String str2=sc.next();
    	System.out.println(str1.equals(str2));
    }
    

    在这里插入图片描述

    总结:

    “==”是比较两个数据的内存地址是否相等,equals()方法才是比较两个String类型的字符串的内容是否相等。
    以后要比较两个String类型的字符串的内容是否相等最好都用这个。

    展开全文
  • 1.判断定义为String类型的s1和s2是否相等? 答案解释:String类代表字符串,字符串是常量,常量需要进入到内存中的方法区的常量池(进入常量池规则:如果常量池中没有这常量,就创建一,如果有就不再创建了)。...

    1.判断定义为String类型的s1和s2是否相等?

    答案解释:String类代表字符串,字符串是常量,常量需要进入到内存中的方法区的常量池(进入常量池规则:如果常量池中没有这个常量,就创建一个,如果有就不再创建了)。所以s1首先会在常量池中创建“abc”对象,“abc”对象是有地址值的,“abc”对象将地址值赋给s1。当s2的时候,此时常量池中已经存在了“abc对象”,所以就不需要再创建了,s2的引用也指向了常量池中的“abc”对象,两个引用指向了同一个对象,s1和s2地址值一样,所以==号比较的时候返回true;String类重写了equals方法,比较的是属性值,s1和s2的属性值都是“abc”,所以是true

     

    2.下面这句话在内存中创建了几个对象?

    String s = new String("abc");

    答案:2个对象。

    解释:s首先会在常量池创建“abc”字符串常量,当new的时候就会在堆内存中创建一个对象,此时会把常量池中的字符串常量拷贝一份副本到给到堆内存中的对象,堆内存中的这个对象就会把地址值赋给s。常量池中对象的地址值和堆内存中对象的地址值是不一样的,s指向的是堆内存中的对象,不是常量池中的对象。此时堆内存中有一个对象,常量池中有一个对象,所以创建了2个对象。查看API,String的有参构造

     

    3.判断定义为String类型的s1和s2是否相等?

    答案解释:由题2可知,当执行完s1的时候,内存中会有两个对象,一个在堆内存,一个在常量池,且地址值是不一样的,s1指向的是堆内存中的对象,而当执行到s2的时候,s2指向的是常量池中的对象,地址值不一样,所以==号判断的时候返回false。s1和s2的属性值是一样的,所以equals方法比较时返回true

     

    4.判断定义为String类型的s1和s2是否相等?

    答案解释:Java中有常量优化机制,“a”、“b”、“c”本身就是字符串常量,所以在编译时,"a"+"b"+"c"就是“abc”字符串,所以就在常量池创建了“abc”字符串,当执行s2的时候,此时常量池中已经存在了“abc”,所以==号比较返回true。equals方法比较毫无疑问是true。

     

    5.判断定义为String类型的s3和s2是否相等?

    答案解释:s1+"c"中s1不是常量,所以不能有常量优化机制来分析。equals方法比较毫无疑问是true。

    1. s1和s2会分别在常量池中创创建"ab"、"abc"两个对象
    2. s3的时候是字符串串联,API解释如下图。所以s3的时候会在对内存中创建StringBuilder(或者StringBuffer)对象,通过append方法拼接成“abc”对象,此时的“abc”是StringBuilder(或者StringBuffer)类型的,通过调用toString方法转成String对象,此时s3指向的是堆内存中这个String对象
    3. s2指向的是常量池中的对象,s3指向的是堆内存中的对象,所以==号比较返回false

    展开全文
  • C#比较两个List string是否相等

    千次阅读 2018-01-08 10:28:53
    /// /// 比较两个List string是否相等 /// /// /// /// private static bool SameListString(List list1, List list2) { if (null == list1 && n
            /// <summary>
            /// 比较两个List string是否相等
            /// </summary>
            /// <param name="list1"></param>
            /// <param name="list2"></param>
            /// <returns></returns>
            private static bool SameListString(List<string> list1, List<string> list2)
            {
                if (null == list1 && null == list2)
                    return true;
                if (null == list1 || null == list2)
                    return false;
                if (list1.Count != list2.Count || !list1.All(list2.Contains))
                    return false;
                list1.Sort();
                list2.Sort();
                int nCount = list1.Count;
                for(int n=0;n<nCount;n++)
                {
                    if (0 != string.Compare(list1[n], list2[n], false))
                    {
                        return false;
                    }
                }
                return true;
            }

    展开全文
  • 浅谈比较两个String是否相等的方法

    千次阅读 2016-02-04 00:04:27
    最近在review项目的代码的时候,发现有很多处比较String字符串是否相等的代码采取的是以下方式:(假设有2个String的变量str1、str2)str1.equals(str2)str1!=null&&str1.equals(str2)【解析】第1点是完全没有...
  • char[] ch = new char[] { 'a', 'a', 'a' }; string a1 = new string(ch); string a2 = "aaa"; object b1 = a1; object b2 = a2; Console.WriteLine
  • String类型如何判断相等

    千次阅读 2019-04-29 23:01:59
    String类型如何判断相等String类型为什么不能使用==,String为什么要使用equals方法。 一般情况下,我们使用的都是基本数据类型,所以可以使用==直接判断,但String类型不同,它是对象。 如: String m = "ni"; ...
  • 判断三个String是否相等

    千次阅读 2019-07-04 14:07:59
    String a="a"; String b="b"; String c="a"; boolean js = a.equals(b)?(a.equals(c)?b.equals(c):false):false;
  •  因为String是引用类型的,不是基本数据类型,所以它们的比较是使用地址和值(相当于C中的指针)来比较的,因为它们是不同的对象,有不同的地址,所以str1!=str2永远都是true。而str1==str2永远是false。如果你中想...
  • c# 比较两个string数组(string[])每一个值是否相等Enumerable.SequenceEqual(strs1, strs2)
  • 因为String是引用类型的,不是基本数据类型,所以它们的比较是使用地址和值(相当于C中的指针)来比较的,因为它们是不同的对象,有不同的地址,所以str1!=str2永远都是true。而str1==str2永远是false。如果你中想...
  • c++中比较两个std::string对象是否相等

    千次阅读 2020-05-08 16:15:23
    在java中比较两个string对象是否相等可以直接调用函数equals() if(name1.equals(name2)) //name的声明忽略 { print("相等"); } 而在c++中也很简单,用"=="就可以实现 if(name1 == name2) { std::cout<<...
  • 比较两个list<String>是否相等

    千次阅读 2019-11-28 13:52:12
    比较两个list是否相等 public booelan equalsList(List<String> list1, List<String> list2){ // null情况 if ( (list1 == null && list2 != null) || (list...
  • String类型怎么比较是否相等

    千次阅读 2020-09-05 16:27:32
    String类型比较是否相等 如果比较的是地址,可以使用==判断 如果比较的是内容,使用equals进行比较,为了防止空指针,通常用"".equals(变量)进行比较。 String类型的变量如果不赋值,默认是Null。
  • 2 如果要比较的对象是两个string,则利用函数 compare() 若要比较string s1和s2则写为:s1.compare(s2),若返回值为0,则两者相等。 当s1 时,返回为负数(-1); 当s1 == s2时,返回值= 0; 当s1 > s2时,返回...
  • String判断相等

    千次阅读 2017-12-07 10:05:58
    源于一次公司项目,对java基础还是理解的...a.equal(b)和b.equal(a)表达式表达的意思是一样的,都是为了判定a和b两个string对象是否相同, 但是,前者表示a对象不能为空,否则会报错,后者表示b对象不能为空,否则报错
  • if来判断String类型是否相等

    千次阅读 2020-05-01 16:01:26
    后再网上找到string类型要用到equals来进行判断。就可以顺利运行了。 if (pwd.equals(lostpwd)) { response.sendRedirect("updateSuccess.jsp"); ITeacherService teacher = new TeacherServiceImpl(); ...
  • 1.情景再现: 有个两表,假如分别叫表A、表B,它们都有一个字段存放着用户id。...比较两个id是否相等的伪代码如下: if (beadA.getId().eqauls(beanB.getId())) {  //TODO } 结果没有任何相等的,但数...
  • Java之~判断两个String类型的日期大小

    万次阅读 2018-09-05 19:11:51
    一,String类型时间比较 DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date();  String nowtime = sdf.format(date);//当前时间 String endtime= "2016-11-...
  • c\c++中比较两个字符串或string对象是否相等 在写程序的过程中,经常会遇到要比较两个字符串是否相等的情况。如果要比较的对象是char*字符串,则利用int strcmp(const char* s1,const char* s2) 当s1&lt;s2时...
  • Java String类型如何判断相等

    千次阅读 2018-10-10 20:44:24
    输入一个String类的变量,如果它既不是A 也不是B,那就报错,重新输入。 我写的代码是 Scanner sc=new Scanner(System.in); System.out.print("请输入种类(A或B):"); String type=sc.next(); if(type!...
  • 在写程序的过程中,经常会遇到要比较两个字符串是否相等的情况。 1. 如果要比较的对象是char*字符串 利用: int strcmp(const char* s1,const char* s2); (1) 当s1 &lt; s2时,返回负数; (2) 当s1 == ...
  • 比较两个字符串STRING1和STRING2中的字符是否相等相等则显示MATCH,;不相等则显示NO MATCH。DATA SEGMENTSTRING1 DB 'STRING1MATCH'COUNT1 DW $-STRING1STRING2 DB 'STRING1MATCH'COUNT2 DW $-STRING2MATCH DB ...
  • 不废话,直接上代码截图. 左侧为错误的写法,docStatusType的值传入后,无法比较,右侧为正确的写法,可以根据正确的docStatusType进入指定的条件. 网上还有一种写法,本人没有试过,是这样写的....if test="docStatusType==...
  • 关于java中2个String相等不相等的总结

    千次阅读 2015-10-31 22:14:27
    可以看出String类被final修饰,表明这类不能被继承。  String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例来实现。就是说在 String a= ”ab“中把这”ab“当成String类的一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 347,527
精华内容 139,010
关键字:

如何让两个string类型相等