栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

9.Java常用类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

9.Java常用类

1.字符串相关的类 String类概述

​ 1.String声明为final的,不可被继承

​ 2.String实现了Serializable接口:表示字符串时支持序列化的,实现了Comparable接口:表示String可以比较大小

​ 3.String内部定义了final char[] value用于存储字符串数据

​ 4.String:代表不可表的字符序列。简称:不可变性,体现:当对字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的value进行赋值。

​ 5.通过字面量的方法(区别于new)给一个字符串赋值,此时的字符串值声明在字符串常量池中

​ 6.字符串常量池中是不会存储相同内容的字符串的

String的实例化方式:

方式一:通过字面量定义的方式

方式二:通过new+构造器的方式

String s=new String(“abc”),创建了两个对象,一个是在堆空间中new结构,另一个是char[]对应的查良池中的数据“abc”

结论:1.常量与常量的拼接结果在常量池中。且常量池中不会存在相同内容的常量

​ 2.只要其中有一个是变量,结果就在堆中

​ 3.如果拼接的结果调用intern()方法,返回值就在常量池中

StringBuffer和StringBuffer

String——>StringBuffer和StringBuffer:调用StringBuffer和StringBuffer的构造器

StringBuffer和StringBuffer——>String:①调用String构造器 ②StringBuffer和StringBuffer的toString()

常用方法:

增:append()

删:delete(int start,int end)

改:setCharAt(int n,char ch)/replace(int start,int end,String str)

查:charAt(int n)

插:insert(int offset,xxx)

长度:length()

2.日期时间API Java.util.Data类
  • 1.两个构造器的使用

    构造器一:Date():创建一个对应当前时间的Date对象

    构造器二:创建指定毫秒数的Date对象

  • 2.两个方法的使用

    toString():显示当前的年月日时分秒

    gettime():获取当前Date对象对应的毫秒数(时间戳)

  • 3.Java.sql.Date对应着数据库中的日期类型变量

@Test
public void Test2(){
    //构造器一:Date():创建一个对应当前时间的Date对象

    Date date1 = new Date();
    System.out.println(date1.toString());
    System.out.println(date1.getTime());//1658560186648

    //构造器二:创建指定毫秒数的Date对象
    Date date2 = new Date(1658560186648L);
    System.out.println(date2);

    //创建Java.sql.Date对象
    java.sql.Date date3 = new java.sql.Date(1658560186648L);
    System.out.println(date3);
    System.out.println(date3);
}
//1.System类中的currentTimeMillis()
@Test
public void Test1(){
    long time=System.currentTimeMillis();
    //返回当前时间与1970年1月1日0时0分0秒以毫秒为单位的时间差(时间戳)
    System.out.println(time);//1658560203898
}
SimpleDateFormat对日期Date类的格式化和解析
  • 1.格式化:日期–>字符串
  • 2.解析:格式化的逆过程–>日期
@Test
    public void Test1(){
        //实例化SimpleDateFormat
        SimpleDateFormat sdf=new SimpleDateFormat();
        //格式化:日期-->字符串
        Date date=new Date();
        System.out.println(date);

        String format = sdf.format(date);
        System.out.println(format);

        //解析:格式化的逆过程
        String str ="2022/7/27 下午3:30";
        Date date1= null;
        try {
            date1 = sdf.parse(str);
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
        System.out.println(date1);

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        //格式化
        String format1 = simpleDateFormat.format(date);
        System.out.println(format1);
        //解析:要求字符串必须是符合SimpleDateFormat识别的格式
        Date date2= null;
        try {
            date2 = simpleDateFormat.parse("2022-08-03 04:54:12");
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
        System.out.println(date2);
    }
Calendar对日期Date类的格式化和常用方法
@Test
    public void Test2() {
        //1.实例化
        //方式一:创建其子类对象
        //方式二:调用静态方法
        Calendar calendar = Calendar.getInstance();
//        System.out.println(calendar.getClass());
        //2.常用方法
        //get()
        int days= calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(days);
        System.out.println(calendar.get(Calendar.DAY_OF_YEAR));
        //set()
        calendar.set(Calendar.DAY_OF_MONTH,22);
        int days1= calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(days1);
        //add()
        calendar.add(Calendar.DAY_OF_MONTH,-3);
        days=calendar.get(Calendar.DAY_OF_MONTH);
        //getTime():日历类-->Date
        Date date = calendar.getTime();
        System.out.println(date);
        //setTime():Date-->日历类
        Date date1 = new Date();
        calendar.setTime(date1);
        days=calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(days);
    }

本地日期、本地时间、本地日期时间的使用:LocalDate、LocalTime、LocalDateTime

@Test
public void Test2(){
    //now():获取当前的日期、时间、日期+时间
    LocalDate localDate = LocalDate.now();
    LocalTime localTime = LocalTime.now();
    LocalDateTime localDateTime = LocalDateTime.now();

    System.out.println(localDate);
    System.out.println(localTime);
    System.out.println(localDateTime);

    //of():设置指定的年月日时分秒,没有偏差量
    LocalDateTime localDateTime1 = LocalDateTime.of(2020, 10, 6, 13, 23, 45);
    System.out.println(localDateTime1);
    //getXxx()
    System.out.println(localDateTime1.getDayOfMonth());
    System.out.println(localDateTime1.getHour());
}

Instant瞬时:时间上的瞬时点,这可能被用来记录应用程序中的时间时间戳。

@Test
public void Test3(){
    //now():获取本初子午线对应的标准时间
    Instant instant = Instant.now();
    System.out.println(instant);//2022-08-02T07:43:34.117771700Z
    //添加时间的偏移量
    OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));
    System.out.println(offsetDateTime);//2022-08-02T15:43:34.117771700+08:00
    //获取自1970年1月1ri0-0-0开始的毫秒数
    long milli = instant.toEpochMilli();
    System.out.println(milli);//1659426464243
}
3.Java比较器

自然排序:

1.像String、包装类等实现了Comparable接口,重写了compareTo()方法,给出了比较两个对象大小方式
2.重写compareTo()的规则:
如果当前对象this大于形参对象obj,则返回正整数,
如果当前对象this小于形参对象obj,则返回负整数,
如果当前对象this等于形参对象obj,则返回零。
3.对于自定义类来说,如果需要排序,我们可以让自定义类实现Comparable接口,重写compareTo()方法在方法中指明如何排序

public class Goods implements Comparable{
    private String name;
    private double price;
    @Override
    public int compareTo(Object o){
        if(o instanceof Goods) {
            Goods goods = (Goods) o;
            if (this.price > goods.price) {
                return 1;
            } else if (this.price < goods.price) {
                return -1;
            } else {
//                return 0;
                return this.name.compareTo(goods.name);
            }

            //return Double.compare(this.price,goods.price);
        }
        throw new RuntimeException("传入的数据类型不一致!");
    }
}
//getter、setter、构造器。。。

定制排序:使用Comparator接口

重写compare(Object o1,Object o2)的规则:
如果o1大于o2,则返回正整数,
如果o1小于o2,则返回负整数,
如果o1等于o2,则返回零。

@Test
public void Test4(){
    Goods[] arr=new Goods[6];
    arr[0]=new Goods("lenovo",34);
    arr[1]=new Goods("dell",43);
    arr[2]=new Goods("xiaomi",12);
    arr[3]=new Goods("huawei",65);
    arr[4]=new Goods("microsoft",43);
    arr[5]=new Goods("microsoft",33);

    Arrays.sort(arr, new Comparator() {
        @Override
        public int compare(Goods o1, Goods o2) {
            if(o1 instanceof Goods && o2 instanceof Goods){
                Goods s1 = o1;
                Goods s2 = o2;
                if(s1.getName().equals(s2.getName())){
                    return -Double.compare(s1.getPrice(),s2.getPrice());
                }else{
                    return s1.getName().compareTo(s2.getName());
                }
            }
            throw new RuntimeException("输入的市局类型不一致");
        }
    });
    System.out.println(Arrays.toString(arr));
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1036244.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号