zoukankan      html  css  js  c++  java
  • 收集java基础面试题&答案

    1、String是最基本的数据类型吗? 答:String不是基本数据类型,基本数据类型包括byte、int、char、long、float、double、boolean和short。 Java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。

     

    2、switch语句中的表达式可以是什么类型数据? 答:表达式的值可以是byte、short、int和char类型的数据,但不能是float和double类型的数据。

     

    3、插入数据时,ArrayList、LinkedList、Vector谁速度较快? 答:ArrayList、Vector以数组方式存储数据,插入数据时要进行元素移动操作,因而插入数据慢。LinkedList是一种链表结构,在插入数据时只需要修改链表的前后项指向即可,因此插入速度较快。

    4、说出一些常用的类,包,接口,请各举5个。 答:常用的类:BufferedReader,BufferedWriter,FileReader,FileWirter和String等。 常用的包:Java.lang ,Java.awt,Java.io,Java.util和Java.sql等。 常用的接口:Remote,List,Map,Document和NodeList等。

     

    5、作用域public,private,protected,以及不写时的区别。 答:具体区别如下:

    作用域同一类同一包子孙类所有类
    public
    protected ×
    private × × ×
    默认 × ×

    6、说出重写和重载的区别,重写方法是否可以改变返回值的类型? 答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写是父类与子类之间多态性的一种表现,重载是一个类中多态性的一种表现。 如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写。子类的对象使用 这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载。 重载的方法是可以改变返回值的类型。

     

    7、throw和throws有什么区别? 答:throw关键字一般用于方法内部,用于抛出一个异常类对象,一旦异常被抛出后,throw语句后的程序代码将不会被执行。 throws关键字通常出现在方法声明中,用来指定该方法可能抛出的异常。如果可能有多个异常抛出,可以使用逗号将它们分隔开。

    8、字符串的compareTo方法结果是什么? 答:使用compareTo()方法可以比较字符串与字符串之间的大小关系。如果当前字符串小于指定字符串,则返回一个小于0的数值;否则返回一个大于0的数值;如果两个字符串相等,则返回0。

     

    9、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递,因为在Java编程语言中只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。

    10、Java中实现多态的机制是什么? 答:方法的重写和重载是Java多态性的不同表现。重写是父类与子类之间多态性的一种表现,重载是一个类中多态性的一种表现。

     

    11、在比较对象时,“==”运算符和equals运算有何区别? 答:“==”运算符表示两个对象引用的地址是否相等,equals运算符则表示两个对象引用的内容是否相等。

     

    12、Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 答:字节流和字符流。字节流继承于InputStream OutputStream,字符流继承于InputStreamReader OutputStreamWriter。在Java.io包中还有许多其他的流,主要是为了提高性能和使用方便。

    13、String s=new String("a");共创建了几个String对象? 答:两个。其中包括一个字符对象和一个字符对象引用对象。

    14、Java 面向对象编程三大特性?

      封装 继承 多态

    封装

      封装就是把抽象的数据和对数据进行的操作封装在一起,数据被保存在内部,程序的其他部分只有通过被授权的操作(成员方法)才能对数据进行操作。

      java提供了四种控制修饰符控制方法和变量访问的权限:

    • public:对外公开

    • protected:对子类和同一包中的类公开

    • 没有修饰符号:向同一个包的类公开

    • private:只有类本身可以访问,不对外公开

    继承:(extends )

      继承是使用已存在的类的定义作为基础建立新类的技术。继承可以解决代码复用问题,当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过extend语句来声明继承父类。

    关于继承如下 3 点请记住:

    • 子类拥有父类对象所有的属性和方法(包括私有属性和私有方法),但是父类中的私有属性和方法子类是无法访问,只是拥有。

    • 子类可以拥有自己属性和方法,即子类可以对父类进行扩展。

    • 子类可以用自己的方式实现父类的方法。

    多态

    所谓多态,就是指一个引用(类型)在不同情况下的多种状态,你也可以这样理解:父类型的引用指向子类型的对象

    多态有两个好处:

    1. 应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。继承

    2. 派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性。 多态的真正作用,

    15、String、StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的?(重要)

    一、区别

    1、String是字符串常量,而StringBuffer和StringBuilder是字符串变量。由String创建的字符内容是不可改变的,而由StringBuffer和StringBuidler创建的字符内容是可以改变的。

    2、StringBuffer是线程安全的,而StringBuilder是非线程安全的。StringBuilder是从JDK 5开始,为StringBuffer类补充的一个单线程的等价类。我们在使用时应优先考虑使用StringBuilder,因为它支持StringBuffer的所有操作,但是因为它不执行同步,不会有线程安全带来额外的系统消耗,所以速度更快。

     

    16、String为什么是不可变的?

    String 类中使用 final 关键字修饰字符数组来保存字符串private final char value[],所以 String 对象是不可变的。而StringBuilder 与 StringBuffer 都继承自 AbstractStringBuilder 类,在 AbstractStringBuilder 中也是使用字符数组保存字符串char[]value 但是没有用 final 关键字修饰,所以这两种对象都是可变的。

     

    17、自动装箱与拆箱

    • 装箱:将基本类型用它们对应的引用类型包装起来;

    • 拆箱:将包装类型转换为基本数据类型;

    //自动装箱
    Integer total = 99; //系统自动执行了Integer total = Integer.valueOf(99);

    //自定拆箱
    int totalprim = total;  //系统自动执行了int totalprim = total.intValue();

    问题一:int和Integer的区别?

    1. int是基本数据类型,Integer是int的包装类就是将int类型包装成Object对象;

    1. Integer变量必须实例化后才能使用;int变量不需要;

    1. Integer实际是对象的引用,指向此new的Integer对象;int是直接存储数据值 ;

    1. Integer的默认值是null;int的默认值是0。

    2.  

    18、== 与 equals的区别?(重要)

      1)==比较的是值是否相等

     如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;

        如果作用于引用类型的变量,则比较的是所指向的对象的地址。

      2)equals方法不能作用于基本数据类型的变量,只能用于类变量。(对于基本数据类型要用其包装类)** **

        如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;

        诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容

     

  • 相关阅读:
    对自己负责~~
    继续负责
    问题的一天
    1个月=22年
    刚才写的没显示?
    布置任务
    心情很糟
    考试结束
    没有负责哈
    php获取任意时间的时间戳
  • 原文地址:https://www.cnblogs.com/mt-blog/p/13307262.html
Copyright © 2011-2022 走看看