Java基础笔试题
Java基础笔试题
笔试目的:锻炼大家的笔试能力,不会让你在笔试中出现提笔忘字的情况出现。同时也是对自己学习成果的一次检验,掌握本阶段最核心最精华的知识点。
- 问题:什么是面向对象?(10分)
本题目的:检测对面向对象概念,面向对象特性的理解
答案:
面向对象是一种编程思想. 在使用对象的过程中, 不需要去管对象内部是怎么实现的, 只需要知道可以实现什么功能就可以了.(3分)
面向对象具有封装性,继承性,多态性(3分)。封装隐蔽了对象内部不需要暴露的细节,使得内部细节的变动跟外界脱离,只依靠接口进行通信.封装性降低了编程的复杂性.。通过继承,使得新建一个类变得容易,一个类从派生类那里获得其非私有的方法和公用属性的繁琐工作交给了编译器。而继承和实现接口和运行时的类型绑定机制所产生的多态,使得不同的类所产生的对象能够对相同的消息作出不同的反应,极大地提高了代码的通用性(4分).
- 问题:作用域public,private,protected,以及不写时的区别 ?(10分)
本题目的:检测修饰符与作用域的理解。
答案:区别如下:
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √ (2分)
protected √ √ √ × (2分)
default √ √ × × (2分)
private √ × × × (2分)
不写时默认为default(2分)
- 问题:简述final的用法?(10分)·
本题目的:检测final的理解和使用
答案:
final修饰类(1),不能被继承(2)。
final修饰属性(1),值不可被更改(2)。
final修饰方法(1),不可被重写(2)。
在匿名内部类的方法中调用局部变量,局部变量需要被final修饰。(1)
- 问题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递。(10分)
本题目的:检测值传递和引用传递的区别
答案:
是值传递(4)。Java 编程语言只有值传递参数(3)。当一个对象实例作为一个参数被 传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中
改变,但对象的引用是永远不会改变的(3)。
- 问题:简述static的用法。(10分)
本题目的:检测static的理解和使用
答案:
static修饰的属性和方法,随着类的加载而加载,优先于对象存在。(3)被所有的对象共享, 既可以通过类调用,也可以通过对象调用。(3)static修饰的方法,只能访问static修饰的成员。(2)static关键字不能和this,super同时使用。(2)
- 问题:Overload和Overrid的区别。Overloaded的方法是否可以改变返回值的类型(10分)
本题目的:检测对于Overload和Overrid的理解
答案:
方法的重写Overriding和重载Overloading是Java多态性的不同表现。(2)重写Overriding是父类与子类之间多态性的一种表现,(1)重载Overloading是一个类中多态性的一种表现。(1)如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。(3)如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。(3)
- 问题:String与StringBuffer的区别?(10分)
本题目的:检测对于字符串处理的掌握情况
答案:
String的长度是不可变的(3),StringBuffer的长度是可变的(3)。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer(2),如果最后需要String,那么使用StringBuffer的toString()方法(2)。
- 问题:"=="和equals方法究竟有什么区别?(10分)
本题目的:对于"=="和equals的理解
答案:
==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同。(4)
equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。(4)
例如,对于下面的代码:
String a=new String("foo");
String b=new String("foo");
两条new语句创建了两个对象,然后用a,b这两个变量分别指向了其中一个对象,这是两个不同的对象,它们的首地址是不同的,即a和b中存储的数值是不相同的,所以,表达式a==b将返回false,而这两个对象中的内容是相同的,所以,表达式a.equals(b)将返回true。(2)
- 问题:构造器Constructor是否可被override?abstract是否可以和final同时修饰方法?(10)
本题目的:检测对于override的理解
答案:
构造器Constructor不能被重写Overriding(2),构造器Constructor不能被继承,因此不能被重写,但可以被重Overloading(3)。
abstract不可以和final同时修饰方法(2),因为abstract修饰的方法需要被重写Overrifing,而final修饰的方法不能被重写(3)。
- 问题:什么是多态。(10分)
本题目的:检测对于多态的理解
答案:
我们通常说的多态指的是对象的多态。(1)也就是说对象具有多种心态。编译时的类型由声明该变量时使用的类型决定;运行时的类型由实际赋给变量的对象决定。 如果编译时类型和运行时类型不同,就出现多态。(2)
继承是多态产生的前提条件。(1)
实现多态的机制: 父类的引用变量可以指向子类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的真正实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。(3)
多态的作用: 把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码 , 做出通用的编程,以适应需求的不断变化。(3)