JAVASE -JAVA基础面试题

来源:互联网 发布:淘宝网地板棉拖鞋 编辑:程序博客网 时间:2024/05/29 09:23

Java面试题

JAVASE部分

1.什么是重载?

重载发生在同一类中,指的是对方法的重载,方法名相同,参数列表不同,与方法的返值类型无关,参数列表不同可以是参数的个数不同,也可以是相同位置上的参数的类型不同,与参数的名字无关。

之所以对方法进行重载主要是为了方便程序员的记忆和使用,将功能类似但细节不同的逻辑代码公用一个方法名,方便使用,当程序员在调用时根据细节的不同传入对应方法的参数。

   例如打印语句  System.out.println()  System.out.println(String str);这就是方法的重载,前者只打印换行,后者打印字符串后再换行,他们都执行打印和换行操作,不同的是是否有字符串输出

2.什么是重写?

重写发生在子类和父类之间,是子类对父类的方法的重写,方法名相同,参数列表相同;这里参数列表相同指的是参数的对应位置类型相同且个数相同,与参数的名字无关。

重写可以是对方法的重写,也可以是对成员变量的重写;这里主要介绍方法的重写;重写主要是对父类方法的一个扩展,是对父类方法的一个改造。当子类继承自父类方法后,父类的方法并不能满足子类要实现的功能,子类可以重写父类的方法。

例如jdbc中常用的两个传输器对象StatementPreparedStatement ,PreparedStatement继承Staement,且将StatementResultSet executeQuery(String sql)方法重写为ResultSet executeQuery(),因为子类有预编译的功能,在创建对象时就需要传入sql语句,在执行时不需要sql语句的传入了,但他们都是要执行查询的操作,子类根据自己实际的需要对该方法进行改造,保留方法名,只对参数列表和方法体进行了修改,实现了自己特定功能的逻辑代码。

3.java的三大特征并分别进行解释

 封装、继承、多态

封装:包括方法的封装和类的封装,将特定功能的代码或者逻辑复杂的代码写到一个方法中或者一个类中,当程序员使用时不必关系内部具体的实现细节,只需要知道其实现的功能进行调用即可,同时增强了代码的复用性以及可维护性,内部部分代码的修改并不影响外界的调用。

    在java面向对象之前,代码是面向过程的,从上到下执行,当需要执行上边重复的功能时就要重新编写,代码会很冗长,而将这些通用的逻辑写到方法中后,后续再使用时直接调用,增强了代码的复用性。

继承:我们在编写代码时,经常出现特性形似的一些类,那么我们将这些相似点提取出来封装到一个类(父类)中,然后让需要实现具体细节逻辑的类(子类)去继承这个公共类。

继承同样增强了代码的复用性,对于功能相同的代码子类不需要去重新编写,同时继承还增强了代码的可拓展性,当父类中有一些方法不适用或不满足某些功能时,子类可以通过重写父类的方法或者新编写方法进行完善

多态:同一对象的不同表现形式,既然指行为的多态又指对象的多态。方法的重载和重写即是多态的两种表现形式,重载即表现出对象行为的多态,同一对象调用他的不同重载方法时执行不同的功能。

向上造型也是一种多态,指的是属性的多态,同一变量可以指向不同的对象

4.接口和抽象类有什么区别,有了抽象类为什么还要有接口?

抽象类:从语法上来说,抽象类用abstract来修饰,不能被实例化,在抽象类中可以有抽象方法也可以有非抽象方法;抽象方法只有方法的声明没有方法体,当类中需要有功能去留给子类扩展时,将类声明为抽象类,定义抽象方法。抽象类相当于工业中的半成品,输送到各个车间,各车间再根据实现抽象方法去加工扩展。

接口:从语法上来说,接口用interface来修饰,同样不能被实例化,接口中的方法都是默认抽象方法,接口中的变量都是常量;接口是一种规范,实现接口的类必须去实现接口中具有规范作用的抽象方法。

接口的出现是为了解决类的单继承的局限性,接口可以多继承。若没有接口的话,一个类继承抽象类后将不能再继承任何其他类。

其次,接口是一种规范,在分模块开发过程中,各程序员实现相同的接口,按照这个接口规范去进行各自的开发,不受其他程序员影响。

5.举出5String常用的API

length()---求长度

charAt(int index)---获得字符串指定下标的字符

indexOf(char a)---获取字符串中第一次检索到字符a时的下表

subString(int index1,int index2)---截取字符串在下标index1index2之间的字符串,包含index1,不包含index2

startWith(String str)---字符串以指定的字符串开头

endWith(String str)---字符串以指定的字符串结尾

6.创建线程的方式以及这两种方式的不同

方法一:

自定义的类MyThread 继承Thread类重写run方法

Thread t=new MyThread();

t.start();

方法二:自定义的类MyThread实现Runable接口重写run方法

Tread t=new Thread(new MyThread);

tstart();

衍生:运用以上两种方式的匿名内部类然后重写run方法

由于类是单继承的,所以当一个类使用继承方式实现线程后该类只能为线程,不能再继承其他类,而使用接口的形式,由于接口的多继承特性,可以避免这一问题;另外,由上述调用过程可以看出,当使用接口方式创建时,对于一个类需要线程时创建对象再将该对象作为参数放入线程即可,不需要时不必放入线程,实现了类与线程的解耦。



==========================================================================================================

个人拙见,欢迎大家进行点评!

1 0