我的漫漫程序之旅

专注于JavaWeb开发
随笔 - 39, 文章 - 310, 评论 - 411, 引用 - 0
数据加载中……

两道Java面试题解析

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


1.写出下面代码的结果

 

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


    
public static void main(String[] args){
        String a 
= "Hello";
        link(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");

 

答:"=="用来比较对象的引用,而equals()用来比较对象的内容,但是如果是字符串常量,用"=="也可以比较内容

是否相等,"ja"+"va"和"java"都是字符串常量,因此结果为true

同理,下面代码结果也是true

 

final String str = "java";

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

 



posted on 2007-12-15 15:21 々上善若水々 阅读(1530) 评论(3)  编辑  收藏 所属分类: Java笔试与面试

评论

# re: 两道Java面试题解析  回复  更多评论   

比较详细,谢谢.
2007-12-16 11:20 | javascript

# re: 两道Java面试题解析  回复  更多评论   

"ja"+"va"在编译的时候会优化,直接编译为"java"
2008-02-23 11:18 | Edward's

# re: 两道Java面试题解析  回复  更多评论   

学到了 thanks
2009-03-17 17:04 | 鸟生鱼汤

只有注册用户登录后才能发表评论。


网站导航: