zoukankan      html  css  js  c++  java
  • 一些Java面试题深入分析

    一、&和&&的差别?


    &和&&都能够用作逻辑与的运算符。表示逻辑与(and),当运算符两边的表达式的结果都为true时。整个运算结果才为true,否则,仅仅要有一方为false,则结果为false。

    &&还具有短路的功能,即假设第一个表达式为false,则不再计算第二个表达式,比如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会运行,所以不会出现NullPointerException假设将&&改为&,则会抛出NullPointerException异常。

    If(x==33& ++y>0) y会增长,If(x==33 && ++y>0)不会增长

    &不具有短路性质,对于if(str != null && !str.equals(“”))表达式,当str为null时。后面的表达式依旧会运行,所以会出现NullPointerException,除此之外,&还能够用作位运算符。



    二、switch语句是否能作用在byte上,是否能作用在long上,是否能作用在String上?

    在switch(expr1)中。expr1能够是 byte, char, short,int 以及它们的包装类 Byte ,Character,  Short, Integer,还有enum(枚举)、String(JavaSE 7添加的)

    參考官网http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html


    三、使用finalkeyword修饰一个变量时。是引用不能变,还是引用的对象不能变?

    使用finalkeyword修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是能够改变的。比如,对于例如以下语句:

     final StringBuffer a=new StringBuffer("immutable");
    运行例如以下语句将报告编译期错误:

    a=new StringBuffer("");
    可是,运行例如以下语句则能够通过编译:

    a.append(" broken!"); 

     

    有人在定义方法的參数时,可能想採用例如以下形式来阻止方法内部改动传进来的參数对象:

    public void method(final  StringBuffer param)

    {

    }

    实际上,这是办不到的,在该方法内部仍然能够添加例如以下代码来改动參数对象:

            param.append("a");


    四、当运行String str=new String("abc")。时,究竟创建了多少个String对象?

    假设再网上搜答案,差点儿都是这样回答的:

    假设String pool没有abc这个字符串 的话就在字符串池创建abc的对象,再是在堆里创建一个abc的对象,把堆里的abc对象地址返回给str 这个情况是创建2个对象,否则就仅仅有在堆里创建一个abc的对象


    但是。我今天看到一个解说视频。他说不论什么情况都仅仅创建一个String对象。不论什么情况都不会在字符串池创建abc的对象。论据:

    		String s1="hjk";
    		String s2=s1.intern();        //intern()的作用是假设在常量池中存在s1的字符串值“hjk”,则
    					     //返回该字符串对象。否则在常量池加入“hjk”,并把该字符串对象返回。
    		System.out.println(s2==s1);   //true
    		String s3=new String("abc");
    		String s4=s3.intern();
    		System.out.println(s3==s4);  //false
    		
    		String s5=s3.intern();
    		System.out.println(s5==s4);  //true


    另可參考:Java面试题视频解说http://study.163.com/course/courseMain.htm?courseId=519065#/courseMain

  • 相关阅读:
    css学习_css3伸缩布局 flex布局
    css学习_cs3s旋转的图片
    css学习_css3过渡
    css学习_css伪元素的本质
    css学习_css精灵技术、字体图标
    css学习_css用户界面样式
    Python 的 with 语句
    KNN--Python实现
    Python中NumPy(axis=0 与axis=1)
    Python中escape和unescape
  • 原文地址:https://www.cnblogs.com/mthoutai/p/6756731.html
Copyright © 2011-2022 走看看