String
字符串从出生到死亡都是不能改变的
双引号括起来的字符串放在字符串常量池是为了提高执行效率
String s = new String("caohao");
//在堆中创建对象并且指向字符串常量池的"caohao"
垃圾回收器是不会释放常量池的
String类重写了equals(),所以对于字符串内容是否相等的比较可以直接调用equal
public class Test{
public static void main(String[] args){
String a = new String("caohao");
String b = new String("caohao");
System.out.println(a.equals(b));
}
}
以上代码一共是创建了3个对象——1个字符串常量池对象2个堆String对象
StringBuffer
在实际开发中我们会遇到频繁拼接字符串的情况,如果使用String的话,每一次拼接都要产生新的字符串,不仅占用内存空间,而且效率低下
我们一般会选择使用StringBuffer和StringBuilder
*
- StringBuffer(线程安全的)
- 初识容量是16
- StringBuffer的底层是byte[],String的底层也是byte[],但是是被final修饰的
- StringBuffer中使用append()可以进行字符串的添加
StringBuffer sb1 = new StringBuffer();
System.out.println(sb1.capacity());
StringBuffer sb2 = new StringBuffer(32);
sb2.append("caohao");
sb2.append("lanyangyang");
System.out.println(sb2.substring());
StringBuffer sb3 = new StringBuffer("java");
sb3.reverse();
System.out.println(sb3);
StringBuilder的初始容量也是16
尽量在创建StringBuilder的时候给定一个初始容量,减少底层数组扩容的次数
SimpleDateFormat
import java.util.Date;
import java.text.SimpleDateFormat;
class Test
{
public static void main(String[] args){
Date nowTime=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(nowTime));
}
} //Date--->String
SimpleDateFormat用来专门格式化日期
String time="2022-12-30 16:08:08";
SimpleDateFormate sdf=new SimpleDateFormate("yyyy-MM-dd hh:MM:ss");
Date d=sdf.parse(time);
//String ---> Date
将字符串转化成对应的Date对象
Date d=new Date(System.currentTimeMillis());
// 毫秒 ---> Date
Random
随机数对象用来创建一个随机数
Random random=new Random();
int num=random.nextInt();
System.out.println(num);
Enum
当可能性在两个之上,boolean类型无法再满足需求,我们就需要使用枚举类型
*
- 枚举编译生成的也是.class文件
- 枚举是一种引用数据类型
- 枚举中的每个值都可以看成是常量
class Test{
public static Result division(int a,int b){
try{
int c=a/b;
return Result.SUCCESS;
}catch(Exception e){
return Result.FAIL;
}
}
}
enum Result{
SUCCESS,FAIL
}