每天进步一点点(javaSE的常见面试题系列)

本文阅读 3 分钟
首页 代码,Java 正文

1,final、finally、finalize的区别?

        1,final: 用于声明属性、方法和类的,分别表示属性不可变,方法不可覆盖(即不能被重写),被修饰的类不能被继承。         2,finally: 异常处理结构的一部分,表示总是执行。         3,finalize: Object类的一个方法,在垃圾回收器执行的时候会调用被回收对象的此方法,可以覆盖此方法。该方法更像是一个对生命周期的临终方法,当该方法被系统调用时则代表该对象即将“死亡”,需要注意的是,我们主动行为上去调用该方法并不会导致该对象“死亡”,这还是一个被动的方法(其实就是回调方法),不需要我们调用。

2,java 中的 Math.round(-1.5) 等于多少?

        Math提供了三个与取整有关的方法:ceil(向上取整)、floor(向下取整)、round(四舍五入)         所以,Math.round(-1.5) = -2

3,switch是否分别能作用在byte、long、String上,

        java5之前,switch(expr)中,expr只能是byte、short、char、int。从java5开始,java中引入了枚举类型,expr也可以是enum类型。         从java7开始,expr还可以是字符串(String),但是长整型(long)在目前版本中都是不支持的。

4,数组中有没有length()方法?String有没有length()方法?

        数组中没有length()方法,而是有length属性的。String中是有length()方法的。获取字符串的长度是通过length属性得到的。

5,请说出下面这段程序的输出结果

@Test
    void test(){ 
        String s1 = "mengmeng";
        String s2 = new String("mengmeng");
        String s3 = "meng";
        String s4 = "meng";
        String s5 = "meng"+"meng";
        String s6 = s3 + s4;
        System.out.println(s1 == s2);   //false
        System.out.println(s1 == s5);   //true
        System.out.println(s1 == s6);   //false
        System.out.println(s1 == s6.intern());  //true
        System.out.println(s2 == s2.intern());  //false
    }

        1,intern(): 此方法会得到字符串对象在常量池中对应的版本引用(如果常量池中有一个字符串与String对象的equals()结果是true),如果常量池中没有对应的字符串,则该字符串会被添加到常量池中,然后返回常量池中字符串的引用。         2,+: String中的+操作其本质是创建了StringBuilder对象进行append操作,然后将拼接后的StringBuilder对象用toString()转化为String对象。这一点可以用JVM字节码指令可以得到。         

本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/qq_46540738/article/details/119520822
-- 展开阅读全文 --
安全面试之XSS(跨站脚本攻击)
« 上一篇 07-24

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复