第二次JAVA基础考试总结

第二次JAVA基础考试心得

错题总结

1,A--成员函数的重写是直接覆盖父类的(继承中),但是成员变量重写是不会进行覆盖的。从存储角度看,属性是存储进堆中的,而方法只是在栈中暂存,不做长时间保存,执行过就释放,因此属性不变。

D--只有子类继承父类的方法才可以覆盖,父类私有的方法不可以覆盖。final修饰的方法不可以被覆盖的。


2A--instanceof的作用是判断其左边对象是否为其右边类的实例,返回boolean类型的数据。

B--因为没有默认值,声明的时候需要初始化。

D--如果子类也为抽象类,则可以不必全部实现抽象类的抽象方法,非抽象子类必须实现抽象父类的抽象方法。

E--向上转型的时候,子类和父类如果拥有相同名字的成员变量时,访问的是父类里的成员变量。

F--内部类访问外部类的方法时需要实例化外部类对象

G--静态内部类的变量是可以任意权限修饰的包括静态的.


3,A--不能和abstract一起使用的修饰符有staticfinalprivate。可以和public一起使用。

C--接口中只能包含抽象方法和常量

D--局部内部类不可以用public,private修饰符修饰。

E--接口和抽象类都不能直接实例化


4A--instanceof运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。

D--对象是类的实例


6B--如果有带参的构造函数,JVM不会生成一个默认的构造函数

7A--因为父类中的方法是被final修饰的,不能被子类重写,而且子类的方法是一个有参的方法,所以第一个调用是调用的父类方法,输出为1,第二个调用的是子类的有参方法,所以输出为2,答案选A

8

B--接口里的被赋值的属性是常量,默认会有publicstatic final前缀。不能和abstract一起使用的修饰符有staticfinalprivate

D--不能和abstract一起使用的修饰符有staticfinalprivate

F--若类中有finalabstract修饰的方法,abstract不能和final一起使用


10A--instanceof的作用是判断其左边对象是否为其右边类的实例,返回boolean类型的数据。

B--普通成员内部类是不可以定义静态变量的

D--局部内部类不能用publicprivate等修饰符修饰。

E--要访问内部类先实例化外部类,再实例化内部类。

11E--类实现接口,利用关键字implements完成。

12B--抽象类的方法可以有普通方法,不一定全是抽象方法

C--继承抽象类的子类可以为普通类(实现了父类所有的抽象方法)

D--普通类也可以实现接口

14A--因为子类继承父类,所以会先调用父类的构造函数,先输出B然后再调用子类的构造函数输出D,所以输出BD,答案为A

15try必不可少,catchfinally可以任意选择

16B--自定义异常类可以继承Throwable类或者Exception,而不要继承Error类。

D--肯定有意义,不然干嘛要自定义异常

18A--向上转型的时候,父类与子类有相同名字的普通成员变量时,访问的时父类里面的,所以body.a先调用父类的为20,然后如果父类与子类有相同名字的普通成员方法时,访问的时子类里面的,但是由于子类没有含参方法,所以还是调用父类的方法,所以输出为20,答案选A

20A--Java抽象类不能被实例化

C--抽象类可以有普通方法


2,首先,里面有一个静态代码块,使优先于主函数执行的,i的默认值为0,然后++变为了1,Le.show()调用了show方法,输出为2,然后Lel = newLe(5,6),调用了有参构造函数Le,并传入俩个参数,把第二的参数6赋值给了this.i,再调用有参show()方法,有参show方法里面先调用无参show()方法,输出this.i++也就是7,然后输出传入的参数2,由于是先赋值再++,所以是输出2而不是3。最后再一次调用无参show()方法,也就是输出this.i++7+1=8,所以答案是27 2 8

3,编译错误,成员内部类的属性和方法不可以用static修饰

4,粗心,在System.out.println("age"+p1.age+p2.age);中,居然把p1.agep2.ag当算术运算给相加了,直接输出就好。


重新编程如下:

1,使用二分法查找数组中int[]{10,20,30,40,50,60}中某个元素的位置

publicclass Demo03 {

publicstatic void main(String[] args) {

int[]is={10,20,30,40,50,60};

Arrays.sort(is);

System.out.println(myBinary(is,10));

for(int num:is){

System.out.print(num+"");

}

}

//二分法

publicstatic int myBinary(int[] is, int num) {

intlow = 0;

inthigh = is.length - 1;

while(low <= high) {

intmid = (low + high) / 2;

if(is[mid] > num) {

high= mid - 1;

}else if (is[mid] < num) {

low= mid + 1;

}else {

returnmid;

}

}

return-1;

}

}


2,编程找出1000以内的所有完数

publicclass Kaoshi0327 {


publicstatic void main(String[] args) {

for(int i = 1; i <= 1000; i++) {

intnum = 0;

for(int j = 1; j <= i; j++) {

if(i % j == 0) {

num= num + j;

if(num == i)

System.out.println(i);

}

}

}

}

}

由于时间大部分花在选择题上,导致只来得及看了题目便到了考试时间。但自己编程能力较差,也是一方面原因,以后要多加强自己的编程能力,勤加练习。


2017326

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值