StringBuffer是一個可變的字符序列。
StringBuffer底層實際上是一個動態的字符數組。
StringBuffer是一個線程安全的類。
StringBuffer的效率要高於String
2.StringBuilder字符串
StringBuilder是一個線程不安全的字符串類,和StringBuffer操作基本一致。
JDK5.0新增的
例:
public class Test5 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
StringBuffer buffer=new StringBuffer();
buffer.append("zhangsan");
buffer.append("lisi");
buffer.append("wangwu");
System.out.println(buffer);
System.out.println(buffer.insert(0, "zhaoliu"));
System.out.println(buffer.length());
buffer.setCharAt(0, 'y');
System.out.println(buffer.toString());
System.out.println(buffer.reverse());
System.out.println(buffer.delete(0, 5));
System.out.println(buffer.deleteCharAt(0));
System.out.println(buffer.replace(0, 4, "wang"));
System.out.println(buffer.substring(4));
}
}
3.日期時間相關類
1) java.lang.System類:
a) public static long currentTimeMillis() 獲取從1970-01-01 00:00:00 到當前時刻的時間毫秒值b) public static long nanoTime() 返回最準確的可用系統計時器的當前值,以毫微秒爲單位
例:/**
* @author lw
* System 類
*/
public class Test6 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
long start=System.currentTimeMillis();
for(int i=0;i<100000;i++){
}
long end=System.currentTimeMillis();
System.out.println(end-start);
}
}
2) java.util.Date類: 特定的瞬間,精確到毫秒。
a) 創建:new Date(); new Date(long date);
b) 方法:long getTime();
String toString();
例:
import java.util.Date;
/**
* @author wx
* Date 日期類
*/
public class Test7 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Date date=new Date();
System.out.println(date.toString());
System.out.println(date.getYear());
System.out.println(date.getMonth());
System.out.println(date.getDay());
System.out.println(date.getHours());
System.out.println(date.getMinutes());
System.out.println(date.getSeconds());
Date date1=new Date(63476L);
System.out.println(date1.toString());
}
}
a) 日期和時間模式字符串:y年 M月 d日 H時 m分 s秒 S毫秒 E星期 z時區
b) 創建:new SimpleDateFormat(); 使用默認的模式和默認語言環境的日期格式符號來創建格式化器對象
new SimpleDateFormat(String pattern); 創建指定的模式串創建格式化器對象
c) 方法:String format(java.util.Date date); //把date對象用指定的模式串格式化成字符串
Date parse(String source) throws ParseException; //把字符串用指定的模式串解析成Date對象
例:
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author wx
* SimpleDateFormat 日期格式化類
*/
public class Test8 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss w W D F E Z z");
Date date=new Date();
String str=format.format(date);
System.out.println(str);
}
}
a) 創建: Calendar.getInstance(); //使用默認時區和語言環境獲得一個日曆
new GregorianCalendar();
b) 日曆字段常量: YEAR MONTH DATE HOUR MINUTE SECOND
c) 方法:int get(int field); //返回給定日曆字段的值。
更改日曆字段: void set(int field, int value); //將給定的日曆字段設置爲給定值。
add(int field, int amount); //根據日曆的規則,爲給定的日曆字段添加或減去指定的時間量
d) 與java.util.Date的相互轉換:
i) C --> D : Calendar提供的getTime()方法
ii) D --> C: Calendar cal = Calendar.getInstance(); cal.setTime(Date date);
例:
import java.math.BigDecimal;
import java.util.Calendar;
/**
* @author wx
* Calendar 日曆類
*/
public class Test9 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Calendar c=Calendar.getInstance();
//c.set(Calendar.YEAR, 2015);
//Calendar c1=new GregorianCalendar();
System.out.println(c.get(Calendar.YEAR));
System.out.println(c.get(Calendar.MONTH));
System.out.println(c.get(Calendar.DATE));
System.out.println(c.get(Calendar.DAY_OF_MONTH));
System.out.println(c.get(Calendar.DAY_OF_WEEK));
System.out.println(c.get(Calendar.DAY_OF_WEEK_IN_MONTH));
System.out.println(c.get(Calendar.HOUR));
System.out.println(c.get(Calendar.MINUTE));
System.out.println(c.get(Calendar.SECOND));
c.add(Calendar.MONTH, -2);
System.out.println(c.get(Calendar.MONTH));
System.out.println(c.getTime());
System.out.println(c.getTimeInMillis());
}
}
例:
import java.math.BigInteger;
/**
* @author wx
* 整數大數字操作類 BigInteger
*/
public class Test10 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str1="666666666666666666666666666";
String str2="88888888888888";
BigInteger bd1=new BigInteger(str1);
BigInteger bd2=new BigInteger(str2);
System.out.println("加法:"+bd1.add(bd2));
System.out.println("乘法:"+bd1.multiply(bd2));
System.out.println("減法:"+bd1.subtract(bd2));
System.out.println("除法:"+bd1.divide(bd2));
System.out.println("模運算:"+bd1.remainder(bd2));
BigInteger[]b=bd1.divideAndRemainder(bd2);
for(BigInteger a:b){
System.out.println(a);
}
}
}
例:
import java.math.BigDecimal;
/**
* @author wx
* 大數字 浮點數操作類BigDecimal
* http://www.360doc.com/content/10/0303/19/59141_17459593.shtml
*/
public class Test11 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str1="666666666666666666666666666.66666666666666666";
String str2="88888888888888.8888888888888888888888888";
BigDecimal bd1=new BigDecimal(str1);
BigDecimal bd2=new BigDecimal(str2);
System.out.println("加:"+bd1.add(bd2));
System.out.println("減:"+bd1.subtract(bd2));
System.out.println("乘:"+bd1.multiply(bd2));
System.out.println("除:"+bd1.divide(bd2,7,BigDecimal.ROUND_HALF_UP));
double d=1.0;
float f=0.1f;
System.out.println(d-f);
BigDecimal bd3=new BigDecimal("1.0");
BigDecimal bd4=new BigDecimal("0.1");
System.out.println(bd3.subtract(bd4));
}
}
作業:
1. Calendar類的使用:封裝以下功能的幾個方法。請通過Calendar類的操作獲得
1) 昨天的日期 (假設當前日期是 2008年04月28日,則昨天是2008年04月27日)
2) 本週的第一天 (2008年04月27日)
3) 上週的第一天 (2008年04月20日)
4) 本月的第一天 (2008年04月01日)
5) 上月的第一天 (2008年03月01日)
例:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* @author wx
*
*/
public class Test4 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Calendar calendar = Calendar.getInstance();
String str="2008年04月28日";
SimpleDateFormat formater = new SimpleDateFormat("yyyy年MM月dd日");
Date currentDate = null;
try {
currentDate=formater.parse(str);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
calendar.setTime(currentDate);
System.out.println("今天的日期是" + formater.format(currentDate));
//昨天
calendar.add(Calendar.DATE, -1);
Date yesterdayDate = calendar.getTime();
System.out.println("昨天的日期是" + formater.format(yesterdayDate));
//本週第一天
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
calendar.add(Calendar.DATE, -dayOfWeek + 1);
Date weekStartDate = calendar.getTime();
System.out.println("本週的第一天是" + formater.format(weekStartDate));
//上週的第一天
calendar.add(Calendar.WEEK_OF_MONTH, -1);
Date preWeekStart = calendar.getTime();
System.out.println("上週的第一天是" + formater.format(preWeekStart));
//本月的第一天
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
calendar.add(Calendar.DATE, -dayOfMonth + 1);
Date monthStart = calendar.getTime();
System.out.println("本月的第一天是" + formater.format(monthStart));
//上月的第一天
calendar.add(Calendar.MONTH, -1);
Date preMonthStart = calendar.getTime();
System.out.println("上月的第一天是" + formater.format(preMonthStart));
}
}
2.計算兩個時間相差的天數,小時數,分鐘數,秒數;例如
String start="2004-01-02 11:30:24";
String end="2004-03-26 13:31:40";