一、StringBuffer类
自带了一块缓冲区的字符串,叫StringBuffer类。可以修改字符串的内容。和String完全不同。
理解为:带了一块空间的字符串对象。
1.构建一个StringBuffer对象
//构造方法:
new StringBuffer();//默认的缓冲区大小16个字符
new StringBuffer(int capacity);//也可以自己指定容量大小
new StringBuffer(String s);//StringBuffer对象创建好,并且里面还存储了字符串
2.StringBuffer的常用方法
//1.添加
append(data)-->StringBuffer,末尾追加。生活中的排队,都是默认排在队伍末尾
insert(offset,data)-->StringBuffer,插入数据。生活中的插队,在哪插入。
//2.删除
delete(start,end)-->StringBuffer,删除,从start下标开始,删除到end下标之前。包含start,但是不包含end。
deleteCharAt(index)-->StringBuffer,删除指定下标对应的字符。
//3.更改
reverse()-->StringBuffer,翻转一个字符串。
setCharAt(index, char)-->void,设置指定下标对应的字符。字符替换。
setLength(newLength)-->void,设置StringBuffer的字符串的长度。截取/用空字符填充
replace(start,end, str)-->StringBuffer,替换指定区间的内容:[start,end)
toString()-->从StringBuffer类型,变为String类型。
//4.同String类相同
length()-->int,获取长度
charAt(index)-->char,
indexOf(String)
indexOf(String,fromIndex)
lastIndexOf(String)
lastIndexOf(String,fromIndex)
substring(begin)
substring(begin,end)
二、StringBuilder类
StringBuilder类提供的方法,和StringBuffer功能相同。
StringBuffer和StringBuilder的使用方式几乎相同:
- step1:创建StringBuffer或StringBuilder对象。
- step2:执行方法:。。。
它们的区别:
StringBuffer是线程安全的,效率比StringBuilder低一些。JDK1.0
StringBuilder线程不安全。效率比StringBuffer高一些。JDK1.5
三、Math类
public static void main(String[] args) {
System.out.println(Math.PI);//圆周率,3.141592653589793
System.out.println(Math.abs(100));//绝对值
System.out.println(Math.abs(-100));
//向上取整
System.out.println(Math.ceil(3.00001));//返回大于或等于参数的最小(最接近负无穷大) double值,等于一个数学整数。 4.0
//向下取整
System.out.println(Math.floor(4.1));//4.0
//四舍五入
System.out.println(Math.round(3.49));//3
double num = 3.4;
System.out.println(Math.floor(num + 0.5));//效果是四舍五入吗?是
System.out.println(Math.pow(2, 3));//a的b次方
System.out.println(Math.pow(3, 2));
System.out.println(Math.sqrt(9));//根号9-->3
System.out.println(Math.sqrt(8));//根号8-->2倍根号2
// System.out.println(Math.random());//随机数,取值范围:[0,1),随机小数
//偷偷的看了一下Math.random()的源代码,发现就是new Random对象,调用nextDouble()方法。
/*
* 需求:int
*
*
* [0,1) * 100
* --->[0,100) [0,99.999999999]
* 直接取整数部分:(int)-->[0,99]
*
*
* 取[0,100]的随机数
* -->取[0,100.9889988)
* -->[0,1)*101-->[0,101)
* 100.99999999999
* -->(int)-->[0,100]
*
*
* 取[0,10]的随机数
* -->取[0,10.999999]
* -->[0,1)*11 -->[0,11)
* 10.9999999
* -->(int)-->[0,10]
*
* 取[5,15]的随机数
* --->[0,10]+5--->[5,15]
* --->[0,1)*11--->[0,11)
* 10.9999999
* --->(int)--->[0,10]
*
* 取[3,14]的随机数
* --->[0,11]+3
* --->[0,1)*12 --->[0,12)
* 11.999999
* --->(int)-->[0,11]
*
* 取[m,n]之间的随机整数
* -->[0,n-m] + m
*
* (int)(Math.random()*(n-m+1)+m);//获取[m,n]之间的随机整数的公式
*/
double d1 = Math.random();//[0,1)
double d2 = d1 * 100;//乘以100后的取值范围?[0,100)
int i1 = (int)d2;//[0,99]
int i2 = i1 + 3;//[3,102]
System.out.println((int)(Math.random()*100+3));
System.out.println((int)(Math.random()*101));//[0,100]
System.out.println((int)(Math.random()*11));//[0,10]
System.out.println((int)(Math.random()*11+5));//5,15]
System.out.println((int)(Math.random()*12+3));//[3,14]
}
四、BigDecimal类
public static void main(String[] args) {
double d1 = 0.05;
double d2 = 0.01;
System.out.println(d1+d2);
System.out.println(1.0-0.9);
System.out.println(0.1+0.2);
System.out.println(1.5+0.3);
System.out.println("------------------");
//BigDecimal,构造BigDecimal对象时候,如果直接使用double类型作为参数,存在精度
// BigDecimal bd1 =new BigDecimal(0.05); //0.05000000000000000277555756156289135105907917022705078125
// BigDecimal bd2 = new BigDecimal(0.01); //0.01000000000000000020816681711721685132943093776702880859375
// System.out.println(bd1);//重写了toString(),显示存储的数值
// System.out.println(bd2);
BigDecimal bd3 = new BigDecimal("0.05");
BigDecimal bd4 = new BigDecimal("0.01");
System.out.println(bd3);
System.out.println(bd4);
//加法
BigDecimal res1 = bd3.add(bd4);//d1+d2--->d1.add(d2)
System.out.println(res1);//0.06
//减法
BigDecimal res2 = bd3.subtract(bd4);//0.04
System.out.println(res2);
//乘法
BigDecimal res3 = bd3.multiply(bd4);//0.0005
System.out.println(res3);
BigDecimal bd5 = new BigDecimal("10");
BigDecimal bd6 = new BigDecimal("3");
//除不尽的情况,必须明确2个信息:(小数点后保留几位,是否使用四舍五入)
// BigDecimal res4 = bd5.divide(bd6);
BigDecimal res5 = bd5.divide(bd6, 2, BigDecimal.ROUND_HALF_UP);//res5=333
System.out.println(res5);
}
五、Random类
public static void main(String[] args) {
//step1:创建Random类的对象
Random r1 = new Random();
//step2:通过r1调用方法,就能够生成各种各样的随机数
boolean b1 = r1.nextBoolean();//产生一个boolean类型的随机数
System.out.println(b1);
double d1 = r1.nextDouble();//产生一个随机double类型,取值范围:[0,1)
System.out.println(d1);
int i1 = r1.nextInt();//产生一个int类型的随机数
System.out.println(i1);
int i2 = r1.nextInt(3);//产生一个int类型的随机数:[0,3)
System.out.println(i2);
Random r2 = new Random(10);
Random r3 = new Random(10);
System.out.println("-->"+r2.nextInt());
System.out.println("-->"+r3.nextInt());
}