1、Java 中,Comparator 与 Comparable 有什么不同?
1、comparable接口实际上是出自java.lang包,它有一个 compareTo(Object obj)方法用来排序 1-1、源码示例 public interface Comparable<T> { }2、comparator接口实际上是出自 java.util 包,它有一个compare(Object obj1, Object obj2)方法用来排序 2-1、源码示例 @FunctionalInterface public interface Comparator<T> { }3、需要对一个集合使用自定义排序时,我们就要 3-1、重写compareTo方法或compare方法 3-2、使用两个参数版的Collections.sort().
2、Java 中,Serializable 与 Externalizable 的区别?
1、Serializable 接口是一个序列化 Java 类的接口,以便于它们可以在网络上传输或者可以将它们的状态保存在磁盘上,是 JVM 内嵌的默认序列化方式,成本高、脆弱而且不安全。2、Externalizable 允许你控制整个序列化过程,指定特定的二进制格式,增加安全机制。 2.1、Externalizable 是jdk1.1的遗留物,使用自定义编写的机制来执行编组和解组功能,需要在类上实现 readExternal 和 writeExternal 方法。
3、this() & super()在构造方法中的区别
1、调用super()必须写在子类构造方法的第一行, 否则编译不通过。2、super从子类调用父类构造, this在同一类中调用其他构造均需要放在第一行。3、尽管可以用this调用一个构造器, 却不能调用2个。4、this和super不能出现在同一个构造器中, 否则编译不通过。5、this()、super()都指的对象,不可以在static环境中使用。6、本质this指向本对象的指针。super是一个关键字
4、Java移位运算符(三种)
1、<< :左移运算符,x << 1,相当于x乘以2(不溢出的情况下),低位补0 2、>> :带符号右移,x >> 1,相当于x除以2,正数高位补0,负数高位补1 3、>>> :无符号右移,忽略符号位,空位都以0补齐
5、从 Java 7 开始,可以在 switch 条件判断语句中使用 String 对象
###从 Java 7 开始,可以在 switch 条件判断语句中使用 String 对象。public class SwitchDemo{ public static void main(String[] args){ String s = "a"; switch (s) { case "a": System.out.println("aaa"); break; case "b": System.out.println("bbb"); break; } }}###switch 不支持 long,是因为 switch 的设计初衷是对那些只有少数的几个值进行等值判断,如果值过于复杂,那么还是用 if 比较合适。