JAVASE常用工具类及其方法

在这里插入图片描述

Math类

数学操作的工具类。
工具类的特点:
  1、没有构造方法(私有了无参构造方法并不提供任何其他的构造方法)
  //do not let anyone instance this class
  2、所有的成员都被static修饰,可以直接使用类名调用
  
成员方法:
  static double	PI:圆周率
  static int abs(int a):绝对的,求一个数的绝对值
  
  static double	ceil(double a):向上取整
  static double	floor(double a):向下取整
  static long	round(double a):四舍五入
  
  static int	max(int a, int b):求最大值
  static int	min(int a, int b):求最小值
  
  static double	pow(double a, double b): 求a的b次幂
  static double	random():求随机数 [0,1) 小数

System类

跟系统操作相关的工具类。
  
成员方法:
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):数组拷贝
  		Object src: 源数组  int srcPos:要拷贝的元素的起始索引位置
        Object dest:目的数组 int destPos:目的地数组接收元素的起始索引位置 int length:拷贝多少个元素
static long currentTimeMillis():当前时间毫秒
    1604540404445: 现在时间 - 时间原点的毫秒值 1970年1月1日 8:0:0 --》 0毫秒
static void exit(int status):JVM退出 比return更猛
    int status 状态码 :  非0即为异常退出

Object类

Object 类是所有Java代码的超类、根类、基类
  所有的类都直接或者间接的继承于Object。
String	toString()
  直接输出对象名其实就是输出对象.toString()

    源码分析:
    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
        //返回 对象全类名@16进制的地址值
    }

    类的全类名                @    16进制的地址值
    java.util.Random        @    7f690630
    getClass().getName() + "@" + Integer.toHexString(hashCode());
    getClass():获取一个类的字节码对象
    getName():获取名字
    getClass().getName():获取此类对象字节码对象的名称 --> 获取此类对象的全类名 -> 包名.类名

    Integer.toHexString(hashCode());
    hashCode():对象在堆内存中的10进制地址值
    Integer.toHexString(对象在堆内存中的10进制地址值):把10进制的数转化成16进制
    Integer.toHexString(hashCode()):把对象10进制的地址值转化成16进制表示


        直接输出对象一定看到的是对象的地址值,只要不是地址值一定是有问题
boolean	equals(Object obj)  
    ==:用来比较基本数据类型比较的是值是否相等
    ==:用来比较2个对象一定比较的是地址值

    如果现在我想比较两个对象的时候不比较地址值而是比较对象的属性值,若属性值都相同则认为是同一个对象

    Object equals方法
        boolean	equals(Object obj)
        public boolean equals(Object obj) {
            return (this == obj);
        }
        this == obj : 调用方法的对象 == 传递进来的对象

        重写父类的equals可以改变equals方法的执行代码。

Objects类

关于对象操作的工具类
  static String	toString(Object o):调用对象的toString方法,但是提前对o对象进行非空校验
  static String	toString(Object o, String nullDefault):调用对象的toString方法,但是提前对o对象进行非空校验,如果o是null则把第二个参数返回给调用者
  static boolean	isNull(Object obj):判读obj对象是否是null,是null就true
  static boolean	nonNull(Object obj):判断obj对象是否不是null,不是null就是true
  if(obj == null)

BigDecimal

Java中数学精准运算的类。
  构造方法:
  	BigDecimal(double d)
  	BigDecimal(String str)
  			(String str):字符串的小数
  四则运算:
  	BigDecimal add(BigDecimal augend):求和
  	BigDecimal subtract(BigDecimal augend):求差
  	BigDecimal multiply(BigDecimal augend):求乘
  	BigDecimal divide(BigDecimal augend):求商
  BigDecimal	divide(BigDecimal divisor, int scale, int roundingMode)
  	第一个参数:除数
  	第二个参数:保留小数点位数
  	第三个参数:舍入模式
  			进一法:BigDecimal.ROUND_UP
  			去尾法:BigDecimal.ROUND_FLOOR
  			四舍五入:BigDecimal.ROUND_HALF_UP

包装类

基本数据类型四类八种的数据是不可以直接存入到集合中的,如果集合的泛型血基本数据类型就会报错。
  	ArrayList<int> ❌
  我们必须使用基本数据类型对应的包装类型。
  
包装类就是基本数据类型对应的引用数据类型。
  	byte --> Byte
  	short --> Short
  	int --> Integer
  	long --> Long
  	float --> Float
  	double --> Double
  	char --> Character
  	boolean --> Boolean
  
  我们在定义集合的时候,要存储基本数据类型,集合的泛型必须写基本数据类型对应的包装类。
  
自动装箱和自动拆箱 --> 特性:简便了基本数据类型到引用数据类型之间的转换 
  			//自动装箱: 基本数据类型 --> 引用数据类型
        //Integer i = 100;
        //static Integer valueOf(int i)
        Integer i = Integer.valueOf(100);

        //自动拆箱:引用数据类型 --> 基本数据类型
        //int num = i;
        //int intValue()
        int num = i.intValue();


所有的包装类(除了Character)中都有一个 把字符串类型的基本数据类型值转换成对应的基本数据类型的方法
  		"100" "13.14" "true" --> 还原成基本数据类型的值 
  static 对应的基本数据类型 parseXxx(字符串类型的基本数据类型值)
  
  Integer :  static int parseInt("100");
  Boolean :  static boolean parseBoolean("true");

Arrays

关于数组操作的工具类
  static int binarySearch(int[] a, int key):二分查找--> 必须要求有序
  	底层就是通过二分查找法完成的数据查找,寻找key参数第一次出现在数组的索引位置
  static void sort(int[] a):按照自然排序的规则对数组元素进行排序, 从小到大
  static String	toString(int[] a):漂亮的把数组拼接起来
    底层是通过 快速排序的算法完成的数组排序

二分查找的底层原理

前提:有序
原理:对数组进行砍半,判断中间值和目标值的大小关系,舍弃一半序列  

递归

在方法内部调用方法本身
  	从前有座山,山里有座庙,庙里有个老和尚,老和尚给小和尚讲故事
  		从前有座山,山里有座庙,庙里有个老和尚,老和尚给小和尚讲故事
  			从前有座山,山里有座庙,庙里有个老和尚,老和尚给小和尚讲故事
  				从前有座山,山里有座庙,庙里有个老和尚,老和尚给小和尚讲故事
 
使用递归必须关注点:
  	1、必须定义方法
  	2、递归必须有出口
  	3、递归一定要找到规律
  	4、在方法内部调用方法本身
  	5、再次调用方法的时候,实际参数要改变,改变的方向是往出口方向
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值