第九章 String与字符数组、字节数组转换,StringBuffer,StringBuilder,日期时间API(jdk8以前)
1.String与字符数组转换
字符串—>字符数组:调用String的toCharArray()。
字符数组 —> 字符串:调用String的构造器。
public void test(){
String s1="abc123";
char[] charArray=s1.toCharArray();
for (int i = 0; i <charArray.length ; i++) {
System.out.println(charArray[i]);
}
char[] arr=new char[]{'a','b','c','1','2','3'};
String s2=new String(arr);
System.out.println(s2);
}
2.String与字节数组转换
字符串 —>字节数组:调用String的getBytes()。
字节数组—>字符串:调用String的构造器。
public void test1() {
String str1="abc123";
byte[] bytes=str1.getBytes();
System.out.println(Arrays.toString(bytes));
byte [] arr1=new byte[]{97,98,99,100,101};
String str2=new String(arr1);
System.out.println(str2);
}
3.String,StringBuffer,StringBuilder的异同?
String:不可变的字符序列,底层使用char[]数组存储。
StringBuffer:可变的字符序列,线程安全的,效率低,底层使用char[]数组存储。
StringBuilder:可变的字符序列,线程不安全的,效率高,底层使用char[]数组存储。
4.StringBuffer常用方法
- StringBuffer append(xxx):提供了很多的append()方法,用于进行字符串拼接。
- StringBuffer delete(int start,int end):删除指定位置的内容。
- StringBuffer replace(int start, int end, String str):把[start,end)位置替换为str。
- StringBuffer insert(int offset, xxx):在指定位置插入xxx。
- StringBuffer reverse() :把当前字符序列逆转。
①总结:增:append,删:delete,改:setCharAt,查:charAt,长度:length,遍历:for()。
②效率从高到底:StringBuilder>StringBuffer>String
public void test(){
StringBuffer s1=new StringBuffer("abc");
s1.append(2);
s1.append('2');
System.out.println(s1);
// s1.delete(2,4);
// System.out.println(s1);
s1.replace(2,4,"hello");
System.out.println(s1);
s1.insert(2,"xian");
System.out.println(s1);
s1.reverse();
System.out.println(s1);
}
5.JDK8之前日期时间API
①System类中 的currentTimeMillis()
②java.util.Date类
①两个构造器的使用:
构造器一:创建一个对应当前时间的Date对象;
构造器二:创建指定毫秒数的Date对象
②两个方法的使用:
toString():显示当前的年月日时分秒
getTime():获取当前Date对象对应的毫秒数(时间戳)
③如何将java.util.Date对象转化为java.sql.Date对象?
java.sql.Date:对应着数据库中日期类型的变量
1. Date d1=new java.sql.Date(1663505883068L);
java.sql.Date d2=(java.sql.Date)d1;
2. Date d3=new Date();
java.sql.Date d4=new java.sql.Date(d3.getTime());
public void test1(){
//①返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差
long time=System.currentTimeMillis();
System.out.println(time);//1663505642641
//构造器一:创建一个对应当前时间的Date对象
Date date1=new Date();
System.out.println(date1.toString());//Sun Sep 18 20:54:02 CST 2022
System.out.println(date1.getTime());//1663505642641
//构造器二:创建指定毫秒数的Date对象
Date date2=new Date(1663505642641L);
System.out.println(date2.toString());
java.sql.Date date3=new java.sql.Date(1663505883068L);
System.out.println(date3);//2022-09-18
//如何将java.util.Date对象转化为java.sql.Date对象?
//①
Date d1=new java.sql.Date(1663505883068L);
java.sql.Date d2=(java.sql.Date)d1;
//②
Date d3=new Date();
java.sql.Date d4=new java.sql.Date(d3.getTime());
}