java.util.Date类,是一个日期类,含年、月、日、时、分、秒信息。
构造方法:publicDate();空参构造,得到当前系统时间的日期。
publicDate(longdate);//根据指定的毫秒数来构造一个日期。
java.util.Calendar类,是一个日历类。它包含日期的所有信息.
方法:
publicstaticCalendargetInstance();
publicintget(intfield);
publicvoidset(intfield,intvalue);
publicvoidsetTime(Datedate);
publicDategetTime();
还有大量的常量,这些常量就是field的值.
YEAR,MONTH,DATE,DAY_OF_MONTH,DAY_OF_WEEK.....
java.text.SimpleDateFormat类,日期格式器类[上一讲提到过]
构造方法:publicSimpleDateFormat(Stringpattern).
注:pattern是指格式化日期的字符串。
yyyy代全4位数字年份
MM 代表2位数字月份
dd 代表2位数字月日
...
有关pattern的细节,可以查看API文档。
如,我们可以构造一个SimpleDateFormate对象.
SimpleDateFormatsdf=newSimpleDateFormat("yyyy/MM/dd");
常用方法:publicStringformat(Datedate);//格式化日期.
publicDateparse(StringdateStr);//把字符串转成日期
在JAVA中,时间就指至年1月1日午夜至现在所经过的毫秒数.它是一个长整型的数。
如何获取这个长整型?longt=System.currentTimeMillils();
针对日期的操作,可以封装一个工具类,用来创建日期、格式化日期或是解析日期字符串等。
如:
publicclassDateUtil{
publicstaticDatecreate(inty,intm,intd){
returncreate(y,m,d,0,0,0);
}
publicstaticDatecreate(inty,intm,intd,inth,intminute,intsecond){
//创建日历对象
Calendarc=Calendar.getInstance();
//绑定全新日期与时间
c.set(Calendar.Year,y);
...
c.set(Calendar.SECOND,second);
//返回一个日期
returnc.getTime();
}
publicstaticStringformat(Dated){
finalStringpattern="yyyy-MM-dd";
returnformat(d,pattern);
}
publicstaticStringformat(Dated,Stringpattern){
SimpleDateFormatsdf=newSimpleDateFormat(pattern);
returnsdf.format(d);
}
...
}
String类的特点:a).它是不可变的,一旦创建好,就不可再变。
b).底层就是字符数组.
c).由于字符串是编程中操作最频繁的数据,所以,JVM针对字符串做了优化处理。提供了“串池”,如下:["串池"也是堆空间。]
创建字符串的2种方式:方式一:采用“串池”存放.
Stringstr="Jack";
Stringstr2="Jack";
因为创建第一个str时,由于串池中没有"Jack"这个字符串,所以,在串池中创建了Jack,而当第二个对象str2创建时,此时,串池是已经有了Jack,所以,直接返回Jack的地址给str2.这样的话,串池中只有1个Jack.大大降低资源的占有率,从而提高效率。
所以:
System.out.println(str==str2);//此时会输出true
方式二:
Stringstr=newString("Jack");
Stringstr2=newString("Jack");
以上方式采用new操作符,会在堆空间中申请2块空间,来分别存放Jack数据。所以:
System.out.println(str==str2);//此时会输出false
所以,建议创建字符串对象时,都采用方式一(串池的方式)
Stringstr="Hello";
str=str+"World";//会产生临时对象,占用更多的空间(资源)
为了改进字符串拼接效率较低的情况,API中提供了StringBuilder和StringBuffer两个来做字符串的拼接操作。它们的效是非常高的。
java.lang.StringBuilder
构造方法:
publicStringBuilder();
publicStringBuilder(Stringstr);
其它方法:
publicStringBuilderappend(Stringstr);
publicStringtoString();
StringBuilder与StringBuffer的区别:
StringBuffer是多线程安全的,是重量级的。
StringBuilder不是线程安全的,是轻量级的。
所以,在非多线程环境下,使用StringBuilder。
字符串类型相关类与接口:接口:java.lang.CharSequence
方法:
charAt(intindex);
intlength();
StringtoString();
实现类:
java.lang.String
java.lang.StringBuilder
java.lang.StringBuffer
中软高科
(长按上图,弹出“识别白癜风治疗要多少钱北京哪里白癜风哪间医院好