4-2 Java中的实用工具类

   日期:2020-10-03     浏览:89    评论:0    
核心提示:常用类库一、常用类库基于JDK 11学习方法必须熟悉,长期记忆。大量测试一个类,记录并掌握其功能。例如:X工具类,有X方法,方法有什么功能,需要传递X参数,能得到X结果。1、java.util.Objects所有Java类的基类(顶级父类),所有类层次结构的根。JDK7版本添加,包含了很多静态方法。equals:语法格式:Object.equals(a, b);checkFromIndexSize:检查下标是否越界hashCode:计算对象的哈希值isNull:

文章目录

  • 常用类库
    • 一、常用类库
      • 1、java.util.Objects
      • 2、java.lang.Math
      • 3、java.util.Arrays
      • 4、java.math.BigDecimal
      • 5、java.util.Date
      • 6、java.text.DateFormat
      • 7、java.util.Calendar
      • 8、java.lang.System
    • 二、泛型
      • 1、概述
      • 2、使用
    • 三、String(非常重要
  • 总结

常用类库

  • 学习方法
    必须熟悉,长期记忆。大量测试一个类,记录并掌握其功能。
    例如:X工具类,有X方法,方法有什么功能,需要传递X参数,能得到X结果。

一、常用类库

(基于JDK 11)

1、java.util.Objects

所有Java类的基类(顶级父类),所有类层次结构的根。JDK7版本添加,包含了很多静态方法。

  • equals:语法格式:Object.equals(a, b);

  • checkFromIndexSize:检查下标是否越界

  • hashCode:计算对象的哈希值

  • isNull:语法格式:Object.isNull(a);

其他的方法在API中查看,都需要整理

2、java.lang.Math

执行数字运算,API中也有大量方法。

  • Math.abs(-10);:-10的绝对值,结果为10

  • Math.min(100, 200):两数之间较小值,结果为100

  • Math.max(100, 200):两数之间较大值,结果为200

  • 约等

    • Math.round(24.5):四舍五入,结果为25;Math.round(24.5),结果为-24
    • Math.floor(3.5):返回小于等于参数的最大整数,结果为3.0;Math.floor(-3.5),结果为-4.0
    • Math.ceil(3.5):返回大于等于参数的最大整数,结果为4.0;Math.ceil(-3.5),结果为-3.0

3、java.util.Arrays

可以对数组进行操作,运用较多,重点整理API中的方法。

  • binarySearch:查找数组中某元素的下标
  • compare:比较两个数组
  • toString:打印数组,可以取代for循环遍历数组
  • sort:对数组进行排序
  • copyOf:将数组动态扩容
    • arr = Array.copyOf(arr, 15);将arr扩容为长度15的数组

4、java.math.BigDecimal

double d1 = 0.1;
double d2 = 0.2;
  • 结果:并不是0.3。

  • 问题:在Java中如果使用double进行算术运算,运算结果会缺失精度。

java.math.BigDecimal的作用:算术运算专用,解决小数运算问题

使用方式:传递一个String参数

BigDecimal b1 = new BigDecimal("0.1");
BigDecimal b2 = new BigDecimal("0.1");
构造方法 说明
public BigDecimal(String val) {} 常用构造方法
常用方法 作用
add 加法运算
subtract 减法运算
multiply 乘法运算
divide 除法运算
  • API中BigDecimal有更多其他方法,建议仔细查看,并整理

5、java.util.Date

表示特定时刻,精度为毫秒。

PS:一天的毫秒数:24*60*60*1000

查看API,发现大部分方法已经过时,真正有用的是用它表示时刻的方法。

  • getTime()方法,返回一个long类型的值。

    • 获取的是格林威治时间:1970年1月1日东八区早上8点整~现在的毫秒数
    • setTime()也可以用
    • 有可能用到:对时间的比较
      • after(Date when):测试此日期是否在指定日期之后。
      • before(Date when):测试此日期是否在指定日期之前。
  • 构造方法:没过时的两个

    构造方法 概述
    Date() 不传参数,表示当前时间(此时此刻
    Date(long date) 传入一个毫秒数,表示从格林威治日到现在的时间,可以表示过去或未来的时间

new Date使用。

6、java.text.DateFormat

格式化日期。

字母 表示
y
M
d
H
m
s
  • format()方法

    例:2020年12月12日 12:12 12

    SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm ss");
    
    String text = format.format(new Date());
    System.out.println(text);

    运行结果:

  • parse()方法

    将一段字符串转成Date

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm ss");
    //parse:将yyyy-MM-dd HH:mm ss日期字符串,转为date对象
    String text = format.format(new Date());
    System.out.println(text);
    System.out.println(format.parse("2021-12-12 12:12 12"));

    运行结果:

  • 此处注意:太容易混淆了,format是返回的StringBuffer类型数据进行格式化日期。parse是传入字符串,返回的是一个Date对象。

7、java.util.Calendar

抽象类,存在getInstance方法,不通过new,直接获取即可。

其中提供了大量常量值,常用的有get和set。

  • Calendar.YEAR:获取年份
  • Calendar.DAY_OF_YEAR:获取一年中的第几天
Calendar c = Calendar.getInstance();
//取出日历中的数据
int year = c.get(Calendar.YEAR);
int day = c.get(Calendar.DAY_OF_YEAR);

System.out.println(year);
System.out.println(day);

运行结果:

//将年设置为2021年
c.set(Calendar.YEAR,2021);
int year = c.get(Calendar.YEAR);
int day = c.get(Calendar.DAY_OF_YEAR);

System.out.println(year);
System.out.println(day);

运行结果:

  • c.get(Calendar.WEEK_OF_YEAR); :获取现在是一年中的第几周

  • c.add(Calendar.YEAR,1);:给当前年份加1

    • 需要注意的一点:
      • 在日历中月份是从0-11的,0表示1月份,11表示12月份
      • 星期国外将星期七当作一周的第一天,星期六是一周的最后一天。
  • getActualMaxmun:获取某个字段的最大值

8、java.lang.System

  • System.out

  • System.in

  • System.gc

二、泛型

1、概述

泛型,即“参数化类型”。就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定 义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。

使用泛型可以:

  1. 提高代码复用率
  2. 泛型中的类型在使用时指定,不需要强制类型转换(类型安全,编译器会检查类型)

2、使用

  1. 泛型类
public class ClassName<T> { 
    private T data;
    public T getData() { 
        return data;
    }
    public void setData(T data) { 
        this.data = data;
    }
}
  1. 泛型接口
public interface IntercaceName<T> { 
    T getData();
}

​ 实现接口时是否实现泛型:

  • 指定类型
public class Interface1 implements IntercaceName<String> { 
    private String text;
    @Override
    public String getData() { 
        return text;
    }
} 
  • 不指定类型
public class Interface1<T> implements IntercaceName<T> { 
    private T data;
    @Override
    public T getData() { 
        return data;
    }
}
  1. 泛型方法
private static <T> T 方法名(T a, T b) { }

注意:

  • 在编译之后程序会采取去泛型化的措施。也就是说Java中的泛型只在编译阶段有效,泛型信息不会进入到运行时阶段。
  1. 泛型限定和通配符

在使用泛型时,可以指定泛型的限定区域

  • 例如:必须是某某类的子类或 某某接口的实现类,

    格式:<T extends 类或接口1 & 接口2>

类型**通配符是使用?**代替方法具体的类型实参。

  • 泛型上届限定使用:<? extends Parent> 指定了泛型类型的上届
  • 泛型下届限定使用:<? super Child> 指定了泛型类型的下届
  • 可以简单理解为Object,但是使用时有很大区别:<?> 指定了没有限制的泛型类型

三、String(非常重要

Java程序中所有字符串文字都是String类的实例。

API 中查看!

后续补充。

总结

学习这些类库为我们提供了非常方便的工具,提高了编码效率,就是记忆起来比较花费时间,多多使用,多多熟悉。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服