这次把跟着视频敲的一点点代码放到了github上(使用idea):
里面有java的代码和awt的代码
目录:
Table of Contents
3.String类
String常用方法:
String和基本数据类型,包装类的转换
4.StringBuffer和StringBuilder
1.和String的区别:
2.StringBuffer
5.时间API
JDK8.0之前的API
SimpleDateFormat:写一定格式的时间
Calender类
JDK8中的新时间API
java.time
instant
DateTimeFormatter
3.String类
String是一个final类,代表不可变的字符序列,无法继承!
String实现了Serializable接口,表示字符串是支持序列化的。
String实现了Comparable接口,可以比较大小
String.intern()强制把返回值在常量池中生成。
一个例题:
String常用方法:
System.out.println(s3.compareTo(s4));//用于比较字符串大小(通过ascii比较),大于的为正,小于为负,相等为0,常用于排序(例如通讯录)
String和基本数据类型,包装类的转换
String-->基本数据类型|包装类:使用静态方法:parseXxx(str)
基本数据类型|包装类:使用静态方法-->String:调用String重载的valueOf(xxx)
String-->char[]:String.toCharArray()
char[]-->String:调用String构造器
String-->byte[]:调用String的getBytes()
byte[]-->String:
小练习代码:
package com.lzy.stringlearn;
import org.junit.Test;
/**
* @author: lzy
* @description: String学习
* @date: 2020-09-05-21:25
*/
public class StringTest {
public void change(String str){
str="just so so";
}
public String change1(String str){
str="just so so 1";
return str;
}
@Test
public void test1(){
String s1="hello world";
String s2=new String("good");
s2="bad";
s1="world hello";
System.out.println(s1);
System.out.println(s2);
change(s2);
System.out.println(s2);//bad
String s3=change1(s2);
System.out.println(s3);//just so so 1
System.out.println(s3==s2);//false
}
}
4.StringBuffer和StringBuilder
1.和String的区别:
String不可变,使用char[]数组
StringBuffer:可变,线程安全,效率低,多线程用。使用char[]数组存储
StringBuilder:可变,线程不安全,效率高,jdk5.0新增,使用char[]数组存储
2.StringBuffer
StringBuffer默认为有16位的char[]数组,当然char[]长度和StringBuffer.length()是完全不一样的。如果StringBuffer需要扩容,底层会扩容成原来的两倍+2。
所以开发中建议使用:StringBuffer中的StringBuffer(int)构造器,直接确认String长度。
substring:返回一个从start开始到end索引结束的左臂右开区间的子字符串
小练习代码:
package com.lzy.stringlearn;
import org.junit.Test;
/**
* @author: lzy
* @description: compare String StringBuffer and StringBuilder
* @date: 2020-09-06-11:31
*/
public class StringBufferBuilderTest {
@Test
public void test()
{
StringBuffer sb1=new StringBuffer("abc");
sb1.setCharAt(0,'m');//这个会直接改变String
System.out.println(sb1);
}
}
5.时间API
JDK8.0之前的API
可以生成一个时间戳
2.其他常用的构造器和方法:
package com.lzy.datalearn;
import org.junit.Test;
import java.util.Date;
/**
* @author: lzy
* @description: 日期相关api测试
* @date: 2020-09-07-7:58
*/
public class DataTimeTest {
/*java.util.Date类
* |--java.sql.Date类
*
* 1.两个构造器的使用
* 构造器1:Date() 创建一个对应当前时间的Date对象
* 构造器2:创建指定毫秒数的Date对象
* 2.两个方法的使用欧冠
* toString():显示当前年月日
* getTime():获取当前date时间戳
* 3.java.sql.Date对应数据库中的日期类型对象
* 》如何实例化
* 》把util.Date对象转换成java.sql.Date对象
* */
@Test
public void test1(){
//构造器1:Date() 创建一个对应当前时间的Date对象
Date date = new Date();
System.out.println(date.toString());
System.out.println(date.getTime());
//构造器2:创建指定毫秒数的Date对象
Date date2=new Date(123123421342135L);
System.out.println(date2.toString());
//创建java.sql.Date对象
java.sql.Date date3=new java.sql.Date(128397541092537L);
System.out.println(date3);// 6038-10-0
//转换
//情况1:多态
Date date4=new java.sql.Date(234789L);
java.sql.Date date5=(java.sql.Date) date4;
//情况2:
Date date6=new Date();
//java.sql.Date date7=(java.sql.Date)date6;new一个父类不能强制转换成子类
java.sql.Date date7=new java.sql.Date(date6.getTime());
}
}
SimpleDateFormat:写一定格式的时间
调用SimpleDateFormat构造器可以直接生成对应格式的时间:
例如:
package com.lzy.datalearn;
import org.junit.Test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author: lzy
* @description:
* @date: 2020-09-07-9:28
*/
public class DateTimeTest1 {
//SimpleDateFormat对日期Date类的格式化和解析
//SimpleDateFormat实例化
@Test
public void test() throws ParseException {
//实例化
SimpleDateFormat sdf = new SimpleDateFormat();
//格式化:日期->字符串
Date date = new Date();
String format=sdf.format(date);
System.out.println(format);
//解析:字符串->日期
String str="20-9-7 上午9:33";
Date date1=sdf.parse(str);
System.out.println(date1);
//指定格式的日期:通过带参数的构造器
SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//格式化
String format1=sdf1.format(date);
System.out.println(format1);
//解析
Date date2=sdf1.parse("2020-09-07 09:41:25");
System.out.println(date1);
}
}
如何把一定格式时间转换成sql使用的时间举例:
//把指定格式的字符串转换成java.sql./Date格式
@Test
public void test1() throws ParseException {
String d="2020-09-07";
//首先需要使用到SimpleDateFormat对象,使用带参数的构造器
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
//解析这个时间并且把它赋值给一个Date类型对象
Date date=sdf.parse(d);
//然后把这个Date类型转换成java.sql.Date类型,需要使用getTime()
java.sql.Date date1=new java.sql.Date(date.getTime());
System.out.println("***************************");
System.out.println(date1);
}
Calender类
JDK8中的新时间API
java.time
此时是localDate是不可变的。修改后需要新的对象承接。
instant
DateTimeFormatter
这个类似于SimpleDateFormat
自定义方式用的更多: