Java核心类库介绍

Java核心类库

泛型

概述: 泛型 ‘指的时参数化类型’ 就是将类型由原来的具体的类型参数化,类似育方法中的变量参数,此时类型也定义成参数形式,然后在使用/调用传入具体的类型

使用泛型类

public cliass ClassName<T>{
    private T data;

    public T getData(){
        return data;
    }

    public void setData(T data){
        this.data = data;
    }
}

泛型接口

public interface IntercaceName<T>{  
    T getDate();
}

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

public class Interfacel implements IntercaceName<String>{
    private String text;
    @Override
    public String getData(){
        return text;
    }
}

不指定类型

public class Interfacel implements IntercaceName<T>{
    private T data;
    @Override
    public T getData(){
        return data;
    }
}

泛型方法

private static <T> T 方法名(T a, T b){}

泛型限制类型

在使用泛型时,可以指定泛型的限制区域
例如 某某类的子类 格式:
<T extends 类或接口1 & 接口2>

泛型的通配符

通配符号 ?

    <? extends Parent>  指定了泛型类型的上界  泛型最高只能时Parent
    <? super Child>  指定了泛型类型的下界 泛型只能使用 Child 的父类级以上的类型

Objets类中常用方法

Objtes.equals方法

注意 --> 此方法如果两个对象都是空,那么返回的也是 true!!!

    // 此方法时用来比较两个对象是否是空[ 也就是自定义实例化类和引用数据类型/包装类 ]
    public static void main(String[] args) {
        Integer a = 1;
        Integer b = null;
        System.out.println(Objects.equals(a,b));
    }

Objects.toString方法

  • toString 有两个
    • Objects.toString(Object o)
    • Objects.toString(Object o, String nullDefault)
      此方法的源码如下
// Objects中单参toString
public static String toString(Object o) {
    return String.valueOf(o);
}

// String中 ValueOf方法
public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}

// Objects双参toString
public static String toString(Object o, String nullDefault) {
    return (o != null) ? o.toString() : nullDefault;
}

方法的使用

    public static void main(String[] args) {
        Integer a = null;
        String c = Objects.toString(a,"此对象是个空");
        System.out.println(c); // 输出 此对象是个空
        System.out.println(Objects.toString(a)); //null
    }

Objects.requireNonNull方法

此方法是检查你传入的对象是不是空 如果是空,那么会抛出空异常 源码如下

    public static <T> T requireNonNull(T obj) {
        if (obj == null)
            throw new NullPointerException();
        return obj;
    }

    // message 是要传入的字符串 而这个字符串是在报错的时候显示的 
    // [ 类似于Exception in thread "main" java.lang.NullPointerException: 这是个空啊!!  | 因为我在Massage中传入的是 '这是个空'所以这里出现的是这是个空]
    public static <T> T requireNonNull(T obj, String message) {
        if (obj == null)
            throw new NullPointerException(message);
        return obj;
    }

使用方式

    Integer a = null;
    Integer v = null;
    try{
        v = Objects.requireNonNull(a);
        System.out.println(v);
    }catch (NullPointerException e){
        System.out.println("这是个空");
    }


    Objects.requireNonNull(a,"这是个空啊!!");

Math类中常用方法

Math这个类是一个数学函数类!

public static void main(String[] args) {
    long a = Math.round(20.46d);
    int b = Math.round(20.2f);
    System.out.println("double进行四舍五入后:"+a+"\t float进行四舍五入后:"+b);
    // double进行四舍五入后:20	 float进行四舍五入后:20

    // 返回小于等于 参数的最大整数
    System.out.println(Math.floor(3.5));
    System.out.println(Math.floor(-3.5));
    // 返回大于等于 参数的最小整数
    System.out.println(Math.ceil(3.5));
    System.out.println(Math.ceil(-3.5));
}

Arrays类

Arrays是一个数组的工具类.

int[] a = {8,1,2,3,4,5,6,7};
// 这个类中都是和数组相关的方法
Arrays.toString(a)  // 此方法用于格式化我们定义好的数组编程字符串 他的返回结果是个字符串! 
Arrays.sort(a)     // 此方法将用于对数组进行排序,默认是升序
Arrays.binarySearch(a,5) // 用于查找数组中 5 所在的索引值
Arrays.copyOf(a,15)  // 这个方法是将数组扩容至 15 且返回的是一个新数组

BigDecimal类

BigDecmal类是专门用于 浮点数的精准运算类

// 使用BigDecimal类
// 生成两个BigDecimal对象 
BigDecimal b1 = new BigDecimal(1.3);
BigDecimal b2 = new BigDecimal(1.5);

// add 两数相加方法
BigDecimal b3 = b1.add(b2);
System.out.println(b3.doubleValue()); // [.doubleValue()是将值从BigDecimal对象中取出转换]
// subtract 两数相减操作
BigDecimal b4 = b2.subtract(b1);
System.out.println(b4.doubleValue());
// multiply 乘法计算
BigDecimal b5 = b1.multiply(b2);
System.out.println(b5.doubleValue());
// divide 除法计算
BigDecimal b6 = b1.divide(b2);
System.out.println(b6.doubleValue());
// [ 注意除法可能会报错,而报错就需要去指定四舍五入模式 ]

DataFormat类

此类用来格式化日期

// 创建一个DataDormmat
/*
 * y : 年
 * M : 月
 * d : 日
 * H : 时
 * m : 分
 * s : 秒
 */
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm ss");
// 将date对象转换为 字符串
String text = format.format(new Date());
System.out.println(text);
// parse 将yyyy-MM-dd HH:mm ss这种形式的字符串转换为 date对象
try {
    format.parse("2021-12-12 12:30 12");
} catch (ParseException e) {
    e.printStackTrace();
}

Calendar

Calendar 日历类

// 日历月份是从0开始的
// Calender
Calendar c1 = Calendar.getInstance();
int year = c1.get(Calendar.YEAR);
System.out.println(year);
int day = c1.get(Calendar.DAY_OF_YEAR);
System.out.println(day);
// 设置日历的年
c1.set(Calendar.YEAR,2021);
// 将年份进行加减操作
c1.add(Calendar.MONTH,11);
System.out.println(c1.get(Calendar.MONTH));
c1.add(Calendar.MONTH,-11);
System.out.println(c1.get(Calendar.MONTH));
// 获取日历的时间 表示的对象
Date d = c1.getTime();

// getActualMaximum  获取某字段的最大值
int a  = c1.getActualMaximum(Calendar.MONTH);
System.out.println(a);
// 设置当月的几号
c.set(Calendar.DAY_OF_MONTH,2);

String类

字符串是不变的,它们的值在创建后无法更改.

在字符串创建好的时候,他是以char数组进行存在的,而数组创建好后,就无法进行修改
且,因为String对象是不变的,所以可以共享它们,而它所在的是字符串常量池

字符串常量池

方法区(Metod Area), 又称永久代(Permanent Generalation),又称非堆区(Non-Heap space) 方法区,又称永久代(Permanent Generation) 常称为PermGen,位于非堆空间,又称非堆区(Non-Heapspace)

堆 在逻辑上分为三部分(Perm)

  1. 新生代(Young Generation, 常称YoungGen)
  2. 老年代(Old Generation, 常称为OldGen TenuringGen)
  3. 永久代(Permanent Generation. 常称PermGen)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值