文章目錄
- 字符串相關的類
- String的特性
- String對象的創建
- 字符串相關的類
- String類與其他結構之間的轉換
- StringBuffer,StringBuilder
- StringBuffer類的常用方法
- JDK8之前日期時間API
- java.lang.System類
- java.util.Date類
- java.text.SimpleDateFormat類
- java.util.Calendar類
- JDK8中新日期時間API
- 新時間日期API
- LocalDate、LocalTime、LocalDateTime
- 常用方法
- Instant
- 格式化與解析日期或時間
- Java比較器
- 自然排序:java.lang.Comparable
字符串相關的類
String的特性
-
String:字符串,使用一對""引用起來表示
-
String聲明為final的,不可被繼承
-
String實現了Serializable接口:表示字符串是支持序列化的
實現了Comparable接口:表示String可以比較大小 -
String內部定義了final char[] value用于存儲字符串數據
-
String代表不可變的字符序列.簡稱:不可變性.
體現:1.當對字符串重新賦值時,需要重寫指定內存區域賦值,不能使用原有的value進行賦值2.當對現有的字符串進行連續操作時,也需要重新指定內存區域賦值,不能使用原有的value進行賦值3.當調用String的replace()方法修改指定字符或字符串時,也需要重新指定內存區域賦值
-
通過字面量的方式給一個字符串賦值,此時的字符串值聲明在字符串常量池中.
-
字符串常量池是不會存儲相同內容的字符串的
String對象的創建
- 方式一:通過字面量定義的方式:此時的s1和s2的數據javaEE聲明方法區中的字符串常量池中
String s1="javaEE";
String s2="javaEE";
- 方式二:通過new+構造器的方式:
String s3=new String("javaEE");
String s4=new String("javaEE");
字符串相關的類
-
int length():返回字符串的長度
-
char charAt(int index): 返回某索引處的字符
-
boolean isEmpty():判斷是否是空字符串
-
String toLowerCase():使用默認語言環境,將 String 中的所有字符轉換為小寫
-
String toUpperCase():使用默認語言環境,將 String 中的所有字符轉換為大寫
-
String trim():返回字符串的副本,忽略前導空白和尾部空白
-
boolean equals(Object obj):比較字符串的內容是否相同
-
boolean equalsIgnoreCase(String anotherString):與equals方法類似,忽略大小寫
-
String concat(String str):將指定字符串連接到此字符串的結尾。 等價于用“+”
-
int compareTo(String anotherString):比較兩個字符串的大小
-
String substring(int beginIndex):返回一個新的字符串,它是此字符串的從beginIndex開始截取到最后的一個子字符串。
-
String substring(int beginIndex, int endIndex) :返回一個新字符串,它是此字符串從beginIndex開始截取到endIndex(不包含)的一個子字符串
-
boolean endsWith(String suffix):測試此字符串是否以指定的后綴結束
-
boolean startsWith(String prefix):測試此字符串是否以指定的前綴開始
-
boolean contains(CharSequence s):當且僅當此字符串包含指定的 char 值序列時,返回 true
-
int indexOf(String str):返回指定子字符串在此字符串中第一次出現處的索引
-
int lastIndexOf(String str):返回指定子字符串在此字符串中最右邊出現處的索引
String類與其他結構之間的轉換
- String 與基本數據類型,包裝類之間的轉換.
@Testpublic void test1(){String str1="123";int num=Integer.parseInt(str1);String str2=String.valueOf(num);//123System.out.println(str2);String str3=num+"";System.out.println(str1==str3);}
- String 與char[]之間的轉換
@Testpublic void test2(){String str1="abc123";char[] charArray=str1.toCharArray();for(int i=0;i<charArray.length;i++){System.out.println(charArray[i]);}char[] arr=new char[]{'h','e','l','l','o'};String str2=new String(arr);System.out.println(str2);}
- String 與byte[]之間的轉換
@Testpublic void test3() throws UnsupportedEncodingException {String str1="abc123中國";byte[] bytes=str1.getBytes();//使用默認的字符集,進行轉換System.out.println(Arrays.toString(bytes));byte[] gbks=str1.getBytes("gbk");System.out.println(Arrays.toString(gbks));String str2=new String(bytes);//使用默認的字符集進行解碼System.out.println(str2);String str3=new String(gbks);System.out.println(str3);//出現亂碼.原因:編碼集和解碼集不一致String str4=new String(gbks,"gbk");System.out.println(str4);}
StringBuffer,StringBuilder
-
java.lang.StringBuffer代表可變的字符序列,JDK1.0中聲明,可以對字符串內容進行增刪,此時不會產生新的對象。
-
很多方法與String相同。
-
作為參數傳遞時,方法內部可以改變值。
-
StringBuffer類不同于String,其對象必須使用構造器生成。有三個構造器
- StringBuffer():初始容量為16的字符串緩沖區
- StringBuffer(int size):構造指定容量的字符串緩沖區
- StringBuffer(String str):將內容初始化為指定字符串內容
-
String,StringBuffer,StringBuilder三者異同
String:不可變的字符序列:底層使用char[]存儲
StringBuffer:可變的字符序列:線程安全的,效率低:底層使用char[]存儲
StringBuilder:可變的字符序列:JDK5.0新增的,線程不安全的,效率高:底層使用char[]存儲
StringBuffer類的常用方法
- StringBuffer append(xxx):提供了很多的append()方法,用于進行字符串拼接
- StringBuffer delete(int start,int end):刪除指定位置的內容
- StringBuffer replace(int start, int end, Stringstr):把[start,end)位置替換為str
- StringBuffer insert(int offset, xxx):在指定位置插入xxx
- StringBuffer reverse() :把當前字符序列逆轉
- public int indexOf(String str)
- public String substring(int start,intend):返回一個從start開始到end索引結束的左閉右開區間的子字符串
- public int length()
- public char charAt(int n )
- public void setCharAt(int n ,char ch)
總結:
增:append(xxx)
刪:delete(int start,int end)
改:setCharAt(int n ,char ch) /replace(int start, int end, String str)
查:charAt(int n )
插:insert(int offset, xxx):在指定位置插入xxx
長度:length()
遍歷:for +charAT()
JDK8之前日期時間API
java.lang.System類
- System類提供的public staticlongcurrentTimeMillis()用來返回當前時間與1970年1月1日0時0分0秒之間以毫秒為單位的時間差。
- 此方法適于計算時間差。
- 計算世界時間的主要標準有:
UTC(Coordinated Universal Time)
GMT(Greenwich Mean Time)
CST(Central Standard Time)
java.util.Date類
- 表示特定的瞬間,精確到毫秒
- 構造器
- Date():使用無參構造器創建的對象可以獲取本地當前時間。
- Date(long date)
- 常用方法
- getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以來此 Date 對象表示的毫秒數。
- toString():把此 Date 對象轉換為以下形式的 String: dow mon ddhh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat),zzz是時間標準。
java.text.SimpleDateFormat類
- Date類的API不易于國際化,大部分被廢棄了,java.text.SimpleDateFormat類是一個不與語言環境有關的方式來格式化和解析日期的具體類。
- 它允許進行格式化:日期->文本、解析:文本->日期
- 格式化:
- SimpleDateFormat() :默認的模式和語言環境創建對象
- public SimpleDateFormat(String pattern):該構造方法可以用參數pattern指定的格式創建一個對象,該對象調用
- public String format(Date date):方法格式化時間對象date
- 解析
- public Date parse(String source):從給定字符串的開始解析文本,以生成一個日期。
@Testpublic void test() throws ParseException {//實例化SimpleDateFarmatSimpleDateFormat sdf = new SimpleDateFormat();//實例化:日期--->字符串Date date=new Date();String format=sdf.format(date);System.out.println(format);//解析:格式化的逆過程,字符串--->日期String str="2025/7/16 18:07";sdf.parse(str);Date date1=sdf.parse(str);System.out.println(date1);System.out.println();SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//格式化String format1=sdf.format(date);System.out.println(format1);//解析Date date2=sdf.parse("2025/7/16 18:10");System.out.println(date2);}
java.util.Calendar類
- Calendar是一個抽象基類,主用用于完成日期字段之間相互操作的功能。
- 獲取Calendar實例的方法
- 使用**Calendar.getInstance()**方法
- 調用它的子類GregorianCalendar的構造器。
- 一個Calendar的實例是系統時間的抽象表示,通過get(int field)方法來取得想要的時間信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、MINUTE、SECOND
- public void set(int field,int value)
- public void add(int field,int amount)
- public final Date getTime()
- public final void setTime(Date date)
JDK8中新日期時間API
新時間日期API
- java.time – 包含值對象的基礎包
- java.time.chrono – 提供對不同的日歷系統的訪問
- java.time.format – 格式化和解析時間和日期
- java.time.temporal – 包括底層框架和擴展特性
- java.time.zone – 包含時區支持的類
LocalDate、LocalTime、LocalDateTime
- LocalDate、LocalTime、LocalDateTime 類是其中較重要的幾個類,它們的實例是不可變的對象
- LocalDate代表IOS格式(yyyy-MM-dd)的日期,可以存儲 生日、紀念日等日期
- LocalTime表示一個時間,而不是日期
- LocalDateTime是用來表示日期和時間的,這是一個最常用的類之一
常用方法
- noew():獲取當前的日期,時間,日期+時間
- of():設置指定的年,月,日,時,分,秒,沒有偏移量
- getXxx():獲取相關的屬性
- withXxx():設置相關的屬性
- plus:向當前對象添加幾天、幾周、幾個月、幾年、幾小時
- minus:從當前對象減去幾月、幾周、幾天、幾年、幾小時
Instant
- Instant:時間線上的一個瞬時點。 這可能被用來記錄應用程序中的事件時間戳。
格式化與解析日期或時間
- java.time.format.DateTimeFormatter 類:該類提供了三種格式化方法
- 預定義的標準格式。如:ISO_LOCAL_DATE_TIME;ISO_LOCAL_DATE;ISO_LOCAL_TIME
- 本地化相關的格式。如:ofLocalizedDateTime(FormatStyle.LONG)
- 自定義的格式。如:ofPattern(“yyyy-MM-dd hh:mm:ss”)
Java比較器
自然排序:java.lang.Comparable
- 像String,包裝類等實現類Comparable接口,重寫了Comparable()方法給出了比較兩個對象大小
- 像String,包裝類重寫了compareTo()方法以后,進行了從小到大的排序
- 重寫了compareTo()的規則:
- 如果當前的對象this大于形參對象obj,則返回正整數.
- 如果當前的對象this小于形參對象obj,則返回負整數.
- 如果當前的對象this等于形參對象obj,則返回零.
- 對于自定義類來說,如果需要排序,我們可以讓自定義類實現Comparable接口,重compareTo(obj)方法,在comparableTo(obj)方法中指定如何排序