zoukankan      html  css  js  c++  java
  • java 面试基础典型题及答案

    1、switch能否作用在byte、int、long、String?
    答案:switch能作用在byte、int、enum常量, 补充:jdk7可以作用在String上


    2、short s = 1; s = s + 1;有什么错? short s = 1; s += 1;有什么错?
    答案: s = s + 1; 在计算右边的表达式时,隐式的将s转换为int,将一个int类型赋值给short出错,必须强制转换,即: s = (short)(s+1); 而s+=1; 编译器会首先将+=后面的1强制转换为+=前面的数据类型。故无错。


    3、char型变量中能不能存贮一个中文汉字?为什么?
    答案: 可以,因为java默认采用unicode编码表示一个字符。


    4、用最有效率的方法算出2乘以8等於几?
    答案: 2<<3 将2左移3位,2的3次方等于8;


    5、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
    答案: 引用不能变,而引用对象的值可以改变,
    比如final StringBuffer BUFF = new StringBuffer("123");
    BUFF.append("456"); //打印后是123456的字符串


    6、静态变量和实例变量的区别?
    答案:静态变量又叫类变量,属于类而不是对象,用static关键字修饰;而实例变量属于对象,必须先实例化一个对象后,才能使用实例变量。


    7、是否可以从一个static方法内部发出对非static方法的调用?
    答案: 不能,因为static方法属于类,而非static方法属于实例化对象,静态类方法不知道调用哪个对象的非静态方法。


    8、Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
    答案:12, -11;原因:向最大方向四舍五入。


    9、请说出作用域public,private,protected,以及不写时的区别
    答案:同一个包下的类认为是朋友:friendly。默认为friendly
    public: 当前类、子类、同一包、其他包
    protected: 当前类、子类、同一包
    private: 当前类
    friendly: 当前类、同一包


    10、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
    答案: Overloaded是重载,Override是重写。Overloaded在方法参数列表不同时,可以改变返回值的类型。


    11、构造器Constructor是否可被override?
    答案: Constructor即构造方法,不能被继承,当然不能被重写。


    12、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法?
    答案:接口可以被继承,使用extends关键字;抽象类可以实现接口;抽象类可以继承具体类;抽象类中可以有静态main方法,也可以有静态方法。


    13、写clone()方法时,通常都有一行代码,是什么?
    答案: super.clone(); clone即克隆,将一个对象拷贝给另一个对象,这两个对象属于独立的对象,改变其中一个对象,不会改变另一个对象。注意有浅克隆和深克隆之分。


    14、抽象类和接口的区别:
    答案: 1、面向对象中,所有对象都用类来描述,但是并不是所有类都用来描述对象。如果一个类中没有足够的信息来描述具体的对象,我们称之为抽象类。是对一系列看上去不同,但本质相同的具体概念的抽象。
    2、语法上,用abstract class和interface区别,实现分别用extends和implements实现。
    3、抽象类可以有非抽象方法但接口只能有抽象方法
    4、一个类只能继承一个类,但可以实现多个接口。
    5、抽象类中的字段可以不被初始化,但接口中定义字段时必须被初始化。


    15、什么是内部类?Static Nested Class 和 Inner Class的不同。
    答案: 内部类:是定义在类中的类。static nested class(嵌套类)是静态内部类:1、创建嵌套类的对象,并不需要其外部类的对象。 2、不能从嵌套类的对象中访问非静态的外部类对象。


    16、是否可以继承String类?
    答案: 不能,String类是一个final终结类。


    17、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别?
    答案:两个。"xyz"作为一个常量字符串首先被创建,它保存在”常量“区,一旦创建不能修改,因此下次需要一个相同的字符串时,不必创建。引用一个常量串没有任何危险,因为它是只读的。当new String("xyz")调用时,再在堆(heap)中创建一个对象,值为常量区字符串的拷贝。区别:一个在常量池,一个在堆中。


    18、String 和StringBuffer、StringBuilder的区别?
    答案:都不是基本数据类型,都是final类不能被继承。String对象是一个不可变对象,一旦创建不能修改它的值。对于已经存在的String对象修改它的值,会重新创建一个新的对象,然后把新的值保存进去。对String对象的连接操作(+)实际上是会建立一个StringBuffer类对象,然后把字符串添加进去,最后调用toString()方法。 StringBuffer类是一个可变对象,当对它进行修改时不会像String那样重新建立一个对象,调用append()方法即可。 StringBuffer是线程安全的,而Stringbuilder不是线程安全的。所谓线程安全,就是每个修改容器中数据的是同步的,因此保证了线程安全。


    19、如何把一段逗号分割的字符串转换成一个数组?
    答案: 调用String类中的实例方法split(); str.split(",");


    20、数组有没有length()这个方法? String有没有length()这个方法?
    答案: 数组没有length()方法,有一个length字段,String有length()方法。


    21、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";
    答案:5个对象,现在常量池创建了"a","b","c","d",4个对象。再在堆中创建了一个"abcd"对象。


    22、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
    答案: finally{}里的代码一定会被执行。return之后执行finally,再执行了return,但是finally修改后的值,return的是修改之前的值。


    23、final, finally, finalize的区别。
    答案:final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
    finally是异常处理语句结构的一部分,表示总是执行。
    finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。


    24、error和exception有什么区别? 
    答案: 相同处:Error类和Exception类都继承自Throwable类。不同处:Exception: 1、可以是可被控制(checked)或不可控制的(unchecked); 2、表示一个有程序员导致的错误。3、应该在应用程序级被处理。Error: 1、总是不可控制的(unchecked); 2、经常用来用于表示系统错误或底层资源错误。 3、如果可能的话,应该在系统级被捕获。


    25、运行时异常与一般异常有何异同?
    答案: 1、一般异常指checked exception: 这类异常都是Exception的子类。异常向上抛出,可能导致的问题:代码效率低,耦合度过高。 2、运行时异常unchecked exception:这类异常都是RuntimeException的子类,虽然RuntimeException同样也是Exception的子类,但是他们是不同的,他们不能通过用户代码来试图解决。


    26、请写出你最常见到的5个runtime exception?
    答案: ClassCastException类型转换异常, ArithmeticException算数运算异常,NullPointerException空指针异常,IndexOutOfBoundsException索引越界异常。


    NegativeArraySizeException负数作为数组大小异常,BufferOverflowException缓冲区溢出异常。
  • 相关阅读:
    js 日期时间大小比较
    微软开源项目地址
    通过配置host文件实现本地域名任意设置
    如何取消MSSQL自带智能提示步骤,使用第三方智能提示插件
    在Firefox中关闭缓存
    js获取select标签选中的值
    input文本框设置和移除默认值
    Power Designer 16.5 不能设置自增
    Visual Studio 2017 Key激活码
    终于找到方法关闭Siri了,之前是关不掉的必须开着
  • 原文地址:https://www.cnblogs.com/anyuan9/p/6171573.html
Copyright © 2011-2022 走看看