字符串
String
特性
- 声明为final,不可继承
- 实现了Serializable接口,可序列化
- 实现了Comparable接口,可比较大小
- 不可变的字符序列
String s1 = "abc"; //字面量定义方式,定义在字符串常量池当中
String s2 = "abc";
String s3 = new String("abc");
System.out.printf(s1 == s2);//true
System.out.printf(s1 == s3);//false
s2+="def";
System.out.println(s1.equals(s2));//false
测试
String s1 = "abc";
String s2 = "def";
String s3 = "abcdef";
String s4 = "abc" + "def";
String s5 = s1 + "def";
String s6 = "abc" + s2;
String s7 = s1 + s2;
String s8 = s7.intern();
System.out.println(s3 == s4);//true
System.out.println(s3 == s5);//false
System.out.println(s3 == s6);//false
System.out.println(s3 == s7);//false
System.out.println(s5 == s6);//false
System.out.println(s6 == s7);//false
System.out.println(s3 == s8);//true
/*
总结:
1. 常量与常量拼接,结果在常量池
2. 只要其中有一个变量,结果就在堆中
3. 调用intern方法,其返回值存放在常量池
*/
public class StringTest {
private String s1 = new String("123");
public void change(String str){
str="abc";
}
public static void main(String[] args) {
StringTest stringTest = new StringTest();
System.out.println(stringTest.s1);//123
stringTest.change(stringTest.s1);
System.out.println(stringTest.s1);//123
}
}
StringBuffer与StringBuilder
StringBuffer:线程安全的可变序列
StringBuilder:线程不安全的可变序列
日期与时间
时间戳
System.currentTimeMillis():1970年1月1日0分0秒到现在的毫秒数
JDK8之前
java.util.Date类和子类java.sql.Date类
java.text.SimpleDataFormat类:对日期Data类的格式化和解析
java.util.Calendar类和子类GreagorianCalendar
JDK8新增
java.time
java.time.chrono
java.time.format
java.time.temporal
java.time.zone
Java比较器
Comparable接口
重写CompareTo方法
- this大于形参,返回正
- this小于形参,返回负
- this等于形参,返回0
Comparator接口
重写Compara方法
- 形参1大于形参2,返回正
- 形参1小于形参2,返回负
- 形参1等于形参2,返回0
其他类
System
Math
BigInteger和BigDecimal
网友评论