代码编织梦想

类的使用

LocalDate,LocalTime,LocalDateTime的使用

1.now(): 获取当前的日期,时间,日期+时间

LocalDate now = LocalDate.now();
        LocalTime now1 = LocalTime.now();
        LocalDateTime now2 = LocalDateTime.now();

        System.out.println(now);
        System.out.println(now1);
        System.out.println(now2);

2.of(): 设置的年月日时分秒没有偏移量

LocalDateTime of = LocalDateTime.of(2002, 9, 26, 12, 45, 59, 59);
        System.out.println(of);

3.getXxx()获取当月的第几天 ,withDayOfMonth();修改当月第几天,plusMonths() 在现有的基础上加上几个月或者其他

minusDays() 减去多少

三者运行截图:

在这里插入图片描述

4. Instant的应用:

   @Test
    public void test2(){
        //获取本初子午线对应的时间
        Instant now = Instant.now();
        System.out.println(now);//使用的是中间时区
        //添加时间的偏移量
        OffsetDateTime offsetDateTime = now.atOffset(ZoneOffset.ofHours(8));
        System.out.println(offsetDateTime);
        //获取自1970 1.1(UTC) 开始的毫秒数
        long l = now.toEpochMilli();
        System.out.println(l);
        //通过给的毫秒数 获取Instant实例
        Instant instant = Instant.ofEpochMilli(2131312313123l);
        System.out.println(instant);
    }

运行结果:
在这里插入图片描述

附加一个重点:(自定义日期格式)

在这里插入图片描述
结果:
在这里插入图片描述

Java比较器

Comparable和Comparator两个接口

1.Comparable 通过类去实现接口

1)自然排序 Comparable接口
按照价格从低到高
重写compareTo方法 自定义方法 当前类的对象大于形参对象返回1 反之-1 相等则比较下一个属性 如果是String属性的话 直接用compareTo方法即可从低到高排序

*定义一个实现接口的类*
public class Goods implements Comparable{
    String name;
    int price;
    public Goods(String name, int price) {
        this.name = name;
        this.price = price;
    }
    @Override
    public int compareTo(Object o) {
        if (o instanceof Goods){
            Goods goods = (Goods) o;
            if (goods.price<this.price){
                return 1;
            }else if (goods.price>this.price){
                return -1;
            }else
                return this.name.compareTo(goods.name);
        }
        throw new RuntimeException("数据类型不匹配");
    }
    @Override
    public String toString() {
        return "Goods{" +
                "name='" + name + '\'' +
                ", price=" + price +
                '}';
    }
}

    public void test2(){
        Goods[] goods = new Goods[4];
        goods[0] = new Goods("华为",999);
        goods[1] = new Goods("华强北",108);
        goods[2] = new Goods("苹果",1999);
        goods[3] = new Goods("小米",108);
        
        Arrays.sort(goods);
        System.out.println(Arrays.toString(goods));
    }

运行结果:

在这里插入图片描述

2.Comparator接口直接在方法中通过接口直接重写方法—>定制排序

1)当元素的类型没有实现Comparable接口 又不方便修改代码 就使用Comparator方法

   public void test3(){
        String[] arr = new String[]{"AA","RR","SS","WW","DD","GG","QQ","JJ"};
        Arrays.sort(arr, new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                if (o1 instanceof String && o2 instanceof String){
                     String s1 = (String) o1;
                     String s2 = (String) o2;
                     return -s1.compareTo(s2);
                }
                throw new RuntimeException("输入的类型不一致");
            }
        });
        System.out.println(Arrays.toString(arr));
    }
}

运行结果:
在这里插入图片描述

小知识点:

一般形参是类的话 如果需要用到形参和当前类进行比较或者运算 需要先判断形参的对象是不是能和当前类instanceof(当前类需要是子类)
然后将形参类的对象强转成当前类的对象

                                         class A -----> (Object o){
                                              if(o instanceof A){
                                                 A  a  = (A)O;  ----->强转
                                                  }
                                              }
                      一般的进行比大小的话 返回-1 1 0 的话 如果给的商品不是需要的类型的话  直接手动抛出一个异常
                                    throw new XxxxXxxxxx();
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_67201964/article/details/127990943

java中的comparator和comparable比较器的用法-爱代码爱编程

Comparable和Comparator都是用来实现集合中的排序的,Comparator位于包java.util下,而Comparable位于包java.lang下,Comparable是一个对象本身就已经支持自比较所需要实现的接口(如 String、Integer 自己就可以完成比较大小操作),是内部定义的排序;而后者在一个独立的类中实现比较,是外部实

java内部比较器、外部比较器实现-爱代码爱编程

内部比较器:带比较类继承Comparable接口重写compareTo()方法; Comparable Comparable可以认为是一个内比较器,实现了Comparable接口的类有一个特点,就是这些类是可以和自己比较的,至于具体和另一个实现了Comparable接口的类如何比较,则依赖compareTo方法的实现,compareTo方法

深入理解java类加载器(classloader)-爱代码爱编程

【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/73413292 出自【zejian的博客】

java 自定义比较器_whing123的博客-爱代码爱编程_java自定义排序比较器

Comparator 和 Comparable 相同点   Comparator 和 Comparable都是java的接口,并且是用来对自定义的class比较大小的。   对于自定义类如:public class Pe

详解 java 内部类___hiro__的博客-爱代码爱编程

*本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 文章目录 前言注普通内部类静态内部类匿名内部类局部内部类内部类的嵌套深入理解内部类内部类和多重继承内部类和内存泄露 前言

Java比较器(Comparable和Comparator)-爱代码爱编程

文章目录 1.Java比较器的使用背景:2.自然排序:使用Comparable接口2.1 说明3.定制排序:使用Comparator接口3.1 说明4. 两种排序方式对比 1.Java比较器的使用背景: Java中的对象,正常情况下,只能进行比较:== 或 != 。不能使用 > 或 < 的 但是在开发场景中,我们需要对多个对象

java和当前时间比较_java比较时间-爱代码爱编程

我看前面已经有人说到Java8了...不过这个写法是有点尴尬...思路大家基本一样... 给的start时间要变为当前月的第一天 给的end时间要变为当前月的最后一天 关键是如何变的问题...Java8的时间是有现成的API可以调用的...不需要parse这种方式...变成第一天还好,变成最后一天有诸多的判断... 代码如下,按照所给条件,写了

Java比较器-学习-爱代码爱编程

1.Java比较器的使用背景 Java中的对象,正常情况下,只能进行比较:== 或 != 。不能使用 > 或 < 的 但是在开发场景中,我们需要对多个对象进行排序,言外之意,就需要比较对象的大小。 如何实现?使用两个接口中的任何一个:Comparable 或 Comparator 2.自然排序:使用Comparable接口 2.1说明

java中的内部类与使用场景-爱代码爱编程

java中的内部类 java中的内部类成员内部类静态内部类局部内部类匿名内部类 java中的内部类 java内部类分为:成员内部类、静态内部类、局部内部类、匿名内部类。 使用场景: 成员内部类:不想被其他类公开使用的类,因为外部类只能定义为public或者缺省。静态内部类:一个类与另一个类关联性比较强,但是又可以不依赖外部类而独立存在。比

Java中自定义比较器-爱代码爱编程

Java中自定义比较器 1、数组比较器2、集合比较器3、自定义类比较器 今天写算法题的时候需要用到数组排序,而且是自定义的,这块知识欠缺,就进行了相应的资料查询。 以我自己的理解,Java中自定义比较器有三种 1、数组比较器 数组比较器用到了Arrays的工具类,此类中提供了许多静态方法,其中sort是默认升序,并且我查看了sort的源代

Java基础之类加载器-爱代码爱编程

Java类加载器是用户程序和JVM虚拟机之间的桥梁,在Java程序中起了至关重要的作用,理解它有利于我们写出更优雅的程序。本文首先介绍了Java虚拟机加载程序的过程,简述了Java类加载器的加载方式(双亲委派模式),然后介绍了几种常见的类加载器及其适用场景,最后则一个例子展示了如何自定义类加载器。 基本概念 基本文件类型和概念 常见概念介绍:

Java中比较器Comparator的使用-爱代码爱编程

目录 一、要求 二、代码 三、运行结果  四、结论 一、要求 存储学生对象并遍历,创建TreeSet集合使用带参构造方法 要求:按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序 二、代码 学生类代码: public class Student { private String name; private int

java priorityqueue优先队列自定义类比较器的使用方法_自定义优先队列比较器-爱代码爱编程

Java PriorityQueue优先队列自定义类比较器的使用方法 PriorityQueue官方API PriorityQueue默认是升序自定义类比较器的用法: public class ListNode {

java中的比较器_java比较器-爱代码爱编程

Java中的比较器的构造方法 在java中经常涉及到对象数组的比较的情况,常见的有两种方法来处理: 继承comparable接口,并实现compareTo()方法定义一个单独的对象比较器,继承自Comparator接口,

行业分析| 智慧消防对讲_可视对讲行业分析-爱代码爱编程

消防工程关系国计民生,关系到每个公民的人身和财产安全,在每个场所的建设中,消防工程建设是必不可少的一个板块,包括消防应急通道建设和应急设备建设两个方面。其中消防系统设备建设主要分为九大系统的建设:消防水系统、火灾自动报警系统