1 常用方法
1.1 不同类型比较
int 通常 直接通过 == 判断是否相等
String通过 equals 判断是否相同
Class通过 instanceof 判断是否相同
if(obj instanceof B){
B b = (B)obj;//强转成B
}
1.2 判断非空
Objects.notNull
ObjectUtils.isEmpty()
CollectionUtils.isEmpty()
CollectionUtils.isEmpty()
StringUtils.isEmpty()
null!=Long
0!=long(有待验证)
1.3 类型转换
- int String 互转
--int转String int a=12; String b=a+""; --String转int String a="23"; int b=Integer.parseInt(a);
- int->Long
Long a;
Integer b = 3;
a = Long.valueOf(b);
- String -> Long
long l = Long.parseLong([String]);
- Date<->Long
public static void main(String[] args) { System.out.println(new Date().getTime()); System.out.println(new Date(1686612333097L)); }
- String Date 互转
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Demo { public static void main(String[] args) throws ParseException { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");//注意月份是MM Date date = simpleDateFormat.parse("2019-09-02"); System.out.println(date); //Mon Sep 02 00:00:00 CST 2019 System.out.println(simpleDateFormat.format(date)); //2019-09-02 } }
- String List 互转
List<String> list = new ArrayList<>(); list.add("我"); list.add("爱"); list.add("中"); list.add("华"); String aaa = list.stream().collect(Collectors.joining("")); System.out.println("aaa===="+aaa); String str[] = strs.split(","); return Arrays.asList(str);
-
byte String 互转
--byte转String byte[] resByte = zkServer.getZookeeper().getData("/imooc", false, stat); String result = new String(resByte); --String转byte byte[] newData = "batman".getBytes();
- json 对象(类) 互转
package com.imooc.utils; import java.util.List; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.ObjectMapper; /** * * @Title: JsonUtils.java * @Package com.lee.utils * @Description: JSON/对象转换类 * Copyright: Copyright (c) 2016 * Company:Nathan.Lee.Salvatore * * @author leechenxiang * @date 2016年4月29日 下午11:05:03 * @version V1.0 */ public class JsonUtils { // 定义jackson对象 private static final ObjectMapper MAPPER = new ObjectMapper(); /** * 将对象转换成json字符串。 * <p>Title: pojoToJson</p> * <p>Description: </p> * @param data * @return */ public static String objectToJson(Object data) { try { String string = MAPPER.writeValueAsString(data); return string; } catch (JsonProcessingException e) { e.printStackTrace(); } return null; } /** * 将json结果集转化为对象 * * @param jsonData json数据 * @param clazz 对象中的object类型 * @return */ public static <T> T jsonToPojo(String jsonData, Class<T> beanType) { try { T t = MAPPER.readValue(jsonData, beanType); return t; } catch (Exception e) { e.printStackTrace(); } return null; } /** * 将json数据转换成pojo对象list * <p>Title: jsonToList</p> * <p>Description: </p> * @param jsonData * @param beanType * @return */ public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) { JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType); try { List<T> list = MAPPER.readValue(jsonData, javaType); return list; } catch (Exception e) { e.printStackTrace(); } return null; } }
1.4 替换方法
也可以参考:https://www.cnblogs.com/1446358788-qq/p/11456716.html#_labelTop
public static void main(String[] args) { String aaa = "我叫%s,我爱%s,%s是我的祖国"; String bbb = String.format(aaa,"小A","小B","中国"); System.out.println(bbb); }
1.5 StringBuffer 清空
stringbuffer.setlength(0);
1.6 SubString(a,b)方法
截取字符串,截取下标从a到b
注意:js的 substr(a,b)方法是从a开始,b个长度
1.7 this()方法
调用构造方法,this() 参考https://www.cnblogs.com/1446358788-qq/p/16718869.html
1.8 打印方法
//单个参数 log.info("DiGui->main->outDtoList2->:{}",JSON.toJSONString(outDtoList)); //多个参数 log.info("DiGui->main->outDtoList2->:{},aaa:{}",JSON.toJSONString(outDtoList),"aaa");
打印对象也可以参考这个:https://www.cnblogs.com/1446358788-qq/p/11456716.html 2.1
2 避坑操作
2.1 布尔类型,用boolean,不用Boolean
原因:idea自动生成get,set方法,但是针对boolean,生成的是is方法;如果定义类型为Boolean,使用的时候会导致调用get方法,自然会找不到
参考:https://blog.csdn.net/10km/article/details/53924181
3 不常用功能点:
3.1 StringUtils.isNotBlank 和 equals的区别
StringUtils.isNotBlank 可不可以替换成(!“”.equals()
答案:
不可以,当equals里面的参数是null的话,看源码会发现会造成空指针异常。
3.2 isnotEmpty和isNotBlank的区别
转自:https://blog.csdn.net/yangwen123222/article/details/78889182
isNotEmpty : 判断某字符串是否非空 StringUtils.isNotEmpty(null) = false StringUtils.isNotEmpty("") = false StringUtils.isNotEmpty(" ") = true StringUtils.isNotEmpty("bob") = true isNotBlank: 判断某字符串是否不为空且长度不为0且不由空白符(whitespace)构成, 下面是示例: StringUtils.isNotBlank(null) = false StringUtils.isNotBlank("") = false StringUtils.isNotBlank(" ") = false StringUtils.isNotBlank("\t \n \f \r") = false
3.3 split的思考
split在java语法中能分成数组,如果要根据特定符号分割的情况,特别是批量很多无值的情况,一定要把主键放最后一位。否则,如果最后几位为空,分的数组将会把最后几位舍去
3.4 String.split("")和SpringUtils.split(注意String.split的对象为空的情况)
System.out.println("StringSplit=="+JSON.toJSONString("111,222,333".split(","))); System.out.println("spring的StringUtilSplit=="+ JSON.toJSONString(StringUtils.split("111,222,333",","))); StringSplit==["111","222","333"] spring的StringUtilSplit==["111","222,333"]
4 待删功能点
4.1 J2EE 获取特定类的方法(红色标注部分)
package com.imooc.test.base; import org.apache.commons.lang.StringUtils; import org.junit.After; import org.junit.Before; import org.springframework.beans.BeansException; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; /* 1 加载文件 FileSystemXmlApplicationContext context1 = new FileSystemXmlApplicationContext("F:/xiangmu3/Xin/FuQiang/Spring/ddwei-dao/target/classes/spring-ioc.xm"); 2 加载路径 ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext(springXmlPath.split("[,\\s]+")); */ public class UnitTestBase { //spring-core的jar包下 3 加载路径 private ClassPathXmlApplicationContext context; private String springXmlPath; public UnitTestBase(){ } //初始化该类,刚进来时传入xml路径 public UnitTestBase(String springXmlPath){ this.springXmlPath = springXmlPath; } //StringUtils在common-lang-2.4包下 @Before public void before(){ if(StringUtils.isEmpty(springXmlPath)){ springXmlPath="classpath*:spring-*.xml"; } try{ context = new ClassPathXmlApplicationContext(springXmlPath.split("[,\\s]+")); context.start(); }catch(BeansException e){ e.printStackTrace(); } } @After public void after(){ context.destroy(); } @SuppressWarnings("unchecked") protected <T extends Object> T getbean(String beanId){ try { return (T)context.getBean(beanId); } catch (BeansException e) { // TODO: handle exception e.printStackTrace(); } return null; } protected <T extends Object> T getbean(Class <T> clazz){ return context.getBean(clazz); } }
4.2 泛型应用 Comparator<? super K> 什么意思
<T extends Comparable<? super T>>
①extends后面跟的类型如<任意字符 extends 类/接口>表示泛型的上限
②同样的super表示泛型的下限
③<T extends Comparable<? super
T>>这里来分析T表示任意字符名,extends对泛型上限进行了限制即T必须是Comparable<? super
T>的子类,然后<? super T>表示Comparable<>中的类型下限为T
Java泛型命名
E - Element (used extensively by the Java Collections Framework)
K - Key
N - Number
T - Type
V - Value
S,U,V etc. - 2nd, 3rd, 4th types
相关demo1(extends 的应用)
import java.util.*; class Demo<T extends AbstractList>{} public class Test { public static void main(String[] args) { Demo<ArrayList> p = null; // 编译正确 //这里因为ArrayList是AbstractList的子类所以通过 //如果改为Demo<AbstractCollection> p = null;就会报错这样就限制了上限 } }
相关demo2(泛型命名的应用)
public class DiffGenericParameter<K,V> { private K k;//代表K为key值 private V v;//代表V为value值 public DiffGenericParameter(K k,V v){ this.v = v; this.k = k; }; }
参考:https://www.cnblogs.com/twoheads/p/9627223.html
参考(精确理解extends和super):https://blog.csdn.net/qq_32117641/article/details/88692100
参考(泛型命名应用):https://www.cnblogs.com/kgrdomore/p/5823733.html