下面的程序 编译运行后,在屏幕上显示的结果是(A) public class test { public static void main(String args[]) { int x,y; x=5>>2; y=x>>>2; System.out.println(y); } } A 0 B 2 C 5 D 80 分析:移位运算符 左移<< 最左侧丢掉,最右侧补0 相当于乘2^n 右移>> 最右侧丢掉,最左侧补符号位(正数补0,负数补1)相当于÷(2^n) 无符号右移>>>最右侧丢掉,最左侧补0 如何将一个数字快速的扩大八位 即给一个数字左移3就可 n<<3
以下代码结果是什么? public class foo { public static void main(String sgf[]) { StringBuffer a=new StringBuffer(“A”); StringBuffer b=new StringBuffer(“B”); operate(a,b); System.out.println(a+”.”+b); } static void operate(StringBuffer x,StringBuffer y) { x.append(y); y=x; } } A 代码可以编译运行,输出“AB.AB”。 B 代码可以编译运行,输出“A.A”。 C 代码可以编译运行,输出“AB.B”。 D 代码可以编译运行,输出“A.B”。 我的回答: A (错误) 正确答案: C
装箱和拆箱 装箱就是把基本类型用它们相应的引用类型包装起来,使其具有对象的性质。例如,Integer a = 10; 而拆箱则是将引用类型的对象简化成值类型的数据,例如,b = new Integer(10); 装箱拆箱操作是在值类型和引用类型之间进行转化
下列哪个说法是正确的(D) A ConcurrentHashMap使用synchronized关键字保证线程安全 B HashMap实现了Collction接口 C Array.asList方法返回java.util.ArrayList对象 D SimpleDateFormat是线程不安全的 解析:C选项,Arrays.asList()将一个数组转化为一个List对象,返回的这个ArrayList并不是java.util.ArrayList对象,而是Arrays类的静态内部类。 A选项 ConcurrentHashMap使用分段加锁的机制确保安全,而不是synchronized关键字。 B选项,看下源码,HashMap和Map和Collection集合没啥父子关系。 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable public interface Map<K,V>
下列错误的是(D) A 虚拟机中没有泛型,只有普通类和普通方法 B 所有泛型类的类型参数在编译时都会被擦除 C 创建泛型对象时请指明类型,让编译器尽早的做参数检查 D 泛型的类型擦除机制意味着不能在运行时动态获取List中T的实际类型 因为编译时会自动擦除类型。泛型等同于Object。这种情况是没有办法在运行时获得泛型的具体类型。JVM是通过强大的反射机制获取具体类型的,也正因为有了反射才促生了泛型。 JVM如何理解泛型概念 —— 类型擦除。事实上,JVM并不知道泛型,所有的泛型在编译阶段就已经被处理成了普通类和方法。