关于Java基础

来源:互联网 发布:西门子机床数据采集 编辑:程序博客网 时间:2024/06/07 03:00
主要考察java的基础内容,其中包含:
    1,java三大特性、抽象类、接口、基本数据类型
    2,常用关键字(static,final,private关键字作用域等)
    3,常用的数据集合
    4,多线程
    5,手写单例模式
    6,异常处理
    7,排序
    
1,java的三大特征?
    答:封装、继承、多态;
2,谈谈你对多态的理解?
    答:不同类的对象对同一消息作出不同的响应就叫做多态
3,抽象类和接口的区别?
    答:1. 抽象类可以有构造方法,接口中不能有构造方法。
        2. 抽象类中可以有普通成员变量,接口中没有普通成员变量
        3. 抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
        4. 抽象类中的抽象方法的访问类型可以使public、protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认修饰即为public abstract类型。
        5. 抽象类中可以包含静态方法,接口中不能包含静态方法
        6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
        7. 一个类可以实现多个接口,但只能继承一个抽象类。
4,重载和重写的区别?
    答:重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。
        重写Override表示子类中的方法可以与父类的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,
        这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现
5,java的基本数据类型?
    答:byte,short,int,long,float,double,char,boolean
6,基本数据类型和包装类的区别?
    答:1、包装类是对象,拥有方法和字段,对象的调用都是通过引用对象的地址,基本类型不是
        2、包装类型是引用的传递,基本类型是值的传递
        3、声明方式不同,基本数据类型不需要new关键字,而包装类型需要new在堆内存中进行new来分配内存空间
        4、存储位置不同,基本数据类型直接将值保存在值栈中,而包装类型是把对象放在堆中,然后通过对象的引用来调用他们
        5、初始值不同,eg: int的初始值为 0 、 boolean的初始值为false 而包装类型的初始值为null
        6、使用方式不同,基本数据类型直接赋值使用就好 ,而包装类型是在集合如 coolection Map时会使用
7,final,finally的区别?
    答:final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。内部类要访问局部变量,局部变量必须定义成final类型。
        finally是异常处理语句结构的一部分,表示总是执行
8,private protected default,friendly 的作用域?
    作用域       当前类    同一package   子孙类     其他package
    public        √       √             √           √
    protected     √       √             √           ×
    friendly      √       √             ×           ×
    private       √       ×             ×           ×
9,常用的集合用哪里?各自什么特点?
    答:List,Set,Map
        List:元素有放入顺序,元素可重复
             -> ArrayList:基于动态数组的数据结构,查询比较快,增删 比较慢;
                LinkedList:基于链表的数据结构,增删比较快,查询比较慢
        Set:元素无放入顺序,元素不可重复
        Map:元素无放入顺序,元素不可重复
             -> HashMap:a)线程不安全;b)允许null;
                HashTable:a)线程安全;b)不允许null;
10,多线程实现方式?多线程的几种状态转换?run方法和start方式有什么区别?
    答:实现方式:继承Thread类,实现Runable接口
        线程几种状态的转寒  :可以参考博客:http://blog.csdn.net/jiafu1115/article/details/6804386
        区别:run():当前线程为可运行状态,可以参与CPU执行权
              start():当前状态为初始就绪状态,没有竞争CPU执行权;
11,动态代理有什么好处?有几种实现方式?各有什么特点?
    答:优点:主要用来做方法的增强,让你可以在不修改源码的情况下,增强一些方法,在方法执行前后做任何你想做的事情(甚至根本不去执行这个方法)
        实现方式:JDK动态代理和CGLIB
        各自特点:
            JDK动态代理:基于接口实现
            CGLIB:是针对类来实现代理的,他的原理是对指定的目标类生成一个子类,并覆盖其中方法实现增强,但因为采用的是继承,所以不能对final修饰的类进行代理。
12,手写单例类
13,常用的异常类有哪些?
    答:空指针异常类:NullPointerException
        类型强制转换异常:ClassCastException
        数组下标越界异常:ArrayIndexOutOfBoundsException
        文件未找到异常:FileNotFoundException
        字符串转换为数字异常:NumberFormatException
        输入输出异常:IOException
        操作数据库异常:SQLException
        方法未找到异常:NoSuchMethodException
        未找到类定义错误:java.lang.NoClassDefFoundError
14,error和Exception区别?
    答:Error:称为错误,由java虚拟机生成并抛出,包括动态链接失败,虚拟机错误等,程序对其不做处理。
        Exception:所有异常类的父类,其子类对应了各种各样的可能出现的异常事件,一般需要用户显示的声明或捕获