本帖最后由 hpjianhua 于 2010-12-10 18:55:58 编辑

解决方案 »

  1.   

    true
    false
    truejava 的常量池,第二个是b = ab------true,然后再和a做的比较。所以是false
      

  2.   

    true
    false
    true
    第一个是java常量池,第二个是 b=ab------true 然后再和a做的比较,所以是false;
      

  3.   

    true
    false
    true
    第一个是常量池中,用String  s = “”声明的字符串,java虚拟机会先到常量池中搜索,如果存在直接引用
      

  4.   

    第一个错了,对于第二个是如何得出false的答案呢?
    第一个:
    String a ="ab";

    String b = "a"+"b";
    在Java编译器中是直接优化为
    String b = "ab";
    所以第一个为true;
    equal()方法是比较字符串值是否相等的,所以很自然的也为true;
      

  5.   

    我记得在Java中==比较,是比较两个对象是否相等。而equals是比较两个对象的值是否相等。
    问题1:为什么第一个是Ture?
    问题2:第二个False怎么出来的。
    请高人指点!谢谢!
      

  6.   

    懒的看直接运行之:
    public class Test{
        public static void main(String[] args){
            String a ="ab";
            String b="a"+"b";
            System.out.println(a==b);
            System.out.println(a==b+"------"+a.equals(b));
            System.out.println(a.equals(b));
        }
    }
      

  7.   

    java常量池还真经常会忘掉,呵呵
      

  8.   

    Java没必要了解这些细节吧,又不是C语言
      

  9.   

    true
    false
    true
    是正确的
    第二个里面b=ab,如果在和a比较的话,那么就是false了
      

  10.   


    System.out.println(a==b+"------"+a.equals(b));
    请问高人,这句的运算顺序是从左到右还是从右到左呢?
      

  11.   

    原题结果:
    true
    false
    true
    现在:
             String a ="ab";
            String b="a"+"b";
            System.out.println(a==b);// true
            System.out.println((a==b)+"------"+a.equals(b));// true------true
            System.out.println(a.equals(b));// true 
      

  12.   

    true
    false  //a==b+"------"+a.equals(b) '+' 的优先级高于'==' 及 a==(b+"------"+a.equals(b))
    true
      

  13.   


    正解 "ab"+"-------"+a.equals(b)的优先级高于"=="
      

  14.   

    true
    false
    true
     写个main方法测一下,再分析就简单了
      

  15.   

    在加一个判断才有意义:
    String c = new String("ab");
    System.out.println((a==c)+"------"+a.equals(c));
      

  16.   

    Option Explicit
    Private Sub bkxt_Click()
        Form2.Show
    End SubPrivate Sub gsxt_Click()
        Form4.Show
    End SubPrivate Sub jjxt_Click()
        Dim a
        a = Shell("c:\Program Files\Internet Explorer\IEXPLORE " & App.Path & " \系统简介.htm", vbMaximizedFocus) '打开网页
    End Sub
    求大侠将以上代码转换为纯java代码,万分感激
      

  17.   

         String a ="ab";
      String b="a"+"b";
      System.out.println((a == null ? b == null : a.equals(b)));
      System.out.println((a == null ? b + "------" + a.equals(b) == null : a.equals(b + "------" + a.equals(b))));
      System.out.println(a.equals(b));ture
    false
    ture
      

  18.   

    String a ="ab";
      String b="a"+"b";
      System.out.println((a == null ? b == null : a.equals(b)));
      System.out.println((a == null ? b + "------" + a.equals(b) == null : a.equals(b + "------" + a.equals(b))));
      System.out.println(a.equals(b));ture
    false
    ture
      

  19.   

    System.out.println(a==b+"------"+a.equals(b));这行代码是我粗心所导致的,我想表达的意思是有括号的:System.out.println((a==b)+"------"+(a.equals(b)));没想到'+'的优先级高于'=='的,下次要小心!
      

  20.   

    true
    false
    true
    第二个正正得负。
      

  21.   

    什么是java常量池?本人是java新手,望指教!!!谢谢
      

  22.   

    false
    false------true
    true
    String,除了在传参,其他地方应该没太大分歧。
      

  23.   

    实践出真知
    true
    false
    true因为+的优先级高于==,所以第二个输出,先执行+,再执行字符串比较,所以应该是ab=="ab------true"所以应该是false。
      

  24.   

    class test1 {
        public static void main(String[] args) {
     String a = "ab";
     String b = new String(a); 
     System.out.println(a.hashCode()) //3105;
     System.out.println(b.hashCode()) //3105;
     System.out.println(a==b); //false
     System.out.println(a.equals(b)) //true;
        }
    }
    The equals() method compares the characters inside a String object.it means that compare the hashcode() of two objectThe == operator compares two object references to see whether they refer to the same instance. we take new String(),so it refers to different instance.
      

  25.   

    String s = "Aa";
    String s2 = "BB";
    System.out.println(s.hashCode());
    System.out.println(s2.hashCode());
    System.out.println(s.equals(s2));ls请看这个
      

  26.   

    原因就是+的优先级高于==,所以先算+,a==b+"------"+a.equals(b)就相当于a==(b+"------"+a.equals(b))
      

  27.   

    学习了,这样回过头来说,hashcode()相等 equals()返回不一定真.相反equals()返回为真,则Hashcode()必然相等?
      

  28.   

    你可以看一下源码中String类里hashCode和equals两个方法的实现,hashCode是对每一个字符进行一系列运算操作的,初始值为0,把当前值*31+当前字符得到新的值,直到遍历完所有字符得到最终值
    equals是先判断是否是同一个对象,再判断长度,最后逐字符判断是否相同,遇到不同就返回false
      

  29.   

    true JAVA 常量池的知识 先到常量池中搜索,如果存在直接引用
    flase 运算符的优先级a==(b+"------"+a.equals(b))
    true String类重写了Object类的equles方法 
      

  30.   

    这种问题到今天还在讨论,,意义何在,,,
    在下并没有别的意思,就是感觉这是J2SE基础里的东西,是要好好回顾下了,,,
      

  31.   

    true
    false
    true
    真是悲剧了。一开始还是优先级。
      

  32.   

    System.out.pritnln((a==b)+"------"+a.equals(b));这段好像编译不过去?
      

  33.   

    还是不懂吗??
    这是一个优先级的问题。。就想数学里面 乘法总是在加法前面计算一样“+”的优先级大于“==”  所以我们应该先算b+"------"+a.equals(b));然后再计算“==”
    所以第二个就相当于a==(b----true) 这个显然不会是true  所以第二个就是false。。
      

  34.   

    结果证明一切:
    C:\Documents and Settings\Administrator\桌面>java Circle
    true
    false
    true