有取值范围限制:例如,int的取值为:-2147483648~2147483647
jdk15以后,使用Math.absExact(),可以实现抛出异常的操作。
System.out.println(Math.abs(-88));//88
System.out.println(Math.abs(88));//88
相当于进一法
System.out.println(Math.ceil(12.34));//13.0
System.out.println(Math.ceil(12.54));//13.0
System.out.println(Math.ceil(-12.54));//-12.0
System.out.println(Math.ceil(-12.34));//-12.0
相当于去尾法
System.out.println(Math.floor(12.34));//12.0
System.out.println(Math.floor(12.54));//12.0
System.out.println(Math.floor(-12.54));//-13.0
System.out.println(Math.floor(-12.34));//-13.0
System.out.println(Math.round(12.34));//12.0
System.out.println(Math.round(12.54));//13.0
System.out.println(Math.round(-12.54));//-13.0
System.out.println(Math.round(-12.34));//-12.0
System.out.println(Math.max(20, 30));//30
System.out.println(Math.min(20, 30));//20
System.out.println(Math.pow(2, 3));//8.0
System.out.println(Math.sqrt(4));//2.0
System.out.println(Math.cbrt(8));//2.0
System.out.println(Math.random());
个位数 = number /1 % 10;
十位数=number /10 % 10;
百位数=number /100 % 10;
千位数=number /1000 % 10;
万位数=number /10000 % 10;
long l = System.currentTimeMillis();
System.out.println((l/1000/60/60/24/365)+"年");//53年
int[] arr1 = new int[]{1,2,3,4,5,6,7,8,9,10};
int[] arr2 = new int[10];
System.arraycopy(arr1,0,arr2,4,3);
for (int i = 0; i < arr2.length; i++) {
System.out.print(arr2[i]+" ");//0 0 0 0 1 2 3 0 0 0
}
System.out.println(Runtime.getRuntime().availableProcessors());//cpu线程数
System.out.println(Runtime.getRuntime().maxMemory()/1024/1024+"MB");
System.out.println(Runtime.getRuntime().totalMemory()/1024/1024+"MB");
System.out.println(Runtime.getRuntime().freeMemory()/1024/1024+"MB");
Runtime.getRuntime().exec("calc");//打开计算器
例如:
String s = "abc";
StringBuilder sb = new StringBuilder("abc");
System.out.println(s.equals(sb));//false
System.out.println(sb.equals(s));//false
字符串s调用的的equals是需要的传参必须是字符串,而sb是StringBuilder类的一个对象,所以返回的是false;
sb调用的equals是object父类中的方法,没有重写的情况是比较的是两个对象的地址值,所以返回的也是false。
1.新建一个实体类,实现标记接口Cloneable,重写clone()方法
2.默认为浅克隆(只克隆地址值,类似于调用字符串池),如果需要深克隆(克隆属性值,相当于新建了一个对象)的话需要重写方法或者使用第三方工具类
User u1 = new User("张三","23");
User u2 = (User) u1.clone();
System.out.println(u1);//User{username='张三', password='23'}
System.out.println(u2.toString());//User{username='张三', password='23'}
//获取一个随机大整数
BigInteger bi1 = new BigInteger(4,new Random());
System.out.println(bi1);//[0~16)
//获取一个指定大整数
BigInteger bi2 = new BigInteger("100");
System.out.println(bi2);//100
//获取一个指定进制的整数
BigInteger bi3 = new BigInteger("1001",2);
System.out.println(bi3);//9
//在long的取值范围内,-16到16是静态的
BigInteger bi5 = BigInteger.valueOf(100);
System.out.println(bi5);//100
BigInteger bd1 = BigInteger.valueOf(3);
BigInteger bd2 = BigInteger.valueOf(10);
//加
BigInteger bd3 = bd1.add(bd2);
System.out.println(bd3);//15
//除法:商和余数
BigInteger[] arr = bd2.divideAndRemainder(bd1);
System.out.println(arr.length);//2
System.out.println(arr[0]);//3
System.out.println(arr[1]);//1
//比较相同
boolean result = bd1.equals(bd2);
System.out.println(result);//false
//次幂
BigInteger bd4 = bd2.pow(2);
System.out.println(bd4);//100
//max
BigInteger bd5 = bd2.max(bd1);
System.out.println(bd5);//10
//转化为int类型整数,超出范围数据有误
BigInteger bd6 = BigInteger.valueOf(2147483648L);
int i = bd6.intValue();
System.out.println(i);//-2147483648
double v = bd6.doubleValue();
System.out.println(v);//2.147483648E9
//这种方式是不精确的,不建议使用
BigDecimal bd1 = new BigDecimal(0.01);
BigDecimal bd2 = new BigDecimal(0.09);
System.out.println(bd1);//0.01000000000000000020816681711721685132943093776702880859375
System.out.println(bd2);//0.0899999999999999966693309261245303787291049957275390625
通过传递字符串表示的小数来创建对象,一般采用这种方式创建对象
BigDecimal bd3 = new BigDecimal("0.01");
BigDecimal bd4 = new BigDecimal("0.09");
BigDecimal bd5 = bd3.add(bd4);
System.out.println(bd3);//0.01
System.out.println(bd4);//0.09
System.out.println(bd5);//0.10
BigDecimal bd6 = BigDecimal.valueOf(10);
System.out.println(bd6);//10
BigDecimal bd1 = BigDecimal.valueOf(2.0);
BigDecimal bd2 = BigDecimal.valueOf(10.0);
//加
BigDecimal bd3 = bd1.add(bd2);//12.0
System.out.println(bd3);
//减
BigDecimal bd4 = bd2.subtract(bd1);
System.out.println(bd4);//8.0
//乘
BigDecimal bd5 = bd1.multiply(bd2);
System.out.println(bd5);//20.00
//除法
BigDecimal bd6 = bd2.divide(bd1,2, RoundingMode.HALF_UP);
System.out.println(bd6);//5.00