可变字符串
StringBuffer
- 可变长字符串,JDK1.0提供,运行效率慢线程安全
StringBuilder
- 可变长字符串,JDK1.5提供,运行效率快,线程不安全,适合单线程
- StringBuilder比StringStringBuffer效率高比String效率更高
package LastCLass;
public class Class2 {
public static void main(String[] args) {
//开始时间
long start = System.currentTimeMillis();
/*String string = "";
for(int i = 0;i<99999;i++){
string+=i;
}
System.out.println(string);*/ //用时长
StringBuilder sb = new StringBuilder();
for (int i=0;i<99999;i++){
sb.append(i);
}
long end = System.currentTimeMillis();
System.out.println("用时:"+(end-start));//用时短
}
}
BigDecimal
public class Class3 {
public static void main(String[] args) {
double d1 = 1.0;
double d2 = 0.9;
System.out.println(d1-d2);
//面试题
double result = (1.4-0.5)/0.9;
System.out.println(result);
}
}
-
结果为:0.09999999999999998
0.9999999999999999
-
double存的是近似值
BigDecimal
-
精确计算浮点数
-
BigDecimal,大的浮点数的计算
package LastCLass;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Class3 {
public static void main(String[] args) {
double d1 = 1.0;
double d2 = 0.9;
System.out.println(d1-d2);
//面试题
double result = (1.4-0.5)/0.9;
System.out.println(result);
BigDecimal b1 = new BigDecimal("1.0");//给字符串会自动转换
BigDecimal b2 = new BigDecimal("0.9");
//减法
BigDecimal r1 = b1.subtract(b2);
System.out.println(r1);
//加法
BigDecimal r2 = b1.add(b2);
System.out.println(r2);
//乘法
BigDecimal r3 = b1.multiply(b2);
System.out.println(r3);
//除法
BigDecimal r4 = new BigDecimal("1.5")
.subtract(new BigDecimal("0.5"))
.divide(new BigDecimal("0.9" ));
System.out.println(r4);
BigDecimal r5 = new BigDecimal("10")
.divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP);
//ROUND_HALF_UP四舍五入
System.out.println(r5);
}
}
Date工具类
- Date表示特定的瞬间,精确到毫秒。Date类中的大部分方法已经被Calender类中的方法所取代
- 时间单位:1秒 = 1000毫秒
1毫秒 = 1000微秒
1微妙 = 1000纳秒
package LastCLass;
import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
import java.util.Date;
public class Class4 {
public static void main(String[] args) {
//1.创建Date对象
Date date1 = new Date();
System.out.println(date1.toString());
System.out.println(date1.toLocaleString());//过时方法
Date date2 = new Date(date1.getTime() - 60 * 60 * 24 * 1000);
System.out.println(date2.toLocaleString());
//2.方法after before
boolean b1 = date1.after(date2);
System.out.println(b1);
boolean b2 = date1.before(date2);
System.out.println(b2);
//3.比较 compareTo();
int d = date1.compareTo(date2);
System.out.println(d);
//4.比较是否相等equals()
boolean b3 = date1.equals(date2);
System.out.println(b3);
}
}
Calender
-
Calender提供了获取或设置各种日历字段的方法。
-
构造方法
- protected Calender() :由于修饰符是protected,所以无法直接创建对象。
-
其他方法
package LastCLass;
import java.util.Calendar;
import java.util.concurrent.Callable;
public class Class5 {
public static void main(String[] args) {
//1.创建Calender对象
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime().toLocaleString());
System.out.println(calendar.getTimeInMillis());
//2.获取时间信息
int year = calendar.get(Calendar.YEAR);
//月
int month = calendar.get(Calendar.MONTH);
//日
int day = calendar.get(Calendar.DAY_OF_MONTH);
//小时
int hour = calendar.get(Calendar.HOUR_OF_DAY);
//分钟
int minute = calendar.get(Calendar.MINUTE);
//秒
int second = calendar.get(Calendar.SECOND);
System.out.println(year + "年" + (month + 1) + "月" + day + "日" + hour + "时" + minute + "分" + second + "秒");
//3.修改时间
Calendar calendar2 = Calendar.getInstance();
calendar2.set(Calendar.DAY_OF_MONTH,5);
System.out.println(calendar2.getTime().toLocaleString());
//4.add,修改时间
calendar2.add(Calendar.HOUR,1);
System.out.println(calendar2.getTime().toLocaleString());
//补充方法
int max = calendar2.getActualMaximum(Calendar.DAY_OF_MONTH);//这个月的最大天数
int min = calendar2.getActualMinimum(Calendar.DAY_OF_MONTH);//最小天数
System.out.println("最大天数为:"+max+"最小天数为:"+min);
}
}
SimpleDateFormat
- SimpleDateFormat是一个以语言环境有关的方式来格式化和解析日期的具体类
- 进行格式化(日期–>文本)、解析(文本–>日期)。
- 常用的时间模式字母
package LastCLass;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Class6 {
public static void main(String[] args) {
//1.创建SimpleDateFormat对象 y 年 M 月
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
//2.创建Date
Date date = new Date();
//格式化date(把日期转成字符串)
String str = sdf.format(date);
System.out.println(str);
//解析(把字符串转成日期)
Date date2 = sdf.parse("2000-09-09");//Idea异常
System.out.println(date2);
}
}
System类
- System系统类,主要用于获取系统的属性数据和其他操作,构造方法私有的。
package LastCLass;
public class Class7 {
public static void main(String[] args) {
//arraycopy:数组的复制
//src:原数组
//srcPos:从哪个位置开始复制
//dest:目标数组
//destPos:目标数组的位置
//length:复制的长度
int[] arr = {20,18,15,9,15,6,98,4};
int[] dest = new int[8];
System.arraycopy(arr,0,dest,0,arr.length);
//从arr的第0个开始复制到dest的第0个,一共是arr。length个
for (int i = 0;i<=dest.length;i++){
System.out.println(dest[i]);
//arraycopy基于C语言比Arrays.copyOF效率更高
}
//System.gc();告诉垃圾回收器回收垃圾
Class7_Student s1 = new Class7_Student("aaa",19);
Class7_Student s2 = new Class7_Student("bbb",19);
Class7_Student s3 = new Class7_Student("ccc",19);
//正在使用,系统不回收
new Class7_Student("yyy",18);//系统回收,可能不会回收,由系统 决定
System.gc();//告诉垃圾回收器回收
}
}
lass7_Student("aaa",19);
Class7_Student s2 = new Class7_Student("bbb",19);
Class7_Student s3 = new Class7_Student("ccc",19);
//正在使用,系统不回收
new Class7_Student("yyy",18);//系统回收,可能不会回收,由系统 决定
System.gc();//告诉垃圾回收器回收
}
}