java 日常知识点总结

172 阅读2分钟

一 日期格式转换与比较大小

  1. 日期格式转换
String temp = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
temp : 2019-10-13
string date = "2019-10-14";
Date nowDate = temp.parse(date);
-- temp.format() // 日期转字符串
-- temp.parse() // 字符串转日期
  1. 日期格式比较大小
//grantDate:发放日期,recordDate:等级日期
if(agentCertif.getGrantDate()!=null&&agentCertif.getRecordDate()!=null){
	if(agentCertif.getRecordDate().after(agentCertif.getGrantDate())) {
		addMessage(redirectAttributes, "录入失败!发放日期应当晚于登记日期!");
		return "redirect:"+ Global.getAdminPath()+"/agentdaliy/agentCertif/?repage";
	}
}

2.1 日期转成数字比较大小

1) 
Integer. valueOf()方法的作用: 
  Integer. valueOf()可以将基本类型int转换为包装类型Integer,或者将String转换成Integer,String如果为Null或“”都会报错
2)
doneDate:执行日期,outWorkDate:离职日期
if(!"".equals(outWorkDate)&&outWorkDate !=null){
    SimpleDateFormat sdf =   new SimpleDateFormat( "yyyyMM" );
    String doneDate = sdf.format(wageRewardpunish.getDoneDate());
    if(!"".equals(outWorkDate)&&outWorkDate!=null){
    	if(isNumeric(doneDate)&&isNumeric(outWorkDate)) {
    		if (Integer.valueOf(doneDate) > Integer.valueOf(outWorkDate)) {
    			List<String> list=new ArrayList<>();
    			list.add("已经离职,不能审核");
    			addBusinessError(model,list);
    			return "modules/wage/wageRewardpunishAuditList";
    		}
    	}
    }
    }
3)
// 检验是否为数字或者数字字符串
public boolean isNumeric(String str) {
    if(!"".equals(str) && str != null) {
    	Pattern pattern = Pattern.compile("[0-9]*");
    	Matcher isNum = pattern.matcher(str);
    	if (!isNum.matches()) {
    		return false;
    	}
    	return true;
    }else
    	return false;
}
  1. java日历使用
public class Demo {
    public static void main(String[] args){
        // 日期转字符串格式化
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        // 获取日历
        Calendar c = Calendar.getInstance();
        //得到前一个月
        c.add(Calendar.MONTH, -1);
        String start = format.format(c.getTime());
        System.out.println("前一个月"+c.getTime());
        System.out.println("前一个月字符串"+start);
        Date date = new Date();
        String nowDate = format.format(date);
        System.out.println("当前月"+nowDate);
        System.out.println("当前月字符串"+nowDate);
    }
}
  1. 字符型转为Integer 或者double
String s = "123";
Integer i = Integer.valueOf(s);
Double d = Double.valueOf(s);
System.out.println(i);   // 123
System.out.println(d);  //  123.0
String s2 = String.valueOf(d);
System.out.println(s2); //  123.0

4.1 parseInt 和 valueOf

//parseInt 的源码:int 基本数据类型
public static int parseInt(String s) throws NumberFormatException {
    return parseInt(s,10);
}
//valueOf 的源码  Integer 引用数据类型,但是又走了一遍parseInt
public static Integer valueOf(String s) throws NumberFormatException {
    return Integer.valueOf(parseInt(s, 10));
}
  1. jdk 1.8 拥有的字符串连接类 StringJoiner,StringJoiner在构造时需要指定一个 delimiter 分隔符,在连接时每个元素后面都会加上delimiter
public static String formatList(List<String> list, String delimiter) {
    StringJoiner result = new StringJoiner(delimiter);
    for (String str : list) {
        result.add(str);
    }
    return result.toString();
}

public static void main(String[] args) throws Exception {
    List<String> list = Arrays.asList("a", "b", "c", "d", "e", "f", "g");

    System.out.println("使用 StringJoiner:");
    String format = formatList(list, "-");
    System.out.println(format);
}

out: 使用 StringJoiner:
      a-b-c-d-e-f-g
  1. 更加简洁方便的 string.join()
public static void main(String[] args) throws Exception {
    List<String> list = Arrays.asList("a", "b", "c", "d", "e", "f", "g");

    System.out.println("使用 StringJoiner:");
    String format = formatList(list, " ");
    System.out.println(format);

    System.out.println("使用 String().join");
    String format1 = String.join("-",list);
    System.out.println(format1);
}
  1. map 的entry
public static void main(String[] args) {
    Map<String, Object> map = new HashMap<String, Object>();
        map.put("1", 1);
        map.put("2", 2);
        map.put("3", 3);
        map.put("4", 4);
        map.put("5", 5);
        map.put("6", 6);
        map.put("7", 7);
    for(Entry<String, Object> entry :map.entrySet()){
        System.out.println(entry.getKey()+"::::"+entry.getValue());
    }
}
  1. 阿里巴巴 java 开发手册关于 pojo 实体定义

数据库的查询结果可能是 null,如果使用基本类型的话,因为要自动拆箱(将包装类型转为基本类型,比如说把 Integer 对象转换成 int 值),就会抛出 NullPointerException 的异常。