class E{ public static void main(String[ ] args) { StringBuffer sb1 = new StringBuffer("hello"); StringBuffer sb2 = new StringBuffer("hello"); if (sb1.equals(sb2)) System.out.printin("equal"); else System.out.printin ("not equal"');
时间: 2024-04-29 07:19:47 浏览: 78
输出结果为"not equal"。虽然sb1和sb2都包含相同的字符串"hello",但是StringBuffer类没有重写equals()方法,因此默认使用Object类的equals()方法,该方法比较的是对象的引用地址,而不是对象的内容。因此,虽然sb1和sb2包含相同的字符串,但是它们在内存中的地址不同,因此equals()方法返回false,输出"not equal"。
相关问题
分析下面代码运行结果是_________? public class Test { public static void main (String [] args) { StringBuffer a = new StringBuffer ("hello!"); StringBuffer b = new StringBuffer ("beijing"); operate (a,b); System.out.println(a+","+b); } static void operate (StringBuffer a, StringBuffer b) { a.insert(2,b); a = b; } }
代码运行结果是:hello!beijing, beijing。
在main方法中,首先创建了两个StringBuffer对象a和b,并将它们分别初始化为"hello!"和"beijing"。
然后调用operate方法,并将a和b作为参数传递给该方法。
在operate方法中,首先调用a的insert方法,将b插入到a的索引2处。此时,a的值变为"hebeijingllo!"。
然后将b赋值给a,但是这个赋值操作只在operate方法的作用域内有效,对于main方法中的a没有影响。
所以,在main方法中打印a的值时,仍然是"hello!beijing"。而b保持不变,仍然是"beijing"。
因此,最终的输出结果是:hello!beijing, beijing。
public class foo { public static void main(String[] args) { StringBuffer a = new StringBuffer("A"); StringBuffer b = new StringBuffer("B"); operate (a, b); System.out.println(a + "." + b); 7 static void operate (StringBuffer x, StringBuffer y) { x.append(y); V = X; 7
在这段代码中,会输出AB.AB。因为在main方法中,首先创建了两个StringBuffer对象a和b,分别存储字符串"A"和"B"。然后调用了operate方法,将a和b作为参数传入。在operate方法中,首先调用了x(即a)的append方法将y(即b)的值追加到a的末尾,此时a的值变为"AB",然后将a的值赋给了变量V(这里应该是小写的v,大写的V没有定义),但是V没有被使用到,所以这一行代码实际上没有实际作用。在main方法中,因为a和b都是对象,所以在传递参数时传递的是对象的引用,也就是a和x、b和y指向的是同一个对象,因此在operate方法中修改了a的值后,main方法中a的值也会被修改。最后输出a和b的值,即"AB.B"。
阅读全文