- java API相关
- super.getClass()方法调用
Math.round(11.5)等于多少?Math.round(-11.5)等于多少?- 下面代码的输出结果
- 1.0 / 0 会输出什么?会异常?编译错误?
- 1 / 0 会输出什么?会异常?编译错误?
- 2 / 3 会输出什么?会异常?编译错误?
- 2 / 3f 会输出什么?会异常?编译错误?
- 数组有没有length()这个方法? String有没有length()这个方法
- Collection和Collections的区别
- List,Set,Map是否继承自Collection接口
- List、Map、Set 三个接口,存取元素时,各有什么特点?
- Vector和ArrayList、LinkedList区别
- Hashtable和HashMap之间的区别
- String,StringBuffer,StringBuilder之间区别
java API相关
super.getClass()方法调用
import java.util.Date;public class GetClassTest {public static void main (String[] args) {new GetClassTest().test();}public void test() {System.out.println(super.getClass().getName());}}
输出结果:
GetClassTest
由于getClass()在Object类中定义成了final,子类不能覆盖该方法,所以在test方法中调用getClass().getName()方法,其实就是在调用从父类继承的getClass()方法等效于调用super.getClass().getName()方法,所以,super.getClass().getName()方法返回的也应该是GetClassTest;
如果想得到父类的名称,应该用如下代码:
getClass().getSuperClass().getName();
Math.round(11.5)等于多少?Math.round(-11.5)等于多少?
Math.round()表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。
下面代码的输出结果
public class Test {
public static void main (String[] args) {
System.out.println(Math.min(Double.MIN_VALUE, 0.0d));
}
}
输出:
0.0
Double.MIN_VALUE = 4.9E-324D是所有double中数值最小的。Double.MIN_VALUE > 0;
1.0 / 0 会输出什么?会异常?编译错误?
不会抛出ArithmeticException而是返回Double.INFINITY
1 / 0 会输出什么?会异常?编译错误?
会抛出”ArithmeticException / by zero”
2 / 3 会输出什么?会异常?编译错误?
输出0,整数相除,返回的数也是整数。相除结果是小数,则只返回整数部分
2 / 3f 会输出什么?会异常?编译错误?
输出0.6666667, 2会先转换成float再进行运行。
数组有没有length()这个方法? String有没有length()这个方法
数组没有length()这个方法,有length的属性。String有有length()这个方法
Collection和Collections的区别
- Collection是集合类的上级接口,继承与他的接口主要有Set和List。
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
List,Set,Map是否继承自Collection接口
List、Map、Set 三个接口,存取元素时,各有什么特点?
相同点:
List和Set都是单列元素的集合,有共同的父接口Collection。
不同点:
- Set 里面不允许有重复的元素,所谓重复,即不能有两个相等(注意, 不是仅仅是相同)的对象。
- Set 取元素时,没法说取第几个,只能以 Iterator 接口取得所 有的元素,再逐一遍历各个元素。
List 表示有先后顺序的集合,可以有重复元素,可以调用 get(index i)来明确取第几个。
Vector和ArrayList、LinkedList区别
相同点:
继承了List接口(List接口继承了Collection接口)
- 是有序集合
- 可以按位子索引号取出某个元素
- 其中的数据是允许重复的
不同点:
- LinkedList内部以链表形式存储数据;ArrayList内部以数组形式存储数据;Vector同ArrayList,不过它与ArrayList比较起来是线程安全(thread-safe)的。
Vector增长原来的一倍,ArrayList增加原来的0.5倍;Vector(setSize())可以设置空间的大小,而ArrayList不行。
Hashtable和HashMap之间的区别
相同点:
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口
不同点:
- HashMap允许空(null)键值(key);HashTable不允许,Value的值也不能为null
- HashMap在单线程下,效率高
- HashMap没有contains方法,有containsKey(),containsValue(),方法;HashTable三个都有
HashTable实现了Dictionary类,也继承Map接口;HashMap只继承了Map接口。
String,StringBuffer,StringBuilder之间区别
相同点:
用来存储和操作字符串
不同点:
- String提供的是数值不可改变的字符串,其它两个是可改变的,StringBuffer是线程安全的,而StringBuilder不是线程安全的。
- String实现了equals方法,其它两个没有。new String(“abc”).equals(newString(“abc”)的结果为true,而StringBuffer没有实现equals方法,所以,new StringBuffer(“abc”).equals(newStringBuffer(“abc”)的结果为false。
