常用工具类

1 常用工具类

1.1 Java API简介

(Java Application Programming Interface) Java应用程序接口的缩写,Java中的API,具有JDK提供的各种工具类。java.lang包是基础包,所以使用java.lang包下的所有类,都不需要进行导包操作。使用其它包下的类,都要进行导包。

常用的工具包:

  • java.lang:Java语言包
    • 例如:System、String、Math类等
  • java.util:Java工具包
    • 例如:Scanner、集合、日期类型等
  • java.spl:操作数据的工具包
    • 操作数据库的核心接口和类都在当前包下
  • java.io:输入输出流
    • 对文件操作的一些接口和对象都在io包下
  • java.net:针对网络编程的核心类和接口在net包下

1.2 Object类

Object类在java.lang包下,它是所有类的根类。

Object类中提供了多个public修饰的方法,只介绍equals()、hashcode()、toString()

1.2.1 equals方法

public boolean equals(Objec obj){}比较两个对象的引用是否相等

public class Person {

    private int id;
    private String name;

    public Person() {
    }

    public Person(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean showObj(Object obj){
        if(this.equals(obj)){
            return true;
        }else{
            return false;
        }
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime*result+id;
        result = prime*((name == null) ? 0 : name.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Person other = (Person) obj;
        if (id != other.id)
            return false;
        if (name == null){
            if(other.name != null)
                return false;
        }else if (!name.equals(other.name))
            return false;
        return true;
    }
}
public class TestPerson {

    public static void main(String[] args) {
        Person p1 = new Person();
        Person p2 = new Person();
        System.out.println(p1.showObj(p2));//true

        Person p3 = new Person(1001,"三岁");
        Person p4 = new Person(1001,"三岁");
        System.out.println(p3==p4);//false
        System.out.println(p3.equals(p4));//true
    }
}

1.2.2 "=="和equals的区别

==是比较运算符,既能比较基本数据类型,也可以比较引用数据类型,如果是比较基本数据类型,比较的是字面量的值。如果比较的引用类型,比较的是地址,equals只能比较引用类型,比较的是两个对象的引用,但是一般equals方法都会被子类进行重写,重写的目的就是判断对象的属性值如果相同,就认为两个对象是同一个。

public static void main(String[] args) {
        String s1 = "hello";
        String s2 = new String("hello");
        System.out.println(s1==s2);//false
        System.out.println(s1.equals(s2));//true
    }

1.2.3 toString方法

public String toString(){} 以字符串的格式打印对象的属性值

1.2.4 hashcode方法

public int hachCode(){} 返回的是对象哈希码

hashCode()方法就是对象的身份证号。

1.3 Math类中常用方法

常用方法说明
Math.abs()绝对值
Math.cbrt()立方根
Math.sqrt()平方根
Math.floor()地板值
Math.ceil()天花板值
Math.max()比较最大值
Math.pow()返回次幂
Math.round()四舍五入
Math.random()随机数
public class DemoMath {
    //Math类型中常用的方法
    public static void main(String[] args) {
        double pi = Math.PI;
        //绝对值
        System.out.println(Math.abs(3.15));//3.15
        System.out.println(Math.abs(3.16F));//3.16
        System.out.println(Math.abs(3));//3
        System.out.println(Math.abs(3L));//3
        System.out.println(Math.abs(-3.15));//3.15
        System.out.println(Math.abs(-3));//3
        //立方根
        System.out.println(Math.cbrt(9));//2.080083823051904
        //平法根
        System.out.println(Math.sqrt(8));//2.8284271247461903
        //地板值
        System.out.println(Math.floor(8.9));//8.0
        //天花板值
        System.out.println(Math.ceil(8.1));//9.0
        //比较最大值
        System.out.println(Math.max(5,7));//7
        //返回次幂
        System.out.println(Math.pow(2,3));//8.0
        //四舍五入
        System.out.println(Math.round(3.98));//4
        //随机数 0~1
        System.out.println(Math.random());//0.03133454786691492
        System.out.println((int)(Math.random()*11+90));//93
    }
}

1.4 包装类

为了符合java面向对象的特性,还有类型转换,把八大基本数据封装了类,这个就叫做包装类。

基本数据类型包装类型
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

基本类型转成包装类型(装箱):直接赋值、通过有参构造器

包装类型转成基本类型(拆箱):直接赋值、通过xxxValue()

包装类型转成字符串类型:toString()、+ “”

字符串类型转成基本类型: 包装类型.parseXXX(String s)

字符串类型转成包装类型:包装类型.valueOf(String s)

1.4.1 基本类型和包装类型的转换

		Integer i = null;
        Integer i1 = 55;//装箱  基本类型转成包装类型
        System.out.println(i1+9);
        Integer i2 = new Integer(44);
        System.out.println(i2+2);//拆箱  包装类型转成基本类型
  • 字符串转成int类型

通过包装类的构造器:

Integer i1 = new Integer(String s);

注意:参数s,只能传整数格式的字符串,否则就会报数组格式异常。

  • 字符串类型转成包装类型
        //字符串转成包装类型
        Integer i3 = new Integer("19");
        System.out.println(i3);
        Double d1 = new Double("2.3");
        System.out.println(d1);
  • 字符串类型转成基本类型
        //字符串类型转成基本类型
		int i4 = Integer.parseInt("253");
        System.out.println(i4);
  • 包装类型转成字符串类型
		//包装类型转成字符串类型
		Integer i5 = 828;
        String s = i5.toString();
        System.out.println(s);

1.5 String类中常用方法

查询方法: indexOf(String s)、lastIndexOf(String s)、

charAt(int i)、 contains(String s)

替换字符串: replace(String oldStr,String newStr)

切割字符串:String[] arr = split(String s)

截取字符串:subString(int index)、 subString(int index,int endIndex)

import java.util.Arrays;
import java.util.Locale;

public class DemoString {

    public static void main(String[] args) {
        String s1 = "hello";
        String s2 = new String("hello");
        //String类构造器
        char[] arr = {'h','e','l','l','o'};
        String s3 = new String(arr);
        System.out.println(s3);//hello

        //字符串转char类型数组
        String s4 = "highcom";
        char[] arr1 = s4.toCharArray();
        System.out.println(Arrays.toString(arr1));//[h, i, g, h, c, o, m]

        //查询功能
        //通过索引查找字符
        char c = s4.charAt(2);
        System.out.println(c);//g

        //从主字符串开始查找子字符串第一次出现的位置
        int n1 = s4.indexOf("ghc");
        System.out.println(n1);//2

        //从主字符串开始查找子字符串最后一次出现的位置
        int n2 = s4.lastIndexOf("h");
        System.out.println(n2);//3
        int n3 = s4.indexOf("h");
        System.out.println(n3);//0

        //字符串拼接
        String s5 = s4.concat(".com");
        System.out.println(s5);//highcom.com

        //主字符串是否包含某个子字符串
        boolean f1 = s5.contains("hiygh");
        System.out.println(f1);//false

        //判断是否以某个前缀为开头
        System.out.println(s5.startsWith("high"));//true

        String s6 = "HiGHCOM.COM";
        String s7 = "fendou";
        String s8 = "abc";
        String s9 = "fen#dou#de#lu#shang";

        System.out.println(s5.equals((s6)));//false
        //忽略大小写比较
        System.out.println(s5.equalsIgnoreCase(s6));//true

        //把小写转成大写
        System.out.println(s7.toUpperCase());//FENDOU

        //大写转小写
        System.out.println(s6.toLowerCase());//highcom.com

        //转成字节数组
        byte[] bbs = s8.getBytes();
        System.out.println(Arrays.toString(bbs));//[97, 98, 99]

        //字符串长度
        System.out.println(s8.length());//3

        //字符串替换
        System.out.println(s8.replace("b","B"));//aBc

        //切割字符串  返回字符串数组
        String[] strs = s9.split("#");
        System.out.println(Arrays.toString(strs));//[fen, dou, de, lu, shang]

        //截取字符串
        //从索引位置 向后截取
        System.out.println(s6.substring(3));//HCOM.COM
        //从开始索引位置  截取到结束索引位置
        System.out.println(s6.substring(2,7));//GHCOM

        //取出前后空格
        String s10 = "     hell     o     ";
        System.out.println(s10+"a");//     hell     o     a
        System.out.println(s10.trim()+"a");//hell     oa
    }
}

1.6 日期类 java.util.Date

    public static void main(String[] args) {
        //创建日期对象
        Date date = new Date();
        System.out.println(date);

        Date date1 = new Date(1489555961512L);
        System.out.println(date1);

        Date date2 = new Date(2022-1900,1,2);
        System.out.println(date2);

//        Date date3 = new Date("2023-1-1");
//        System.out.println(date3);

        //打印当前日期对象的毫秒值
        long time = date.getTime();
        System.out.println(time);

        //比较两个日期
        System.out.println(date1.after(date2));//false
        System.out.println(date1.before(date2));//true
    }

1.7 SimpleDateFormat类

    public static void main(String[] args) throws ParseException {
        //创建日期格式化类对象 指定日期格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
        
        //创建当前系统时间对象
        Date date = new Date();
        
        //日期类型转成字符串类型
        String s1 = sdf.format(date);
        System.out.println(s1);

        //字符串类型转成日期类型
        String s2 = "2023/7/16 13:13:13";
        Date date1 = sdf.parse(s2);
        System.out.println(date1);

        String s3 = sdf.format(date1);
        System.out.println(s3);
    }

1.8 Calendar类

    public static void main(String[] args) {
        //日历类对象的声明
        Calendar c = Calendar.getInstance();
        System.out.println(c);

        //获取年份
        System.out.println(c.get(Calendar.YEAR));
        //获取月份
        System.out.println(c.get((Calendar.MARCH)));
        //获取日
        System.out.println(c.get(Calendar.DAY_OF_MONTH));
        System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MARCH)+1)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日");

        //添加相应字段的值
        c.add(Calendar.YEAR,2);
        c.add(Calendar.MARCH,-3);
        System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MARCH)+1)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日");

        //创建第二个日历类对象
        Calendar c1 = Calendar.getInstance();
        c1.set(2020,5,6);
        System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MARCH)+1)+"月"+c.get(Calendar.DAY_OF_MONTH)+"日");

        //比较两个日历类对象
        System.out.println(c.before(c1));//false
        System.out.println(c.after(c1));//true

        //获取一周的第一天
        System.out.println(c.getFirstDayOfWeek());

        //日历对象转成日期对象
        Date date = c.getTime();
        System.out.println(date);

        //获取毫秒值
        System.out.println(c.getTimeInMillis());

        Date date1 = new Date(1389562073920L);
        c.setTime(date1);
        System.out.println(c);

    }
}

1.9 NumberFormat类

    public static void main(String[] args) {
        double pi = 3.1415926;
        //取整数位
        System.out.println(new DecimalFormat("0").format(pi));
        //取小数点后一位
        System.out.println(new DecimalFormat("0.0").format(pi));
        //取小数点后三位
        System.out.println(new DecimalFormat("0.000").format(pi));
        //取小数点后四位
        System.out.println(new DecimalFormat("0.0000").format(pi));

        System.out.println(new DecimalFormat("#").format(pi));
        System.out.println(new DecimalFormat("#.#").format(pi));
        System.out.println(new DecimalFormat("#.##").format(pi));
        System.out.println(new DecimalFormat("#.##%").format(pi));//314.16%

        //整数位变成2位,不足用0补齐
        System.out.println(new DecimalFormat("00.00").format(pi));//03.14
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值