String案例演示,BigDecimal,Date类,Calendar类,SimpleDateFormat类,System类,总结
需求:
已知String str = “this is a text”;
- 将str中得单词单独或取出来
- 将str中得text替换为practice
- 在text前面插入一个easy
- 将每个单词得首字母改为大写
可变字符串
- StringBuffer:可变长字符串,JDK1.0提供,运行速率慢,线程安全,多线程
- StringBuilder:可变长字符串,JDK5.0提供,运行效率快,线程不安全,单线程
验证StringBuilder效率高于String
BigDecimal
思考:
public class TestBigDecimal {
public static void main(String[] args) {
double d1 = 1.0;
double d2 = 0.9;
System.out.println(d1-d2);
}
}
double存储的是近似值,精度不高
BigDecimal
位置:java.math包中。
作用:精确计算浮点数。
创建方式:bigDecimal bd = new BigDecimla(“1.0”);
方法:
BigDecimal add(BigDecimal bd) 加
BigDecimal subtract(BigDecimal bd) 减
BigDecimal multiply(BigDecimal bd) 乘
BigDecimal divide(BigDecimal bd) 除
除法:divide(BigDecimal bd,int scal,RoundingMode mode)
参数scal:指定精确小数点后几位。
参数mode:
指定小数部分的取舍模式,通常采用四舍五入的模式
取值为BigDecimal.ROUND_HALF_UP
package Third;
import java.math.BigDecimal;
public class TestBigDecimal {
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);
//double存储的是近似值,精度不高
//BigDecimal,大的浮点数精确计算
BigDecimal bd1 = new BigDecimal("1.0");
BigDecimal bd2= new BigDecimal("0.9");
//subtract 减法
BigDecimal r1 = bd1.subtract(bd2);
System.out.println(r1);
//加法
BigDecimal r2 = bd1.add(bd2);
System.out.println(r2);
//乘法
BigDecimal r3 = bd1.multiply(bd2);
System.out.println(r3);
//除法
BigDecimal r4 = new BigDecimal("1.4")
.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_UP);
System.out.println(r5);
//除不尽会报错,在divide方法后加入保留几位小数即可
//BigDecimal.ROUND_UP 采用四舍五入
}
}
Date
Date表示特定的瞬间,精确到毫秒。Date类中的大部分方法都已经被Calendar类中的方法所取代。
时间单位
1秒 = 1000毫秒
1毫秒 = 1000微秒
1微秒 = 1000纳秒
Calendar
Calendar提供了获取或设置各种日历字段的方法。
构造方法
protected Calendar():由于修饰符是protected,所以无法直接创建该对象。
SimpleDateFormat
SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类
进行格式化(日期->文本),解析(文本->日期)。
常用的时间模式字母
System类
System系统类,主要用于获取系统的属性数据和其他操作,构造方法私有的。静态的,不用创建对象,直接用System. 使用方法。(也就是说其他不是私有的类,都要先创建对象才能 . 使用咯???)
package Third;
import java.util.Arrays;
public class SystemDemo {
public static void main(String[] args) {
//arraycopy:数组的复制
//src:原数组
//srcPos:从哪个位置开始复制 0
//dest:目标数组
//destPos:目标数组的位置
//length:复制的长度
int[] arr = {20, 18, 15, 8, 35, 26, 45, 90};
int[] dest = new int[8];
System.arraycopy(arr, 4, dest, 0, 4);
//复制目标数组arr,从第4个开始复制,复制到目标数组的 0(下标),复制长度4(个)
for (int i = 0; i < dest.length; i++) {
System.out.println(dest[i]);
}
//Arrays.copyOf()与System.arraycopy();后者是本地方法,效率更高
System.out.println(System.currentTimeMillis());
System.out.println("========================");
long start = System.currentTimeMillis();
int result = 0;
for (int i = -999999999; i < 999999999; i++) {
for (int j = -999999999; j < 999999999; j++) {
result = i + j;
}
}
//2.获取毫秒数
System.out.println(result);
long end = System.currentTimeMillis();
System.out.println("用时:" + (end - start));
//1970到走完这段代码的毫秒 - 1970到开始这段代码的毫秒
System.out.println("========================");
//垃圾回收
new Student("aaa",19);
new Student("bbb",19);
Student s3 = new Student("ccc",19);
System.gc();//System.gc();告诉垃圾回收器回收
//4.退出jvm
System.exit(0);
System.out.println("程序结束了");
}
}