一、类库
二、数字类
1.大整数类BigInterger
import java.math.BigInteger;
public class BigIntegerTest {
public static void main(String[] args) {
//1.大整数用字符串声明
BigInteger b1 = new BigInteger("123456789");
BigInteger b2 = new BigInteger("987654321");
System.out.println("b1: " + b1 + ", b2:" + b2);
//2.加减乘除、最大最小操作
System.out.println("加法操作:" + b2.add(b1)); // 加法操作
System.out.println("减法操作:" + b2.subtract(b1)); // 减法操作
System.out.println("乘法操作:" + b2.multiply(b1)); // 乘法操作
System.out.println("除法操作:" + b2.divide(b1)); // 除法操作
System.out.println("最大数:" + b2.max(b1)); // 求出最大数
System.out.println("最小数:" + b2.min(b1)); // 求出最小数
//3.求余比较大小操作
BigInteger result[] = b2.divideAndRemainder(b1); // 求出余数的除法操作
System.out.println("商是:" + result[0] + ";余数是:" + result[1]);
System.out.println("等价性是:" + b1.equals(b2));
int flag = b1.compareTo(b2);
if (flag == -1)
System.out.println("比较操作: b1<b2");
else if (flag == 0)
System.out.println("比较操作: b1==b2");
else
System.out.println("比较操作: b1>b2");
}
}
- 定义的时候是用的字符串
- 加法不能用+,而是用b2.add(b1)
2.大浮点数BigDecimal
import java.math.BigDecimal;
import java.math.BigInteger;
public class BigDecimalTest {
public static void main(String[] args) {
//1.声明BigDecimal对象
BigDecimal b1 = new BigDecimal("123456789.987654321");
BigDecimal b2 = new BigDecimal("987654321.123456789");
System.out.println("b1: " + b1 + ", b2:" + b2);
//2.加减乘除操作
System.out.println("加法操作:" + b2.add(b1)); // 加法操作
System.out.println("减法操作:" + b2.subtract(b1)); // 减法操作
System.out.println("乘法操作:" + b2.multiply(b1)); // 乘法操作
//需要指定位数,防止无限循环,或者包含在try-catch中
System.out.println("除法操作:" + b2.divide(b1,10,BigDecimal.ROUND_HALF_UP)); // 除法操作
BigDecimal num1 = new BigDecimal("10");
BigDecimal num2 = new BigDecimal("3");
//需要指定位数,防止无限循环,或者包含在try-catch中
BigDecimal num3 = num1.divide(num2, 3, BigDecimal.ROUND_HALF_UP);
System.out.println(num3);
//3.最大最小值操作
System.out.println("最大数:" + b2.max(b1)); // 求出最大数
System.out.println("最小数:" + b2.min(b1)); // 求出最小数
//4.比较操作
int flag = b1.compareTo(b2);
if (flag == -1)
System.out.println("比较操作: b1<b2");
else if (flag == 0)
System.out.println("比较操作: b1==b2");
else
System.out.println("比较操作: b1>b2");
}
}
- 声明的时候尽量要用字符串,用浮点数进行声明的话只会得到一个接近的数,得不到想要的数。
3.随机数类Random
import java.util.Random;
public class RandomTest {
public static void main(String[] args)
{
//第一种办法,采用Random类 随机生成在int范围内的随机数
Random rd = new Random();
System.out.println(rd.nextInt());
System.out.println(rd.nextInt(100)); //0--100的随机数
System.out.println(rd.nextLong());
System.out.println(rd.nextDouble());
System.out.println("=========================");
//第二种,生成一个范围内的随机数 例如0到时10之间的随机数
//Math.random[0,1)
System.out.println(Math.round(Math.random()*10));
System.out.println("=========================");
//JDK 8 新增方法
rd.ints(); //返回无限个int类型范围内的数据
int[] arr = rd.ints(10).toArray(); //生成10个int范围类的个数。
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println("=========================");
arr = rd.ints(5, 10, 100).toArray();
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println("=========================");
arr = rd.ints(10).limit(5).toArray();
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
4.Math工具类
三、字符串相关类
public class StringTest {
public static void main(String[] args) {
String a = "123;456;789;123 ";
System.out.println(a.charAt(0)); // 返回第0个元素
System.out.println(a.indexOf(";")); // 返回第一个;的位置
System.out.println(a.concat(";000")); // 连接一个新字符串并返回,a不变
System.out.println(a.contains("000")); // 判断a是否包含000
System.out.println(a.endsWith("000")); // 判断a是否以000结尾
System.out.println(a.equals("000")); // 判断是否等于000
System.out.println(a.equalsIgnoreCase("000"));// 判断在忽略大小写情况下是否等于000
System.out.println(a.length()); // 返回a长度
System.out.println(a.trim()); // 返回a去除前后空格后的字符串,a不变
String[] b = a.split(";"); // 将a字符串按照;分割成数组
for (int i = 0; i < b.length; i++) {
System.out.println(b[i]);
}
//字符串中元素替换的两种方式
System.out.println("===================");
System.out.println(a.substring(2, 5)); // 截取a的第2个到第5个字符 a不变
System.out.println(a.replace("1", "a"));//把1全部替换成a
System.out.println(a.replaceAll("1", "a")); // replaceAll第一个参数是正则表达式
System.out.println("===================");
String s1 = "12345?6789";
String s2 = s1.replace("?", "a");
String s3 = s1.replaceAll("[?]", "a");
// 这里的[?] 才表示字符问号,这样才能正常替换。不然在正则中会有特殊的意义就会报异常
System.out.println(s2);
System.out.println(s3);
System.out.println(s1.replaceAll("[\\d]", "a")); //将s1内所有数字替换为a并输出,s1的值未改变。
}
}
1.可变字符串
- StringBuffer、StringBuilder
及字符串的是可以增加或者减少长度的,原理是在生成空间时就多占一些内存用于扩展。
2.可变性的体现
StringBuffer:
public class StringBufferReferenceTest {
public static void main(String[] args) {
StringBuffer sb1 = new StringBuffer("123");
StringBuffer sb2 = sb1;
sb1.append("12345678901234567890123456789012345678901234567890");
System.out.println(sb2); //sb1 和 sb2还是指向同一个内存的
}
}
结果:
12312345678901234567890123456789012345678901234567890
12312345678901234567890123456789012345678901234567890
String:
public class StringBufferReferenceTest {
public static void main(String[] args) {
String sb1 = new String("123");
String sb2 = sb1;
sb1="sdasd";
System.out.println(sb1);
System.out.println(sb2); //sb1 和 sb2还是指向同一个内存的
}
}
结果:
sdasd
123
- StringBuffer中的sb1和sb2是一样的,即两者指向的是同一块内存。
四、时间相关类
五、格式化相关类
把数字啊,字符串,时间等按照一定的格式化进行输出。
以数字格式化为例子:
import java.text.DecimalFormat;
public class DecimalFormaterRuleTest {
public static void main(String[]args){
DecimalFormat df1,df2;
System.out.println("整数部分为0的情况,0/#的区别");
// 整数部分为0 , #认为整数不存在,可不写; 0认为没有,但至少写一位,写0
df1 = new DecimalFormat("#.00");
df2 = new DecimalFormat("0.00");
System.out.println(df1.format(0.1)); // .10
System.out.println(df2.format(0.1)); // 0.10
System.out.println("小数部分0/#的区别");
//#代表最多有几位,0代表必须有且只能有几位
df1 = new DecimalFormat("0.00");
df2 = new DecimalFormat("0.##");
System.out.println(df1.format(0.1)); // 0.10
System.out.println(df2.format(0.1)); // 0.1
System.out.println(df1.format(0.006)); // 0.01
System.out.println(df2.format(0.006)); // 0.01
System.out.println("整数部分有多位");
//0和#对整数部分多位时的处理是一致的 就是有几位写多少位
df1 = new DecimalFormat("0.00");
df2 = new DecimalFormat("#.00");
System.out.println(df1.format(2)); // 2.00
System.out.println(df2.format(2)); // 2.00
System.out.println(df1.format(20)); // 20.00
System.out.println(df2.format(20)); // 20.00
System.out.println(df1.format(200)); // 200.00
System.out.println(df2.format(200)); // 200.00
}
}