JavaSE-常用类

Java.lang包是java语言体系中其他所有类库的基础,已经内嵌到java虚拟机中,而且以对象的形式创建好了。

所以,在使用java.lang包时不需要再使用import将其导入,可以直接使用java.lang包中的所有类以及直接引用某个类中的常量、变量和操作方法。

一、Object

Object类是所有类的父类

1、equals()

Object类中定义了equals方法【 public boolean equals(Object obj) 】,用来比较两个对象的虚地址

如果虚地址相同则返回true,否则返回false。

Object类中的equals方法的作用,与==相同,都是比较两个对象的虚地址。

重写equals方法:

目的:用来比较两个对象的属性值,如果属性值相同,则认为两个对象相等。

自动生成equals方法:

    @Override
    public boolean equals(Object o) {
        //1、比较地址是否相同,如果相同就直接返回true
        if (this == o) return true;
        //2、查看另一个类是否为空、两个类的字节码--getClass() 是否相同
        if (o == null || getClass() != o.getClass()) return false;
        //将另一个对象进行强转,转换成本类
        Course course = (Course) o;
        //3、查看属性price、title是否相等
        if (Double.compare(course.price, price) != 0) return false;
        return title.equals(course.title);
    }

2、hashCode()

Object类中定义了hashCode方法【 public int hashCode() 】,用来返回对象的哈希码。

hashCode方法主要为了配合基于哈希的集合类一起工作,例如HashSet、HashMap等。

默认情况下【即没有重新hashCode方法时】,当两个引用的虚地址相同时hashCode返回相同的值,否则返回不同的值。

3、toString()

Object类中定义了toString方法【 public String toString() 】,可以把任意类型对象转换成字符串返回;

默认情况(没有重写Object类中的toString方法)下,返回字符串的格式为:对象类型@对象调用hashCode方法的返回值。

这表示方式很晦涩,因此可以重写toString(),可选择自定生成的模板。

二、String

Java语言使用Unicode字符集,默认使用UTF-8格式;

因此Java的字符串也使用UTF-8编码

UTF-8是一种针对Unicode的可变长度字符编码,用1到4个字节编码Unicode字符;

Java语言中的字符串实际上是使用字符型数组char[]存储。

1、子串截取的相关方法

2、检索相关方法

其中:

.indexOf() 是:从指定位置向右查找,找不到就返回-1

                        如果指定查找的起始位置是-1,该方法会将其改成0,也就是从最左侧开始。

.lastIndexOf() 是:从指定位置向左查找,找不到就返回-1

.charAt() 如果string未赋值的话,会报NullPointerException异常。

 3、类型转换方法

 4、其他方法

.replace() 可以把指定的字符换成新的字符。但是不改变原字符串。

 三、Math

Math类位于java.lang包中,是一个final类,不能被继承。

Math类中所有方法都是static方法,可以直接使用类名Math调用。

Math中定义了大量与数学运算有关的方法,包括求绝对值、三角函数、平方根等。

        //返回最小的double数,这个数大于等于参数,并等于某个参数
        System.out.println(Math.ceil(4.57));
        //返回最大的double数,这个数小于等于参数,并等于某个参数
        System.out.println(Math.floor(4.57));
        //返回最接近参数的long
        System.out.println(Math.round(5.98f));
        //返回最接近参数的int
        System.out.println(Math.round(5.98));
        //随机返回一个 [0.0, 1.0) 区间内的正数(double类型的)
        System.out.println(Math.random());

四、Date

java.util.Date类表示时间,不过由于对国际化支持有限,所以JDK1.1之后推荐使用java.util.Calendar类。

java.util.Date类中很多构造方法和方法已经过时(Deprecated),不推荐使用,此处只列出两个没过时的构造方法。

public static void main(String[] args) {
        Date date = new Date();
        //输出当前日期
        System.out.println(date);
        
        //传入一个距离1970.1.1.00:00:00以来的毫秒数
        Date date1 = new Date(10 * 24 * 60 * 60 * 1000);
        System.out.println(date1);

        //输出距离1970.1.1.00:00:00以来的毫秒数
        System.out.println(System.currentTimeMillis());
        //获取当前时间
        Date date2 = new Date(System.currentTimeMillis());
        System.out.println(date2);
    }

五、Calendar

JDK1.1版本开始,增加Calendar类,建议使用Calendar类代替Date类。

Calendar是抽象类,不能直接使用new创建对象。

1、Calendar类中定义了获得实例的方法:

 

 

 2、设置年月日时分秒:

注意:月份是从0开始的,即:1月是0,12月是11

 3、返回Calendar字段:

 4、修改Calendar的字段值:

 EG-1:

        Calendar calendar1 = Calendar.getInstance();
        //将当前所处年份 + 2
        calendar1.add(Calendar.YEAR, 2);

EG-2:

        Calendar calendar1 = Calendar.getInstance();
        System.out.println(calendar1.getTime());
        System.out.println(calendar1.get(Calendar.YEAR)); //得到年份
        System.out.println(calendar1.get(Calendar.MONTH));  //得到月份
        //设置年月日时分秒
        calendar1.set(2022, 2, 2, 2, 2, 2);
        System.out.println(calendar1.getTime());

六、SimpleDateFormat

SimpleDateFormat中定义了对时间进行格式化的方法,该类继承了抽象父类DateFormat。

可以自定义一个模式字符串来构建SimpleDateFormat对象:

1、通常使用format方法进行格式化

 

 EG:

        Calendar calendar1 = Calendar.getInstance();
        //HH是大写的,表示24进制的,下午时间是双位
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        String format = simpleDateFormat.format(calendar1.getTime());
        System.out.println(format);

2、parse() 解析时间字符串

如果得到的是字符串,需要解析成日期时间类型进行处理,SimpleDateFormat类不仅能够格式化时间,还能解析时间字符串。

 EG:

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String strTim = "2021-3-23 12:25:39";
        try {
            Date parse = simpleDateFormat.parse(strTim);
            System.out.println(parse);
        } catch (ParseException e) {
            e.printStackTrace();
        }
//结果:Tue Mar 23 12:25:39 CST 2021

注意:月份由数字转换的话,是正常的,1就是1月。

 

 

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3