Java&Guava
一、Java语言简介及数据类型
1、八大基本类型
- Int
- short
- byte
- long
- boolean
- char
- float
- double
2、整型溢出
long millisOfYears = 5000 * 365 * 24 * 3600 * 1000
上述代码会导致溢出,解决方案在第一个数值5000后边加“L”
long millisOfYears = 5000L * 365 * 24 * 3600 * 1000
3、空指针异常
Integer a = null;
int b = a.intValue();
intValue()是输出int数据。上述代码会报空指针异常
4、精度丢失
double d = 15.68;
System.out.println(new BigDecimal(d));
输出结果为:15.67999999999999971578290569595992565155029296875
避免精度丢失两种方法:
BigDecimal bd = BigDecimal.valueOf(0.580);
valueOf() 方法用于返回给定参数的原生 Number 对象值,但输出结果会没有最后的0,为0.58
BigDecimal bd1 = new BigDecimal("0.580");
使用字符串方式
输出是0.580
bd.equals(bd1)
equal()既比较数值,又比较精度,结果为false
bd.compareTo(bd1)
compareTo()只比较数值,结果为0。
<0表示bd<bd1
5、StringBuilder
多线程情况下,StringBuffer是线程安全的,StringBuilder是非线程安全的。
由于StringBuffer有锁,所以在单线程情况下,StringBuilder更快一些。
扩容规则:如果append的长度+原长度>容量,则扩充容量为原容量*2+2。
6、Strings
Strings是Guava提供的一个String工具类,提供一系列的有关String的静态工具方法。
(1)isNUllOrEmpty/nullToEmpty/emptyToNull
(2)padStart/PadEnd/repeat
(3)commonPrefix/commonSuffix
公共前缀、公共后缀
7、Ints
8、Joiner
List<Integer> a = Lists.newArrayList(1,3,5);
System.out.println(Joiner.on("|").join(a));
注意:a里不能有null
如果有空元素,可以使用useForNull(“7”)替换空元素,或者skipNulls()跳过空元素,但是这两个不能同时使用。
String host = "www.baidu.com";
Map<String, String> param = Maps.newHashMap();
param.put("name", "sksk");
param.put("id", "0");
String queryString = Joiner.on("&").withKeyValueSeparator("=").join(param);
System.out.println(host + "?" + queryString);
9、Splitter
public static void split(){
String string = ", a,b ,";
//[, a, b ],丢失了最后一个空元素
String[] regexSplit = string.split("[,]");
System.out.println(Arrays.toString(regexSplit));
//guava
//[, a, b , ]
List<String> guavaSplit = Splitter.on(",").splitToList(string);
System.out.println(guavaSplit);
//去除空格
//[, a, b, ]
List<String> guavaSplit2 = Splitter.on(",").trimResults().splitToList(string);
System.out.println(guavaSplit2);
//去除空元素
//[a, b]
List<String> guavaSplit3 = Splitter.on(",").trimResults().omitEmptyStrings().splitToList(string);
System.out.println(guavaSplit3);
}
}
public static void mapSplit(){
String queryString = "a=1&b=2";
Map<String,String> split = Splitter.on('&').withKeyValueSeparator('=').split(queryString);
System.out.println(split);
}
10、Objects
- equal
- hashCode
- toSTringHelper
- forstNonNull
11、CharMatcher
- and/or/anyOf/noneOf/is/isNot
- removeFrom/retainFrom
- 配合Splitter使用
12、Optional
13、Function
函数式编程