String s1="Abc";
String s2="abc";
String s3=s1.toLowerCase();
String s4=s2.toLowerCase();s1==s2?
s1==s3?
s1==s4?s2==s3?
s2==s4?s3==s4?

解决方案 »

  1.   

    false
    false
    false
    false
    true
    false
      

  2.   

    ==是比较2个对象是否是同1个对象。使用equals比较2个字符串是否相同
      

  3.   

    12:false
    13:false
    14:false
    23:false
    24:true
    34:false
      

  4.   

    呵呵  又是String对象的问题、、、、s2==s4 true 
     其他false
      

  5.   

    全不等,先来接分。
    S1 S2本身内容不等,不用说了。
    而后边通过方法生成新的对象 要用EQUALS方法比较。== 比较的是地址,他们在 text POOL 中的值都不相等。
      

  6.   

    false
    false
    false
    false
    true
    false正解!!!
      

  7.   

    String 类型直接赋值时,当两个值相等时,会被当成一个对象。
    用new就不同了。
      

  8.   

    只有S2==S4是TRUE,其余都是false
      

  9.   

    s2 和s3字符串的值是相同的,但是 == 比较的是地址,地址不同。
    s2 和s4指向同一字符串
      

  10.   

    lowerCase之后是abc,为什么不在text pool中找现有的,这个还是不明白
      

  11.   

    看了下源码,没有为什么,toLowerCase方法中就是这么写的,只要有变化,就new String
      

  12.   

    呵呵,按执行结果肯定是s2==s4
    如果是分析的话就是String s1="Abc"; 
    String s2="abc"; 
    String s3=s1.toLowerCase(); 
    String s4=s2.toLowerCase(); s1==s2? false 
    s1==s3? false 
    s1==s4? false s2==s3? false 
    s2==s4? true s3==s4?false 因为==比较得是两个对象的内存地址 .equals比较得是两个对象值 toLowerCase() 
    之后  如果值不变 那么地址也不变! 
      

  13.   

    public class TestEquals {
    public static void main(String[] args){
    String s1="Abc"; 
    String s2="abc"; 
    String s3=s1.toLowerCase(); 
    String s4=s2.toLowerCase(); if(s1==s2) System.out.println("a true");  
    if(s1==s3) System.out.println("b true");
    if(s1==s4) System.out.println("c true");
    if(s2==s3) System.out.println("d true");
    if(s2==s4) System.out.println("e true");//true
    if(s3==s4) System.out.println("f true");

    if(s1.equals(s2)) System.out.println("2a true");  
    if(s1.equals(s3)) System.out.println("2b true");
    if(s1.equals(s4)) System.out.println("2c true");

    if(s2.equals(s3)) System.out.println("2d true");//true
    if(s2.equals(s4)) System.out.println("2e true");//true

    if(s3.equals(s4)) System.out.println("2f true");//true
    /*
     * 因为==比较得是两个对象的内存地址 .equals默认也是比较地址,但String类重写了该方法,因此比较的是两个对象值 toLowerCase() 
    之后  如果对象值不变 ,那么地址也不变 */ }
    }
      

  14.   


    我认为这个算正确的,任何涉及到对string类所表示的字符串的操作的方法,都是返回的一个
    新建的的string对象。而你用的又是等号这种赋值语句。比较的是地址。所以全都是false.
    而判断字符串是否相等有两个方法
    boolean equal(Object obj)  区分大小写
    boolean equalIgnoreCase(String str)  不区分大小写
      

  15.   

    false 
    false 
    false 
    false 
    true 
    false
      

  16.   

    false 
    false 
    false 
    false 
    true 
    false
      

  17.   

    false 
    false 
    false 
    false 
    true 
    false
      

  18.   

    false 
    false 
    false 
    false 
    true 
    false
      

  19.   

    JAVA自测题栏目正式上线,来测测你的Java功力到底如何!
    http://www.java2000.net/selftest/ 其它推荐栏目:
    JAVA的API文档速查: http://api.java2000.net
    JAVA各种面试题答案:http://www.java2000.net/f146
    JAVA各种jar下载:   http://www.java2000.net/download/jar.jsp