Java常用类
常用类
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() {
@Override
public 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() {}
@Override
public String toString() {
return "Goods{" +
"name='" + name + '\'' +
", price=" + price +
'}';
}
@Override
public 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对应浮点型。