這次把跟着視訊敲的一點點代碼放到了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
自定義方式用的更多: