- 相關推薦
Java中日期與字符串的處理
Java是一種可以撰寫跨平臺應用軟件的面向對象的程序設計語言,下面為大家介紹一下Java中日期與字符串的處理,一起來看看!
日期相關的API
java.util.Date 類,是一個日期類,含年、月、日、時、分、秒信息。
構造方法:
public Date(); 空參構造,得到當前系統(tǒng)時間的日期。
public Date(long date); //根據指定的毫秒數(shù)來構造一個日期。
java.util.Calendar 類,是一個日歷類。它包含 日期的所有信息.
方法:
public static Calendar getInstance();
public int get(int field);
public void set(int field, int value);
public void setTime(Date date);
public Date getTime();
還有大量的常量,這些常量就是 field的值.
YEAR,MONTH, DATE,DAY_OF_MONTH, DAY_OF_WEEK. ....
java.text.SimpleDateFormat類,日期格式器類[上一講提到過]
構造方法:
public SimpleDateFormat(String pattern).
注:pattern是指格式化日期的字符串。
yyyy 代全4位數(shù)字年份
MM 代表2位數(shù)字月份
dd 代表2位數(shù)字月日
...
有關pattern的細節(jié),可以查看API文檔。
如,我們可以構造一個SimpleDateFormate對象.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
常用方法:
public String format(Date date); //格式化日期.
public Date parse(String dateStr); //把字符串轉成日期
在JAVA中,時間就指至1970年1月1日午夜至現(xiàn)在所經過的毫秒數(shù).它是一個長整型的數(shù)。
如何獲取這個長整型?
long t = System.currentTimeMillils();
針對日期的操作,可以封裝一個工具類,用來創(chuàng)建日期、格式化日期或是解析日期字符串等。
如:
public class DateUtil{
public static Date create(int y,int m, int d){
return create(y,m,d,0,0,0);
}
public static Date create(int y,int m, int d, int h, int minute,int second){
//創(chuàng)建日歷對象
Calendar c = Calendar.getInstance();
//綁定全新日期與時間
c.set(Calendar.Year,y);
...
c.set(Calendar.SECOND, second);
//返回一個日期
return c.getTime();
}
public static String format(Date d){
final String pattern = "yyyy-MM-dd";
return format(d,pattern);
}
public static String format(Date d, String pattern){
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(d);
}
...
}
String類的特點:
a).它是不可變的,一旦創(chuàng)建好,就不可再變。
b).底層就是字符數(shù)組.
c).由于字符串是編程中操作最頻繁的數(shù)據,所以,JVM針對字符串做了優(yōu)化處理。提供了 “串池”,如下: ["串池" 也是堆空間。]
創(chuàng)建字符串的2種方式:
方式一: 采用“串池”存放.
String str = "Jack";
String str2 = "Jack";
因為創(chuàng)建第一個str時,由于串池中沒有"Jack"這個字符串,所以,在串池中創(chuàng)建了Jack,而當?shù)诙䝼對象str2創(chuàng)建時,此時,串池是已經有了Jack,所以,直接返回Jack的地址給str2.這樣的話,串池中只有1個Jack. 大大降低資源的占有率,從而提高效率。
所以:
System.out.println(str == str2); //此時會輸出 true
方式二:
String str = new String("Jack");
String str2 = new String("Jack");
以上方式采用new操作符,會在堆空間中申請2塊空間,來分別存放Jack 數(shù)據。所以:
System.out.println(str == str2); //此時會輸出 false
所以,建議創(chuàng)建字符串對象時,都采用方式一(串池的方式)
String str = "Hello";
str = str + "World"; //會產生臨時對象,占用更多的空間(資源)
為了改進字符串拼接效率較低的情況,API中提供了StringBuilder 和 StringBuffer 兩個來做字符串的拼接操作。它們的效是非常高的。
java.lang.StringBuilder
構造方法:
public StringBuilder();
public StringBuilder(String str);
其它方法:
public StringBuilder append(String str);
public String toString();
StringBuilder與StringBuffer的區(qū)別:
StringBuffer是多線程安全的,是重量級的。
StringBuilder不是線程安全的,是輕量級的。
所以,在非多線程環(huán)境下,使用StringBuilder。
字符串類型相關類與接口:
接口:java.lang.CharSequence
方法:
charAt(int index);
int length();
String toString();
實現(xiàn)類:
java.lang.String
java.lang.StringBuilder
java.lang.StringBuffer
String相關操作方法:
查詢字符序列的方法:
indexOf(String str);
indexOf(String str, int fromIndex);
lastIndexOf(String str);
lastIndexOf(String str, int fromIndex);
startsWith(String str);
endsWith(String str);
contains(String str);
求子串的方法:
subString(int start, int end); 含start,不含end
subString(int start); //從start至結尾
其它方法
concat(String str);
trim(); //去掉前后的空白字符
isEmpty(); 當length()方法0時,為true
replace(String oldStr,String newStr);
replace(char oldChar, char newChar);
split(String pattern); //把字符串按給定的字符切割。
getBytes(); //把字符串 編碼 成字節(jié)數(shù)組
toCharArray(); //把字符串轉換成新的字符數(shù)組
【Java中日期與字符串的處理】相關文章:
Java編程中異常處理的方法12-16
全面理解java中的異常處理機制精選04-02
java日期時間基本操作方法04-04
C語言之字符串處理函數(shù)04-01
Java常用字符串反轉的五種方案12-02
java圖片處理功能介紹12-09
java如何處理BOM文本03-17