每日一题day12

1.以下方法,哪个不是对add方法的重载?
 

public class Test
{
public void add( int x,int y,int z){}
}

A public int add(int x,int y,float z){return 0;}
B public int add(int x,int y,int z){return 0;}
C public void add(int x,int y){}
D 以上都不是

答案:B

解析:overload(重载)1、参数类型、个数、顺序至少有一个不相同。 2、不能重载只有返回值不同的方法名。3、存在于父类和子类、同类中。

2. 在Java中,关于HashMap类的描述,以下错误的是  B

A HashMap使用键/值得形式保存数据
B HashMap 能够保证其中元素的顺序
C HashMap允许将null用作键
D HashMap允许将null用作值

3. 在Java中,( )类提供定位本地文件系统,对文件或目录及其属性进行基本操作

A FileInputStream
B FileReader
C FileWriter
D File

解析:FileInputStream提供了对文件的字节读取; FileReader提供了对文件的字符读取; FileWriter提供了对文件的字符写入; File提供了对文件的基本操作,包括对删除,文件路径等操作。

4. 下面程序的运行结果是  B
 

String str1 = "hello";
String str2 = "he" + new String("llo");
System.err.println(str1 == str2);

A true
B false
C exception
D 无输出

解析:因为 str2 中的 llo 是新申请的内存块,而 == 判断的是对象的地址而非值,所以不一样。如果是String str2 = str1,那么就是 true 了。

5. volatile关键字的说法错误的是  A

A 能保证线程安全
B volatile关键字用在多线程同步中,可保证读取的可见性
C JVM保证从主内存加载到线程工作内存的值是最新的
D volatile能禁止进行指令重排序

解析:

“观察加入volatile关键字和没有加入volatile关键字时所生成的汇编代码发现,加入volatile关键字时,会多出一个lock前缀指令”

lock前缀指令实际上相当于一个内存屏障(也成内存栅栏),内存屏障会提供3个功能:

  1)它确保指令重排序时不会把其后面的指令排到内存屏障之前的位置,也不会把前面的指令排到内存屏障的后面;即在执行到内存屏障这句指令时,在它前面的操作已经全部完成;

  2)它会强制将对缓存的修改操作立即写入主存;

  3)如果是写操作,它会导致其他CPU中对应的缓存行无效。

 

6. java接口的方法修饰符可以为?(忽略内部接口)

A private
B protected
C final
D abstract

答案:D

解析:
(1)接口用于描述系统对外提供的所有服务,因此接口中的成员常量和方法都必须是公开(public)类型的,确保外部使用者能访问它们;

(2)接口仅仅描述系统能做什么,但不指明如何去做,所以接口中的方法都是抽象(abstract)方法;

(3)接口不涉及和任何具体实例相关的细节,因此接口没有构造方法,不能被实例化,没有实例变量,只有静态(static)变量;

(4)接口的中的变量是所有实现类共有的,既然共有,肯定是不变的东西,因为变化的东西也不能够算共有。所以变量是不可变(final)类型,也就是常量了。

所以:
接口的方法默认是public abstract;
接口中不可以定义变量即只能定义常量(加上final修饰就会变成常量)。所以接口的属性默认是public static final 常量,且必须赋初值。

注意:final和abstract不能同时出现。

7. 下列程序的运行结果

public void getCustomerInfo() {
try {
// do something that may cause an Exception
} catch (java.io.FileNotFoundException ex) {
System.out.print("FileNotFoundException!");
} catch (java.io.IOException ex) {
System.out.print("IOException!");
} catch (java.lang.Exception ex) {
System.out.print("Exception!");
}
}



A IOException!
B IOException!Exception!
C FileNotFoundException!IOException!
D FileNotFoundException!IOException!Exception!

答案:A

解析:考察多个catch语句块的执行顺序。当用多个catch语句时,catch语句块在次序上有先后之分。从最前面的catch语句块依次先后进行异常类型匹配,这样如果父异常在子异常类之前,那么首先匹配的将是父异常类,子异常类将不会获得匹配的机会,也即子异常类型所在的catch语句块将是不可到达的语句。所以,一般将父类异常类即Exception老大放在catch语句块的最后一个。

8. 下列哪种异常是检查型异常,需要在编写程序时声明?

A NullPointerException
B ClassCastException
C FileNotFoundException
D IndexOutOfBoundsException

答案:c

解析:classNotFoundException是受检异常。其他的都是运行时异常,程序员不能控制。

9. 选项中哪一行代码可以添加 到题目中而不产生编译错误?
 

public abstract class MyClass {
public int constInt = 5;
//add code here
public void method() {
}
}

A public abstract void method(int a);
B constInt = constInt + 5;
C public int method();
D public abstract void anotherMethod() {}

答案:A

解析;A是抽象方法,抽象类可以包含抽象方法,也可以不包含,实现重载。(√)
B 在类中不能constInt = constInt + 5(×)
C 返回值不能作为重载的依据(×)
D 有方法体的不能作为抽象函数(×)

10. 如下代码,执行test()函数后,屏幕打印结果为()
 


public class Test2
{
public void add(Byte b)
{
b = b++;
}
public void test()
{
Byte a = 127;
Byte b = 127;
add(++a);
System.out.print(a + " ");
add(b);
System.out.print(b + "");
}

A 127 127
B 128 127
C 129 128
D 以上都不对

答案:D

解析:public void add(Byte b){ b=b++; } 这里涉及java的自动装包/自动拆包(AutoBoxing/UnBoxing) Byte的首字母为大写,是类,看似是引用传递,但是在add函数内实现++操作,会自动拆包成byte值传递类型,所以add函数还是不能实现自增功能。也就是说add函数只是个摆设,没有任何作用。 Byte类型值大小为-128~127之间。 add(++a);这里++a会越界,a的值变为-128 add(b); 前面说了,add不起任何作用,b还是127。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值