硬核实战运用(一)——java常用工具介绍

小编技术能力有限,所写博客只是作为加强自身经验总结,各位大佬有任何意见都可以提出,以便加强学习

在我们工作实战项目中,时常会有各种小的需求或者各种根据实际情况所需要的的条件判定、工具运用等,本篇就是个人总结如下实际开发中会用到的各种常用工具包。

一、Apache commons

Apache commons包封装了很多实际开发过程中需要运用的技术,减轻重复代码开发,大大提升效率,

组件

功能介绍

BeanUtils 提供了对于JavaBean进行各种操作,克隆对象,属性等等.
Betwixt XML与Java对象之间相互转换.
Codec 处理常用的编码方法的工具类包 例如DES、SHA1、MD5、Base64等.
Collections java集合框架操作.
Compress java提供文件打包 压缩类库.
Configuration 一个java应用程序的配置管理类库.
DBCP 提供数据库连接池服务.
DbUtils 提供对jdbc 的操作封装来简化数据查询和记录读取操作.
Email java发送邮件 对javamail的封装.
FileUpload 提供文件上传功能.
HttpClien 提供HTTP客户端与服务器的各种通讯操作. 现在已改成HttpComponents
IO io工具的封装.
Lang Java基本对象方法的工具类包 如:StringUtils,ArrayUtils等等.
Logging 提供的是一个Java 的日志接口.
Validator 提供了客户端和服务器端的数据验证框架.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

这里着重说下常用的Lang 、Collections、FileUpload、HttpClient、IO

(1) Lang 

ArrayUtils       

  1. add() 添加数组 
  2. addAll() 合并数组 
  3. contains() 是否包含元素
  4. isEmpty() 判断数组是否为空
  5. subarray() 截取数组 

StringUtils

    1.isEmpty() ,isNotEmpty(),isBlank,isNoBlank 都是判定字符串是否为空或不为空, 区别在于isBlank会多判断是否空空白符

    2.join() 将数组转换为按指定符号拆分的字符串   

    3.replace() 替换指字符串

    4.split() 按指定字符拆分返回数组 

    5.trim()  去除首尾空白 deleteWhitespace()去除所有空白

    6.substring() 截取字符串

(2)Collections 在常用集合判断是否为空中 会经常用到Collections.isEmpty()或Collections.isNotEmpty()判定集合是否为空或不为空

(3)FileUpload  非常好的提供了java web中上传文件功能封装,所以在做上传文件需求时可以考虑使用

(4)HttpClient 提供了http客户端和服务器的操作,在不同模块中开发需要调用其它模块接口时则可以时用该工具类,它很好地提供了http请求和响应支持

(5)IOUtils基本上算是优化IO传输时所写的一大堆代码了,有了它,对于即便时不怎么了解IO的同学也能运用它很好地作IO操作以及优化IO代码,常用的如

 copy()  IO流数据复制,从输入流写到输出流中,最大支持2GB

 read()  读取输入流

 write()  把字节. 字符等写入输出流

 closeQuietly():关闭一个IO流、socket、或者selector且不抛出异常,通常放在finally块

(二)、java8 新增对时间处理 java.time

LocalDate

 LocalDate localDate = LocalDate.now();
        System.out.println(localDate);  //2017-06-26

        System.out.println(localDate.getYear()); //2017,年
        System.out.println(localDate.getMonthValue()); //6,月
        System.out.println(localDate.getDayOfMonth()); //26,日
        System.out.println(localDate.getDayOfWeek()); //MONDAY,星期几
        System.out.println(localDate.lengthOfMonth()); //30,返回当前月份的长度
        System.out.println(localDate.isLeapYear());//false,是否是闰年

        System.out.println("------------------");

        LocalDate localDate2 = LocalDate.of(2017,4,1);
        System.out.println(localDate2); //2017-04-01

LocalTime

 //关注与时分秒
        LocalTime time = LocalTime.now();
        System.out.println(time); //22:30:01.512
        System.out.println(time.getHour()); //22,时
        System.out.println(time.getMinute()); //30,分
        System.out.println(time.getSecond());  //01,秒

        LocalTime time2 = time.plusHours(3).plusMinutes(40);
        System.out.println(time2);  //02:10:01.512

LocalDateTime

  LocalDateTime dt1 = LocalDateTime.of(2017, Month.APRIL,18,13,45,20);
        System.out.println(dt1);
        LocalDate date1 = dt1.toLocalDate(); //通过LocalDateTime获得LocalDate
        LocalTime time1 = dt1.toLocalTime(); //通过LocalDateTime获得LocalTime
        System.out.println("date1======="+date1+"time1===="+time1);

        LocalDate date = LocalDate.of(2014,02,26);
        LocalTime time = LocalTime.of(12,23,20);
        LocalDateTime dt2 = LocalDateTime.of(date,time);
        System.out.println(dt2);

        //LocalDate结合LocalTime成一个LocalDateTime
        LocalDateTime dt3 = date.atTime(13,45,20);
        System.out.println(dt3); //2014-02-26T13:45:20

        //LocalDate结合LocalTime成一个LocalDateTime
        LocalDateTime dt4 = date.atTime(time);
        System.out.println(dt4); //2014-02-26T12:23:20

        //LocalTime结合LocalDate成LocalDateTime
        LocalDateTime dt5 = time.atDate(date);
        System.out.println(dt5); //2014-02-26T12:23:20

Duration

 LocalTime time1 = LocalTime.of(18,23,45);
        LocalTime time2 = LocalTime.of(23,34,56);

        Duration d1 = Duration.between(time1,time2);
        System.out.println(d1.getSeconds()); //18671

period

 //LocalDate localDate1 = LocalDate.now();
        LocalDate localDate1 = LocalDate.of(2017,4,12);
        LocalDate localDate2 = LocalDate.of(2018,3,16);

        Period period = Period.between(localDate1,localDate2);
        System.out.println(period.getYears()); //获取相隔的年份差 0
        System.out.println(period.getMonths()); //获取相隔的月份差 11
        System.out.println(period.getDays()); //获取相隔的日子差 4

ZoneId和ZonedDateTime

ZoneId zoneId = ZoneId.of("Asia/Shanghai");
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println(localDateTime);//2017-04-12T22:05:22.500

        ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime,zoneId);
        System.out.println(zonedDateTime); //2017-04-12T22:05:22.500+08:00[Asia/Shanghai]

DateTimeFormatter

        Date date = new Date();
        Instant instant = date.toInstant();
        ZoneId zone = ZoneId.systemDefault();
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
        DateTimeFormatter formatter =DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formatdate = localDateTime.format(formatter);
        System.out.println(formatdate);

        System.out.println("...........");
        LocalDate localDate = LocalDate.of(2017,3,17);
        //BASIC_ISO_DATE格式,20111203
        String str = localDate.format(DateTimeFormatter.BASIC_ISO_DATE);
        System.out.println(str);

        //DateTimeFormatter.ISO_LOCAL_DATE 格式 2017-03-17
        String str2 = localDate.format(DateTimeFormatter.ISO_LOCAL_DATE);
        System.out.println(str2);

        //定义
        String str3 = localDate.format(DateTimeFormatter.ofPattern("yyyy/MM/dd"));
        System.out.println(str3);

        LocalDate localDate1 = LocalDate.parse("20111203",DateTimeFormatter.BASIC_ISO_DATE);
        System.out.println(localDate1); //2011-12-03

        LocalDate localDate2 = LocalDate.parse("2017-03-17",DateTimeFormatter.ISO_LOCAL_DATE);
        System.out.println(localDate2); //2017-03-17

(三)、常用json转换工具————fastjson

fastjson  中的jsonObject和jsonArray就不说了

主要说说  1.JSON.parseObject

//json字符串转换为java对象

Student student = JSON.parseObject(JSON_OBJ_STR, new TypeReference() {});
        //Student student1 = JSONObject.parseObject(JSON_OBJ_STR, new TypeReference() {});//因为JSONObject继承了JSON,所以这样也是可以的


//json字符串转换为json对象

JSONObject jsonObject = JSON.parseObject(COMPLEX_JSON_STR);

               2.JSON.toJSON()   将java对象转换为jsonObject 对象

               3.JSON.toJSONString()  将java对象转换为json字符串

除此之外还有google 的 Gson()对json转换做了很好的封装

(四)、常用的导出工具

      1、IText ————很好地封装了对pdf导出的封装,提供了对导出pdf文件的功能处理

       2、Apache POI ———— 提供了导出为 excel文件功能处理

       3、 也可以直接用java导出csv文件

   (五)、java中常用正则表达式

//  身份证验证
// 定义判别用户身份证号的正则表达式(15位或者18位,最后一位可以为字母)
String regularExpression = "(^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$)|" +
                "(^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}$)";


//手机号码验证
String regex = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,1,2,5-9])|(177))\\d{8}$";

//邮箱正则表达式
String repx = "\\w+@([\\w]+[\\w-]*)(\\.[\\w]+[-\\w]*)+";

 

你可能感兴趣的:(硬核实战运用(一)——java常用工具介绍)