1、Java 中,Comparator 与 Comparable 有什么不同?

  1. 1comparable接口实际上是出自java.lang包,它有一个 compareTo(Object obj)方法用来排序
  2. 1-1、源码示例
  3. public interface Comparable<T> {
  4. }
  5. 2comparator接口实际上是出自 java.util 包,它有一个compare(Object obj1, Object obj2)方法用来排序
  6. 2-1、源码示例
  7. @FunctionalInterface
  8. public interface Comparator<T> {
  9. }
  10. 3、需要对一个集合使用自定义排序时,我们就要
  11. 3-1、重写compareTo方法或compare方法
  12. 3-2、使用两个参数版的Collections.sort().

2、Java 中,Serializable 与 Externalizable 的区别?

  1. 1Serializable 接口是一个序列化 Java 类的接口,以便于它们可以在网络上传输或者可以将它们的状态保存在磁盘上,是 JVM 内嵌的默认序列化方式,成本高、脆弱而且不安全。2Externalizable 允许你控制整个序列化过程,指定特定的二进制格式,增加安全机制。
  2. 2.1Externalizable jdk1.1的遗留物,使用自定义编写的机制来执行编组和解组功能,需要在类上实现 readExternal writeExternal 方法。

3、this() & super()在构造方法中的区别

  1. 1、调用super()必须写在子类构造方法的第一行, 否则编译不通过。
  2. 2super从子类调用父类构造, this在同一类中调用其他构造均需要放在第一行。
  3. 3、尽管可以用this调用一个构造器, 却不能调用2个。
  4. 4thissuper不能出现在同一个构造器中, 否则编译不通过。
  5. 5this()、super()都指的对象,不可以在static环境中使用。
  6. 6、本质this指向本对象的指针。super是一个关键字

4、Java移位运算符(三种)

  1. 1、<< :左移运算符,x << 1,相当于x乘以2(不溢出的情况下),低位补0
  2. 2、>> :带符号右移,x >> 1,相当于x除以2,正数高位补0,负数高位补1
  3. 3、>>> :无符号右移,忽略符号位,空位都以0补齐

5、从 Java 7 开始,可以在 switch 条件判断语句中使用 String 对象

  1. ###从 Java 7 开始,可以在 switch 条件判断语句中使用 String 对象。
  2. public class SwitchDemo{
  3. public static void main(String[] args){
  4. String s = "a";
  5. switch (s) {
  6. case "a":
  7. System.out.println("aaa");
  8. break;
  9. case "b":
  10. System.out.println("bbb");
  11. break;
  12. }
  13. }
  14. }
  15. ###switch 不支持 long,是因为 switch 的设计初衷是对那些只有少数的几个值进行等值判断,如果值过于复杂,那么还是用 if 比较合适。