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";