1. "a += b" 和 a = a + b的区别:
"+=" 隐含的将加操作的结果类型强制转换为持有结果的类型。如果两这个整型相加,如 byte、short 或者 int,首先会将它们提升到 int 类型,然后在执行加法操作,但是 a += b 没问题,如下:
byte a = 4;
byte b = 5;
b += a; // ok
b = a + b; //编译报错,
首先byte类型的a,首先会先转化成为int类型的数据,然后short类型的b也一样先转化成为int类型的数据。a+b的结果是int类型的值,将一个int类型的数值存到byte类型的变量空间中会编译报错。
2.2*0.1 == 0.2 将会返回什么?true 还是 false,3*0.1 == 0.3呢将会返回什么?true 还是 false呢.
System.out.println((2 * 0.1 == 0.2) ? true : false);
System.out.println((3 * 0.1 == 0.3) ? true : false);
3.32 位和 64 位的 JVM,int 类型变量的长度是多数?
不论是32 位的JVM和 64 位的 JVM ,int 类型变量的长度是相同的,都是 32 位或者说是4个字节。
4.'' ==号''和equals() 有什么区别呢?
"=="号比较基本类型比较的是值,比较引用类型是比较的地址。equals()是Object类里面的方法通常都会被其子类所重写,具体看子类中重写的equals方法怎么去比较相等。
5.final、finalize 和 finally 的不同之处?
final 是一个修饰符,可以修饰变量、方法和类。如果 final 修饰变量,意味着该变量的值在初始化后不能被改变。finalize 方法是在对象被回收之前调用的方法,给对象自己最后一个复活的机会,但是什么时候调用 finalize 没有保证。finally 是一个关键字,与 try 和 catch 一起用于异常的处理。finally 块一定会被执行,无论在 try 块中是否有发生异常。
6.List、Set、Map 和 Queue 之间的区别
List 是一个有序集合,允许元素重复。它的某些实现可以提供基于下标值的常量访问时间,但是这不是 List 接口保证的。Set 是一个无序集合。
7.ArrayList 与 LinkedList 的不区别?
最明显的区别是 ArrrayList 底层的数据结构是数组,支持随机访问,而 LinkedList 的底层数据结构书链表,不支持随机访问。使用下标访问一个元素,ArrayList 的时间复杂度是 O(1),而 LinkedList 是 O(n)。更多细节的讨论参见答案。
8.44.Java 中的 LinkedList 是单向链表还是双向链表?
是双向链表,你可以检查 JDK 的源码。在 Eclipse,你可以使用快捷键 Ctrl + T,直接在编辑器中打开该类。
9.Java 中的 TreeMap 是采用什么树实现的?
Java 中的 TreeMap 是使用红黑树实现的
10.TreeMap如何实现排序:
TreeMap是按照Key的自然顺序Comprator的顺序进行排序,内部是通过红黑树去实现。所以key所属的类实现Comparable接口,或者自定义一个实现了Comprator接口的比较器,传给TreeMap进行key的比较,从而实现按照key进行排序。
11.Collection和Collections的区别:
Java.util.Collection是集合框架的一个顶级接口,它提供了对集合进行基本操作的通用接口方法。Collection接口的意义是为各种具体的集合提供最大化的统一操作方式,直接继承接口有List和Set,实现类有ArrayList和LinkedList等。Collections则是集合类的一个工具类,其中提供了一系列的静态方法。用于对集合中元素进行排序,搜索以及线程安全等各种操作。
如果有哪些地方写的不对,还望各位大佬多多指点,感谢阅读。