第三阶段 Objects的常用方法 日期 数字类运算 System类常用方法 包装和基本数据类 正则表达式

埋骨何须桑梓地,人生何处不青山。

Objects常用方法

1、Objects.equals()的使用 - 避免nullException

当生成其它类时,如果不进行equals重写,直接比较的就是对象的地址—与toString类似,Object这个祖宗类提供的方法,如果不进行重写,后台输出的就是实例的地址,进行toString才能获取到该对象中的属性打印

 @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        //防止出现nullException
        return Objects.equals(userName, user.userName) &&
                Objects.equals(passWd, user.passWd);
    }

Objects.equals()的源码也很有意思

public static boolean equals(Object a, Object b) {
        return (a == b) || (a != null && a.equals(b));
    }

2、Objects.isNull() —— 比较鸡肋

public static boolean isNull(Object obj) {
        return obj == null;
    }

 日期

1、date(util包):目前date只有两个构造器,一个是有参构造,另外一个是无参构造

 public static void main(String[] args) {
        //当前时间
//        Date date = new Date();
//        System.out.println(date);
//        System.out.println(date.getTime());

        //计算该代码块的运行时间
        long time = new Date().getTime();

        for (int i = 0; i <= 1000000; i ++ ){
            System.out.println(111);
        }

        long endTime = new Date().getTime();

        //作为浮点类型去进行运算,秒后有对应的小数时间
        System.out.println((endTime - time) / 1000.0);
        
    }

2、SimpleDateFormat类,作为DataFormat(抽象类)的子类,实现format方法,在固定好格式之后,format的对象有两种,一种是对应的时间,一种是时间对应的毫秒数

public static void main(String[] args) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年");
        //(1)把对应的时间进行转换
        System.out.println(simpleDateFormat.format(new Date()));
        //(2)将毫秒数进行转换
        System.out.println(simpleDateFormat.format(new Date().getTime()));
    }

3、将String类型转换为date,利用parse()去进行转换

public static void main(String[] args) throws ParseException {
        //如果parse String类型的字符串,那么解析格式一定要与字符串相同
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        String dateStr = "2023-12-24 08:12:30";

        //当提示异常抛出相当于代码测对人的不相信而提供的保护机制
        Date parse = simpleDateFormat.parse(dateStr);

        System.out.println(simpleDateFormat.format(parse));

        System.out.println(simpleDateFormat.format(parse.getTime()));

        //在这块很可能会发生报错,在+的后缀处全为int类型的操作,但最后操作的结果较大,很可能会出现边界越界的情况
//        long newTime = parse.getTime() + 24*60*60*1000;

        //修改:在进行操作的首个int字段添加L,表示其是Long类型的操作
        long newTime = parse.getTime() + 24L*60*60*1000;

        System.out.println(simpleDateFormat.format(newTime));
    }

 注:当操作的int类型较大时,考虑使用long类型去进行运算

4、日历类的使用,日历类的使用不再赘述,本质为酶具有类的使用

public static void main(String[] args) {
        //规定通过单例获取对象
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar);
        System.out.println(calendar.get(Calendar.YEAR));
        System.out.println(calendar.get(Calendar.HOUR));
        calendar.add(Calendar.YEAR, 2);
        calendar.add(Calendar.HOUR, 2);
        System.out.println(calendar.get(Calendar.YEAR));
        System.out.println(calendar.get(Calendar.HOUR));
    }

System常用的方法

 public static void main(String[] args) {

        //强制进行gc操作 - 只此一家
        System.gc();
        
        //退出当前jvm状态
        System.exit(0);

        //获取当前时间的毫秒值
        System.currentTimeMillis();

        //数组拷贝 - 这块留意下
//        System.arraycopy();

    }

数学类的使用

1、Math类静态方法的使用 - 取绝对值,向上取整,向下取整,四舍五入

public static void main(String[] args) {
        System.out.println(Math.abs(-45));
        System.out.println(Math.floor(456.2));
        System.out.println(Math.ceil(78.2));
        System.out.println(Math.round(78.2));
    }

2、当进行数字类的运算的时候,考虑使用BigDecimal去进行操作,可极大程度的保持精度

public static void main(String[] args) {
        double a = 12.2;
        double b = 0.5;

        double c = a + b;

        System.out.println(c);

        System.out.println(a/b);
        System.out.println(a + b);

        //bigdecimal主要针对的是高精度浮点类型的数据
        //其使用的是这种格式进行对象创建
        BigDecimal bigDecimal = BigDecimal.valueOf(12.2);
        BigDecimal bigDecimal1 = BigDecimal.valueOf(78.5);
        BigDecimal bigDecimal2 = bigDecimal.add(bigDecimal1);
        System.out.println(bigDecimal2);
    }

包装和基本数据类型

基本数据类型只包含了8种,基本数据类型中只包含对应值,比如1,2,3,xueweinan,吴彦祖这种;而包装数据类型是一个对象,继承自Object,包含null与其它操作,或者说其可以承载null值——接口处适应包装数据类型可以避免报错

另外,基本和包装涉及拆箱和装箱,都是默认操作

public static void main(String[] args) {
        //装箱
        Integer i= 12;
        //拆箱
        int a = i;

        //转换过程中,只局限于数字类的字符串,否则会出现数据形式转换异常
        int i1 = Integer.parseInt("1212");

        double v = Double.parseDouble("1212");

        Integer integer = Integer.valueOf(121);

        Double aDouble = Double.valueOf("212121");
    }

正则表达式

正则表达式在后端应用的不甚广泛,其主要功能有以下几种:

1、字符串校验

    public static void main(String[] args) {

        String str = "1217486746854a212";
//        System.out.println(matchs(str));

        //只进行一次校验
        //匹配集合
        System.out.println("a".matches("[abc]"));
        //不匹配集合
        System.out.println("a".matches("[^abc]"));
        //匹配数字 - 双//与java本身的字符进行区分
        System.out.println("1".matches("\\d"));
        //匹配字母-数字也是一种字母吗?-答案是肯定的
        System.out.println("1".matches("\\w"));
        System.out.println("a".matches("\\w"));




        System.out.println("qwqwq".matches("\\w{6,}"));

        System.out.println("1213".matches("\\w{4}"));
        System.out.println("121375452".matches("\\w{4}"));
        System.out.println("121*".matches("[a-zA-Z0-9]{4}"));
        System.out.println("121A".matches("[a-zA-Z0-9]{4}"));

        //对邮箱进行校验
        "127168@qq.com".matches("\\w{1,}&\\w{2,3}(\\.\\w{2,10}){1,2}");
        
    }

    private static  boolean matchs(String str) {
        return str != null && str.matches("\\d{4,}");
    }

注:[ ]一般是表示范围,{ }一般是表示个数

2、与字符串方法的联用——与split()和replace()进行联用

   public static void main(String[] args) {
        String name = "测试wdgiuwh12121开发";
        String[] split = name.split("\\w{1,}");
//        Stream<String> stream = Arrays.stream(split);
//        System.out.println(stream);
        for (String s : split) {
            System.out.println(s);
        }
        String s = name.replaceAll("\\w+", " ");
        System.out.println(s);
    }

3、拔取数据 - 很初始的方法去进行操作

   public static void main(String[] args) {

        String str = "srdtghkedjhn1212chgujkdhkj34345";

        //regex相当于去进行关键走获取 - 以正则表达式的形式去进行获取
        String regex = "1[2-9]\\d{1,3}";

        //编译正则表达式成为一个匹配规则对象
        Pattern compile = Pattern.compile(regex);

        //以正则表达式对象去进行String对象的匹配
        Matcher matcher = compile.matcher(str);

        //当根据正则表达式对象匹配到对应的字符串
        while (matcher.find()){
            //输出匹配的对应对象
            System.out.println(matcher.group());
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值