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

 

posted on 2019-09-08 15:55  菜鸟乙  阅读(188)  评论(0编辑  收藏  举报