常用类库

一. 泛型

  1. 泛型在类中的使用 

   public class Person<T>{
    private T data;

   }

   Person<String> p = new Person<>

  2. 泛型在接口中的使用

   实现接口时,可以选择指定泛型类型,也可以选择不指定

    指定类型:

     public class Interface implements IntercaceName<String> {

      private String text;

     }

    不指定类型:

     public class Interface1<T> implements IntercaceName<T> {

      private T text;

     }

  3. 泛型在方法中的使用

   private static <T> 返回值类型 方法名(T a) {}

  4. 泛型限定和通配符

   4.1 泛型限定

     在使用泛型时, 可以指定泛型的限定区域,例如: 必须是某某类的子类或 某某接口的实现类,格式:

      <T extends 类或接口1 & 接口2>

     例子:

      interface Fruit{}

      class Apple inplements Fruit{}

      class Plate<T extends Fruit>{

       T data;

      }

      表明在使用时的类型必须是Fruit的子类

      Plate<Apple> p = new Plate<>();

   4.2 泛型中的通配符

    (1)<? extends Parent> 指定了泛型类型的上届   

      interface Fruit{}

      class Apple inplements Fruit{}

      class Plate<T>{

       T data;

      }

      Plate<? extends Fruit> p = new Plate<Apple>();

    (2)<? super Child> 指定了泛型类型的下届

      interface Fruit{}

      class Apple inplements Fruit{}

      class Plate<T>{

       T data;

      }

      Plate<? super Apple> p = new Plate<Fruit>();

    (3)<?> 指定了没有限制的泛型类型

   4.3 作用

    (1)提高代码复用率

    (2)泛型中的类型在使用时指定,不需要强制类型转换(类型安全,编译器会检查类型)

   4.4 注意

    (1)在编译之后程序会采取去泛型化的措施。

    (2)也就是说Java中的泛型,只在编译阶段有效。

    (3)在编译过程中,正确检验泛型结果后,会将泛型的相关信息擦出,并且在对象进入和离开方法的边界处添加类型检查和类型转换的方法。也就是说,泛型信息不会进入到运行时阶段。

二. 常用类

  1. java.util.Objects

   1.1 equals

    String s1 = null;

    String s2 = "123";

    System.out.println(s1.equals(s2));

    此时会引起空指针异常

    System.out.println(Objects.equals(s1,s2));

    此时就不会引起空指针异常

   1.2 isNull和nonNull

    用于判断为空和非空。

   1.3 requireNonNull

    用于检查是否为空,空返回异常,非空返回值,当外部传来一个参数我们要求不为空时使用。

  2. java.util.Math

   (1)绝对值

     Math.abs(-100);

   (2)最大值和最小值

     Math.min(100,200);

     Math.max(100,200);

   (3) 四舍五入

     Math.round(100.5);,结果为101

     Math.round(-100.5);,结果为-100

     四舍五入:舍去的话结果值会比原值小,入的话会比原值大

   (4)小于等于参数的最大整数 和 大于等于参数的最小整数

     Math.floor(3.5); 结果为3

     Math.floor(-3.5); 结果为-4

     Math.ceil(3.5); 结果为4

     Math.ceil(-3.5); 结果为-3

  3. java.util.Arrays

   int[] arr = {8,7,9,1,2,3,4,5};

   (1)打印数组

     Arrays.toString(arr);

   (2)排序

     Arrays.sort(arr);

     Arrays.paralleSort(arr);,升序排序

   (3)二分查找

     Arrays.binarySearch(arr,6);

     指定下标的值

     Arrays.binarySearch(arr,2,7,2);

     指定范围的下标的值

   (4)动态扩容

     Arrays.copyOf(arr,15);

   (5)赋值

     Arrays.fill(arr,0);,Arrays.fill(arr,int from, int to, 0)

     将指定数组的值全部填为0,和将范围里的数组的值填为0

   (6)查找并返回两个数组之间第一个不匹配的索引,未找到返回-1

     Arrays.mismatch(arr1,arr2)

  4. java.util.BigDecimal

   实现精确运算

   BigDecimal b1 = new BigDecimal("0.1");

   BigDecimal b2 = new BigDecimal("0.2");

   (1)加法运算

     BigDecimal b3 = b1.add(b2);

   (2)减法运算

 

     BigDecimal b3 = b1.subtract(b2);

   (3)乘法运算

     BigDecimal b3 = b1.multiple(b2);

   (4)除法运算

     BigDecimal b3 = b1.divide(b2);

   (5)值的类型

     例子:b3.doubleValue();

   (6)小数点左右移动

     b3.movePointLeft(int n);

     b3.movePointRight(int n);

  5. java.util.Date

   Date date = new Date();

   (1) toString

     date.toString();

     获取当前的日期和时间

   (2)getTime

     date.getTime();

     获取当前的毫秒数,可用于计算时间差。

  6. java.util.DateFormat

    子类:SimpleDateFormat

      y : 年 ,M : 月 ,d : 日  ,H : 时 ,m : 分 ,s : 秒

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm ss");

    String text = format.format(new Date());

    System.out.println(text);

    // 将时间转换成毫秒数,格式与创建时的的模板一致

    Date date = format.parse("1998-12-12 12:12 12");

    // 计算生活的天数

    System.out.println((new Date().getTime-date)/(1000*60*60*24));

  7. java.util.Calendar

   Calendar cl = Calendar.getInstance();

   (1)cl.set(Calendar.YEAR,2021); 将年份设置为2021

   (2)int year = cl.get(Calendar.YEAR); 获取年份

       int day = cl.get(Calendar.DAY_OF_YEAR); 今天是今年的第几天

   (3)月份是0-11,每个星期是从星期天开始,cl.add((字段),(数值))

       cl.add(YEAR,1);  当前年份加1

   (4)int m = cl.getActualMaximum(字段); 获取某字段的最大值

       例如:int m = cl.getActualMaximum(Calendar.DAY_OF_MONTH);当前月份的天数

   (5)获取日历时间,表示Date对象

       Date d = cl.getTime();

 

posted @   Luo_YB  阅读(43)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示