错题Day05

1.下面的程序编译运行之后,在屏幕上显示的结果是( )
public class Test{
  public static void main(String args[]){
    int x,y;
    x = 5>>2;//右移动
    y = x>>>2;//无符号右移动
    System.out.println(y);
  }
}//打印结果:0
2.以下代码的结果是什么?
public class Foo {
    public static void main(String[] args) {
        StringBuffer a = new StringBuffer("A");
        StringBuffer b = new StringBuffer("B");
        opreate(a,b);
        System.out.println(a+" "+b);
    }
    static void opreate(StringBuffer X,StringBuffer Y){
        X.append(Y);
        X = Y;//此时不代表b就指向了AB,此时b还是指向B没有变
    }
}//往方法中传参,传的仅仅只是地址,而不是实际内存,所以不要以为y=x程序的执行,是 b=a的执行。

所以,上述代码可以运行,输出的是"AB,B"

3.下面哪个说法是正确的( )

A:ConcurrentHashMap使用synchronized关键字保证线程安全

B:HashMap实现了Collction接口

C:Array.asList方法返回java.util.ArrayList对象

D:SimpleDateFormat是线程不安全的

答:A选项中,ConcurrentHashMap 使用segment来分段和管理锁,segment继承自ReentrantLock,因此ConcurrentHashMap使用ReentrantLock来保证线程安全。

B中,HashMap定义规则如下: 
public class HashMap<K,V>
    extends AbstractMap<K,V>
    implements Map<K,V>, Cloneable, Serializable
C中,应该是Arrays.asList(),其将一个数组转化为一个List对象,这个方法会返回一个ArrayList类型的对象,   这个ArrayList类并非java.util.ArrayList类,而是Arrays类的内部类
4.以下说法错误的是(D)

A:虚拟机中没有泛型,只有普通类和方法

B:所有泛型类的类型参数在编译时都会被擦除

C:创建泛型对象时请指明类型,让编译器尽早的作参数检查

D:泛型的类型擦除机制以为着不能在运行时动态获取List中T的实际类型

5.以下程序运行的结果是
public class Example{
  String str = new String("good");
  char[] ch = {'a','b','c'};
  public static void main(String args[]){
    Example ex = new Example();
    ex.change(ex.str,ex.ch);
    System.out.print(ex.str+"and");
    System.out.print(ex.ch);
  }
  public void change(String str,char ch[]){
    str = "test ok";
    ch[0] = 'g';
  }
}

运行结果为good and gbc

​ change函数被调用时,第一个形参str接收了类的成员变量str的值(虽然名称都是str,但是却是两个独立的String类型的引用变量),注意这两个str自身都是变量且都指向了堆内存中的String对象"good",当我们在change函数内部将str指向了另一个String对象"test ok"后,类的成员变量str仍然保持指向"good",所以最终打印出来就是"good";对于第二个形参ch,它也是接收了类的成员变量ch的值拷贝,这一点和str没有差别,即两个ch都指向了字符数组{ ‘a’, ‘b’, ‘c’ }的首地址,但是ch[0]表示的是字符数组中’a’的地址,修改了它也就修改了字符数组的第一个元素,这个改变在change函数返回之后也会存在。所以本题中两个形参传参的本质区别在于,修改str只是将形参指向了新的对象,对外部的实参没有任何影响,而修改ch[0]是实实在在的修改了字符数组的首元素。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值