常用类
1.包
2.String类
3.String注意事项
- String是不可变字符串对象。
- 只要是以“ …. ”方式写出的字符串对象,会存储到字符串常量池,且相同内容的字符串只存储一份。
- 但通过new方式创建字符串对象,每new一次都会产生一个新的对象放在堆内存中。
String s2 = s1 + "a"
这段代码中s2存储到堆中而非字符串常量池中。String s3 = "a" + "b" + "c"
这段代码存储到字符串常量池中,原因是编译器会将这段代码优化成String s3 = "abc"
。- 如果拼接的结果调用intern()方法,返回值就在常量池中。
3.StringBuffer和StringBuilder
-
String,StringBuffer,StringBuilder三者异同
- String:不可变的字符串序列。底层用char型数组存储。
- StringBuffer:可变的字符序列,线程安全,效率低。底层用char型数组存储。
- StringBuilder:可变的字符序列,线程不安全,效率高。底层用char型数组存储。
-
StringBuffer和StringBuilder常见方法:
4.日期
-
System.currentTimeMillis()
19700年1月1日到现在的毫秒数。 -
-
如何实例化?
java.sql.Date date = new java.sql.Date(1351453154L);
-
如何转换?
Date date = new Date();
java.sql.Date date1 = new java.sql.Date(date.getTime());
-
-
SimpleDateFormat的使用:
-
格式化:将Date按指定格式格式化成String。
-
解析:将String解析成Date。
-
-
package com.zpz.exer1;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;public class DateTimeTest {public static void main(String[] args) {String birth = "2005-02-20";SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");try {Date date = sdf.parse(birth);System.out.println(date);java.sql.Date sqlDate = new java.sql.Date(date.getTime());System.out.println(sqlDate);} catch (ParseException e) {throw new RuntimeException(e);}} }
-
5.Java比较器
package com.zpz.exer1;import java.util.Arrays;
import java.util.Comparator;
import java.util.Date;import static java.lang.Math.random;public class ComparableTest {public static void main(String[] args) {Goods[] goods = new Goods[10];for (int i = 0; i < 10; i ++) {goods[i] = new Goods();goods[i].name = "a" + i;goods[i].price = 100 + random() * 100;}
// Arrays.sort(goods);
// System.out.println(Arrays.toString(goods));Arrays.sort(goods, new Comparator() {@Overridepublic int compare(Object o1, Object o2) {if (o1 instanceof Goods && o2 instanceof Goods) {Goods g1 = (Goods) o1;Goods g2 = (Goods) o2;if (g1.price > g2.price) {return 1;} else if(g1.price < g2.price) {return -1;} else {return 0;}}throw new ClassCastException();}});System.out.println(Arrays.toString(goods));}
}class Goods implements Comparable {public String name;public double price;public Goods(String name, double price) {this.name = name;this.price = price;}public Goods() {}@Overridepublic String toString() {return "Goods{" +"name='" + name + '\'' +", price=" + price +'}';}@Overridepublic int compareTo(Object o) {if (o instanceof Goods) {Goods good = (Goods)o;if (this.price > good.price) {return 1;} else if (this.price < good.price) {return -1;} else {return 0;}}throw new ClassCastException("类异常");}
}
- comparator类似c++中sort的Lambda表达式。
- comparable类似c++中struct中重载小于号。
6.System,Math,BigInteger,BigDecimal类
- BigInteger对应整型,BigDecimal对应浮点型。