Java练习题(六)

26、java中 String str = "hello world"下列语句错误的是?(ABC)

A.str+=' a'

B.int strlen = str.length

C.str=100

D.str=str+100

A:.str+="a";

B:int strlen = str.length();

27、Java是一门支持反射的语言,基于反射为Java提供了丰富的动态 性支持,下面关于Java反射的描述,哪些是错误的:(ADF)

A.Java反射主要涉及的类如Class, Method, Filed,等,他们都在java.lang.reflet包下

B.通过反射可以动态的实现一个接口,形成一个新的类,并可以用这个类创建对象,调用对象方法 C.通过反射,可以突破Java语言提供的对象成员、类成员的保护机制,访问一般方式不能访问的成员

D.Java反射机制提供了字节码修改的技术,可以动态的修剪一个类

E.Java的反射机制会给内存带来额外的开销。例如对永生堆的要求比不通过反射要求的更多

F.Java反射机制一般会带来效率问题,效率问题主要发生在查找类的方法和字段对象,因此通过缓存需 要反射类的字段和方法就能达到与之间调用类的方法和访问类的字段一样的效率 屏蔽本

28.若有定义:byte[]x={11,22,33,﹣66};其中0≤k≤3,则对x数组 元素错误的引用是(C)

A.x[5-3]

B.x[k]

C.x[k+5]

D.x[0]

29.以下不属于构造方法特征的是(D)

A.构造方法名与类名相同

B.构造方法不返回任何值,也没有返回类型

C.构造方法在创建对象时调用,其他地方不能显式地直接调用

D.每一个类只能有一个构造方法

D选项描述错误,一个类可以有多个构造方法,形成重载关系。

30.java7后关键字 switch 支不支持字符串作为条件:(A)

A.支持

B.不支持

在Java7之前,switch只能支持 byte、short、char、int或者其对应的封装类以及Enum类型。在Java7 中,呼吁很久的String支持也终于被加上了。 在switch语句中,表达式的值不能是null,否则会在运行时抛出NullPointerException。在case子句中也 不能使用null,否则会出现编译错误。 同时,case字句的值是不能重复的。对于字符串类型的也一样,但是字符串中可以包含Unicode转义字 符。重复值的检查是在Java编译器对Java源代码进行相关的词法转换之后才进行的。也就是说,有些 case字句的值虽然在源代码中看起来是不同的,但是经词法转换之后是一样的,就会在成编译错误。比 如:“男”和“\u7537”就是一个意思。 然后看一个源代码及反编译后的代码:

public class StringForSwitch {
public void test_string_switch() {
String result="";
switch ("doctor") {
case "doctor":
result = "doctor";
break;
default:
break;
}
}
}

反编译后的,还原成大致的Java的代码如下:

public class StringForSwitch {
public StringForSwitch() {
}
public void test_string_switch() {
String result = "";
String var2 = "doctor";
switch("doctor".hashCode()) {
case -1326477025:
if(var2.equals("doctor")) {
result = "doctor";
}
default:
break;
}
}
}

可以看出,字符串类型在switch语句中利用hashcode的值与字符串内容的比较来实现的;但是在case字 句中对应的语句块中仍然需要使用String的equals方法来进一步比较字符串的内容,这是因为哈希函数 在映射的时候可能存在冲突。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值