内容摘要:本文通过写出代码结果的方式向你解析了java面试中常面倒的几个知识点:string,equals(),==.
1.写出下面代码的结果
 

 public class TestString
 public class TestString {
{

 public static void link(String a)
    public static void link(String a) {
{
 a += "World";
        a += "World";
 }
    }


 public static void main(String[] args)
    public static void main(String[] args) {
{
 String a = "Hello";
        String a = "Hello";
 link(a);
        link(a);
 System.out.println(a);
        System.out.println(a);
 }
    }
 }
 }

答: 这道题考两个方面:
1). String对象的内容是不能改变的,a+="World"并不是把a所指对象改变,
  而是先生成一个临时String对象,其值为a+"World",然后在把这个临时
  对象赋给a.
2). Java中函数参数传递方式为Call by value,link方法中会生产a的一个
  拷贝,同样指向a所指的对象,综合以上两点,得出结果为 Hello
 
2.写出下面代码的结果
 
 System.out.println("ja"+"va" == "java");
System.out.println("ja"+"va" == "java"); 
答:"=="用来比较对象的引用,而equals()用来比较对象的内容,但是如果是字符串常量,用"=="也可以比较内容
是否相等,"ja"+"va"和"java"都是字符串常量,因此结果为true
同理,下面代码结果也是true
 
 final String str = "java";
final String str = "java";

 System.out.println(str=="java")
System.out.println(str=="java")
