常见的接口与类

Object 类

Object 类是所有类、数组、枚举类的父类。也就是说,Java 允许把所有类型的对象赋给 Object 类型变量。当定义一个类时没有使用 extends 关键字为它显式指定父类,则该类默认继承 Object。因为所有 Java 类都是 Object 类的子类,所以任何 Java 对象都可以调用 Object 类方法,Object 提供了以下几个常用方法:

  • boolean equals(Object obj):判断指定对象与该对象是否相等。
  • protected void finalize():当系统中没有引用变量引用到该对象时,垃圾回收器调用此方法来清理该对象的资源。
  • Class<?> getClass():该方法返回该对象的运行时类
  • int hashCode():返回该对象的 hashCode 值。默认情况下,Object 类 hashCode() 方法根据该对象的地址计算。但很多类重写 Object 类的 hashCode() 方法,不再根据地址来计算其 hashCode 的值
  • String toString():返回该对象的字符串表示。Object 的 toString 方法返回 “运行时类名@十六进制的 hashCode 值”格式的字符串。很多方法都重写了 Object 的 toString() 方法,用于返回可以表述该对象信息的字符串

接口 Comparable

  • 什么是 Comparable 接口?
    此接口强行对实现它的每个类的对象进行整体排序。此排序称为该类的自然排序,类的 compareTo 方法称为它的自然比较方法。实现此接口的对象列表可以通过 Collections.sort(或 Arrays.sort)进行自动排序。

Java 使用 Comparator 接口实现自定义排序

Comparator接口可以实现自定义排序,实现Comparator接口时,要重写compare方法:

  1. int compare(Object o1, Object o2) 返回一个基本类型的整型
  2. 如果要按照升序排序,则o1 小于o2,返回-1(负数),相等返回0,01大于02返回1(正数)
  3. 如果要按照降序排序,则o1 小于o2,返回1(正数),相等返回0,01大于02返回-1(负数)
    可以这样理解:
    按照升序排序来理解,返回正数表示要交换o1和o2的位置,返回负数不交换。

Collection 接口

Object toArray() 和 T[] toArray(T[] a) 方法。

  1. list.toArray();
  2. list.toArray(T[] a);
    第一个方法是将 list 直接转化为 Object 数组,第二种方法是将 list 转化为你所需要类型的数组。
    不明真相的同学会这样写:
Collection<String> list = new ArrayList<String>();
for(int i = 0; i < 10; i++)
    list.add(" " + i);
String[] str = (String[]) list.toArray();

运行时,发现报错:Exception in thread “main” java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
原因是不能将Object[] 转化为 String[],转化的话,只能取出每一个元素再转化。Java 的强制类型转化只是针对单个对象的,想要偷懒将整个数组转化为另一个类型的数组是不行的。

实际上,List 转化为 array 利用第二种冲重构方法是比较方便的。用法如下:

String[] str = new String[list.size()];
list.toArray(str);

Math 类

Java 提供了 Math 类来实现复杂的运算。

  • Math.random():产生大于等于 0 小于 1 的一个随机数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值