问题1:
下面这三条语句
System.out.println(“is ”+ 100 + 5);
System.out.println(100 + 5 +“ is”);
System.out.println(“is ”+ (100 + 5));
的输出结果分别是? ( )
is 1005, 105 is, is 105
解析:
先出现字符串,后面的内容自动强制转换为string进行拼接 先出现数字,则进行加减运算 先算括号里面,数字
问题2:
下面有关java hashmap的说法错误的是?
正确答案: C 你的答案: D (错误)
HashMap 的实例有两个参数影响其性能:“初始容量” 和 “加载因子”。
HashMap 的实现不是同步的,意味着它不是线程安全的
HashMap通过开放地址法解决哈希冲突
HashMap中的key-value都是存储在Entry数组中的
解析:
hashmap采用拉链法解决冲突
问题3:
下面哪个流类不属于面向字符的流()
既然是字符流,那么一般是reader和writer结尾
解析:
问题4:
下面有关java final的基本规则,描述错误的是?
正确答案: B
final修饰的类不能被继承
final修饰的成员变量只允许赋值一次,且只能在类方法赋值
final修饰的局部变量即为常量,只能赋值一次。
final修饰的方法不允许被子类覆盖
解析:
final修饰的方法,不允许被子类覆盖。
final修饰的类,不能被继承。
final修饰的变量,不能改变值。
final修饰的引用类型,不能再指向别的东西,但是可以改变其中的内容。
问题5:
变量a是一个64位有符号的整数,初始值用16进制表示为:0Xf000000000000000; 变量b是一个64位有符号的整数,初始值用16进制表示为:0x7FFFFFFFFFFFFFFF。 则a-b的结果用10进制表示为多少?
-(262+261+2^60+1)
解析:
(1)原码是符号位加上真值的绝对值,即用第一位表示符号位,其余位表示值。
(2)正数的反码是其本身。负数的反码是在原码的基础上,符号位不变,其余按位取反。
(3)正数的补码是其本身。负数的补码是在原码的基础上,符号位不变,其余按位取反,最后加1。
(4)计算机进行符号运算时,会以补码表示,符号位和数字位会一起参与运算。
a-b实际转换为[a-b]补=[a]补+[-b]补
a为1111(后面60个0),1开头,所以为一个负数;补码为1001(后面60个0)
b为0111(后面60个1),0开头,所以为一个正数;补码为其本身。
-b为1111(后面60个1),补码为1000(后面59个0,最后有个1)
所以1001(后面60个0) + 1000(后面59个0.最后有个1) = 0001(后面59个0,最后有个1),发生了溢出,比如采用双高位判别法处理溢出,则补码1001(后面59个0,最后有个1)转换为原码为1110(后面60个1),即-(7 *2的60次方+1)=-(2的62次方+2的61次方+2的60次方 + 1)
答案:-(262+261+2^60+1)
问题6:
关于HashMap和Hashtable正确的说法有()
正确答案: A C 你的答案: A B C (错误)
都实现了Map接口
Hashtable类不是同步的,而HashMap类是同步的
Hashtable不允许null键或值
HashMap不允许null或值
解析:
Collection
-----List
-----LinkedList 非同步
----ArrayList 非同步,实现了可变大小的元素数组
----Vector 同步
-----Set 不允许有相同的元素
Map
-----HashTable 同步,实现一个key--value映射的哈希表,key和value都不允许出现null值
-----HashMap 非同步,
-----WeakHashMap 改进的HashMap,实现了“弱引用”,如果一个key不被引用,则被GC回收
注:
List接口中的对象按一定顺序排列,允许重复
Set接口中的对象没有顺序,但是不允许重复
Map接口中的对象是key、value的映射关系,key不允许重复
拓展:
hashmap采用拉链法解决冲突
链地址法 :在数组中冲突元素后面拉一条链路,存储重复的元素;
异常的继承结构:
基类为Throwable,
Error和Exception继承Throwable,
RuntimeException和 IOException等继承Exception,
具体的RuntimeException继承RuntimeException。