整理一些java基础面试题

1、请说出下面程序的输出。

class StringEqualTest {

    public static void main(String[] args) {
        String s1 = "Programming";
        String s2 = new String("Programming");
        String s3 = "Program" + "ming";
        System.out.println(s1 == s2);
        System.out.println(s1 == s3);
        System.out.println(s1 == s1.intern());
    }
}
运行结果:false          true          true补充:String对象的intern方法会得到字符串对象在常量池中对应的版本的引用(如果常量池中有一个字符串与String对象的equals结果是true),如果常量池中没有对应的字符串,则该字符串将被添加到常量池中,然后返回常量池中字符串的引用。

2、为什么不能根据返回类型来区分重载?
答案:重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载。

我们现在来讨论一下用返回值来区分重载方法的可行性。

比如下面两个方法:

void fun();

int fun();

long fun();

 

如果编译器可以根据语境来判断执行哪一个方法的话,那么当  执行  int i = fun(); 的时候,我们很容易判断出来,应该调用第二个重载方法。

但是,当我们 执行单独调用fun(),而不把返回值赋值给任何变量的时候呢?就像:  直接执行 fun(); 这个时候,我们就不知道调用哪个方法了,所以根据返回值来区分重载方法是行不通的。

你可能感兴趣的:(整理一些java基础面试题)