1.以下属于面向对象的特征的是()
A.重载 B.重写 C.封装 D.继承
1-解析:
a)面向对象的特征有:多态、封装、继承(extends);
b)多态包括:重载和重写两种;
c)重载与重写的区别:重载是在同一个类里,方法名相同、参数列表不同(参数个数、数据类型、参数顺序不同不一样)返回类型可以相同;而重写是在子类里面重写父类的某个方法,方法返回类型、方法名及参数列表必须一样,变得只是方法体的语句(访问权限比父类要大)作用就是改写父类!本题选CD;
d)封装主要作用在于对外隐藏内部实现细节,增强程序的安全性
类的封装性即不能让外面的类随意修改一个类的成员变量; 在定义一个类的成员,使用private关键字说明这个成员的访问权限,只能被这个类的其他成员方法调用,而不能被其他的类中的方法所调用; 为实现封装性,常将类的成员变量声明为private,再通过public的方法来对这个变量进行访问。对一个变量的操作,一般都有 读取和赋值操作,我们一般定义两个方法来实现这两种操作,即:getxxx()与setxxx(); 一个类就是一个模块,我们应该让模块仅仅公开必须要让外界知道的内容,而隐藏其他的一切内容。再进行程序设计时,应尽量避免一个模块直接修改或操作另一个模块的数据,模块设计追求强内聚,弱耦合。
2.一下代码运行输出是()
public class Person{
private String name="Person";
int age=0;
}
public class Child extends Person{
public String grade;
public static void main(String[] args){
Person p = new Child();
System.out.println(p.age);
System.out.println(p.name);
}
}
A.输出:0 和 Person B.没有输出 C.编译出错 D.运行出错
2-解析:本题考的是访问权限的问题:访问修饰符有public(任何类都可以访问)、protected(除了不同包的非子类都可以访问)、无访问修饰符(只能在同一个包内部可以访问)、private(只有在同一类里可以访问)
本题p.name中name是Person类的私有属性可以被继承但不可以访问,所以编译都通不过答案选C
3.在使用super和this 关键字时,一下描述正确的是()
A.在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过
B.super()和this()不一定要放在构造方法的第一行
C.this()和super()可以同时出现在一个构造仿函数中
D.this()和super()可以在static环境中使用,包括static方法和static语句块
3-解析:上面已讲的很清楚,super()和this()都必须放在第一行,要注意他们与this与super关键字的区别,this、super可以同时出现在同一个构造函数中,super.方法()和super.属性可以调用父类的所有非私有方法和非私有属性 ,super()可以调用父类的所有非私有构造函数,有疑问可以动手操作一下,答案A
4.下面代码运行结果是:()
public class Demo{
public int add(int a,int b){
try{
return a+b;
}catch(Exception e){
System.out.println(“catch语句块”);
}finally{
System.out.println(“finally语句块”);
}
return 0;
}
public static voidmain(String[] args){
Demo demo = new Demo();
System.out.println(“和是:”+demo.add(9,34));
}
}A.编译异常; B.finally语句块 和是:43; C.和是:43 finally语句块 ; D.catch语句块 和是:43
4-解析:从题可知,a+b是不会抛异常的,所以就不会被catch扑捉。然后讨论就是他执行的return还是finally;
其实return a+b 在执行的时候可以分为a+b 看是否有异常,是否被catch扑捉,如果没扑捉就执行finally然后再returna+b的结果。答案是:B
5.以下程序运行结果是()
public class Test {
publicint div(int a, int b) {
try {
return a / b;
}catch(Exception e){
System.out.println("Exception");
}catch(NullPointerException e){
System.out.println("ArithmeticException");
}
catch (ArithmeticException e) {
System.out.println("ArithmeticException");
} finally {
System.out.println("finally");
}
return 0;
}
public static void main(String[] args) {
Test demo = new Test();
System.out.println("商是:" + demo.div(9, 0));
}
}A.Exception finally 商是:0 B.ArithmeticException finally 商是:0 C.finally商是:0 D.编译报错
5-解析:本题考察的是catch捕获异常时排列的顺序,应从小到大一次捕获!本题答案D
6.根据下面的代码,
String s = null;
会抛出NullPointerException异常的有()。
A.if( (s!=null) & (s.length()>0) ) B.if((s!=null) && (s.length()>0)) C.if((s==null) | (s.length()==0)) D.if((s==null)||(s.length()==0))
6-解析:本题考查的是短路语(&&,||),&&第一个不满足条件后面的就不会执行;||第一个满足就不用执行后面的了;还有一个考点是空指针异常,若s=null,那么s.length()就会报空指针异常,答案是AC
7。
publicclass Testa {
Integer a = new Integer(10);
Integer b = new Integer(10);
public static void main (String[ ] args){
Testa testA = new Testa();
if (testA.a==testA.b){
System.out.print("很");
}
if (testA.a.equals(testA.b)){
System.out.print("好");
}
}
}A.很 B 好 C。很好 D.抛出NullPointerException E。编译错误
7-解析:-------如果Integer a=127,Integer b=127,他们(==)也成立,(int 在-128到127之间)大于127或小于-128就不行,地址不也一样---------==比较的是地址-------equals比较的是地址里面的值,答案B