常用API
文章目录
Math
- 是一个帮助我们用于数学计算的工具类
- 私有化构造方法,所有的方法都是静态的
练习——判断一个数是否为质数
public class MathDemo1{
public static void main(String[] args){
sout(isPrime(13));
sout(isPrime(10));
}
public static boolean isPrime(int number){
for(int i = 2; i<= Math.sqrt(number);i++){
if(number % i == 0){
return false;
}
}
return true;
}
}
练习——自幂数
自幂数,一个n位自然数等于自身各个数位上数字的n次幂之和
统计一共有多少个水仙花数
package com.example.demo;
public class Test {
public static void main(String[] args) {
int count = 0;
for (int i = 100; i <= 999; i++) {
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i /100 % 10;
double sum = Math.pow(ge,3)+Math.pow(shi,3)+Math.pow(bai,3);
if(sum == i){
count ++;
System.out.println(i);
}
}
System.out.println(count);
}
}
证明没有两位的自幂数
package com.example.demo;
public class Test {
public static void main(String[] args) {
int count = 0;
for (int i = 10; i <= 99; i++) {
int ge = i % 10;
int shi = i / 10 % 10;
double sum = Math.pow(ge,2)+Math.pow(shi,2);
if(sum == i){
count ++;
System.out.println(i);
}
}
System.out.println("个数:"+count);
}
}
分别统计有多少个四叶玫瑰数和五角星数
package com.example.demo;
public class Test {
public static void main(String[] args) {
int count = 0;
for (int i = 1000; i <= 9999; i++) {
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 100 % 10;
int qian = i / 1000 % 10;
double sum = Math.pow(ge,4)+Math.pow(shi,4)+Math.pow(bai,4)+Math.pow(qian,4);
if(sum == i){
count ++;
System.out.println(i);
}
}
System.out.println("个数:"+count);
}
}
package com.example.demo;
public class Test {
public static void main(String[] args) {
int count = 0;
for (int i = 10000; i <= 99999; i++) {
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 100 % 10;
int qian = i / 1000 % 10;
int wan = i /10000 %10;
double sum = Math.pow(ge,5)+Math.pow(shi,5)+Math.pow(bai,5)+Math.pow(qian,5)+Math.pow(wan,5);
if(sum == i){
count ++;
System.out.println(i);
}
}
System.out.println("个数:"+count);
}
}
System
Runtime
Object和Objects
Object
- 是java中顶级父类。所有的类都直接或间接的继承于Object类。
- Object类中的方法可以被所有子类访问,所以我们要学习Object类和其中的方法。
Object的构造方法
Object的成员方法(其中三个)
Objects
BigInteger和BigDecimal
BigInteger
public static BigInteger valueOf(long val) 静态方法获取BigInteger的对象,内部有优化。
细节:
-
获取一个指定的大整数:字符串中必须是整数,否则会报错。
-
对象一旦创建,内部记录的值不能发生改变。
-
获取指定进制的大整数:
字符串中的数字必须是整数。
字符串中的数字必须要跟进制吻合。比如二进制中,那么只能写0和1, 写其他的就报错。
-
静态方法获取BigInteger对象:
能表示的范围比较小,在long的取值范围之内,如果超出long的范围就不行了。
在内部对常用的数字:-1616进行了优化。提前把-1616先创建好BigInteger的对象,如果多次获取不会重新创建新的。
BigInteger常见方法
BigInteger底层存储方式
- 对于计算机而言,其实是没有数据类型的概念的,都是0101010101.
- 数据类型是编程语言自己规定的。
BigInteger会把一个很大的数进行拆分,拆成很多个小段。每一个小段就会放到单独的数组(mag)当中。用signum变量区分正数和负数(符号变量)。
**拆分过程:**BigInteger会把十进制的大整数转成二进制的补码。将二进制从右往左32个比特位为一组拆分。其次将拆分出来的小段转成各自的十进制。然后把它们按照一定的顺序方法数组当中。
BigInteger存储上限
BigDecimal
小数计算不精确的原因:
十进制的小数部分转成二进制的时候,如果小数部分二进制超出float和double类型留给小数部分的比特位,超出的部分就会被舍弃。
作用:
- 表示较大的小数和解决小数运算精度失真问题。
package com.example.demo;
import java.math.BigDecimal;
public class BigDecimalDemo {
public static void main(String[] args) {
/**
* 构造方法获取BigDecimal对象
* public BigDecimal(double val)
* public BigDecimal(String val)
*
* 静态方法获取BigDecimal对象
* public static Bigdecimal valueOf(double val)
*/
//1.通过传递double类型的小数来创建BigDecimal
//细节:这种构造方式有可能是不精确的,所以不建议使用。
BigDecimal bd1 = new BigDecimal(0.01);
BigDecimal bd2 = new BigDecimal(0.09);
System.out.println(bd1);
System.out.println(bd2);
//2.通过传递字符串表示的小数来创建对象
BigDecimal bd3 = new BigDecimal(0.01);
BigDecimal bd4 = new BigDecimal(0.09);
BigDecimal bd5 = bd3.add(bd4);
System.out.println(bd3);
System.out.println(bd4);
System.out.println(bd5);
//3.通过静态方法获取对象
BigDecimal bd6 = BigDecimal.valueOf(10);
BigDecimal bd7 = BigDecimal.valueOf(10);
System.out.println(bd6 == bd7);
//细节:
//1.如果要表示的数字不大,没有超出double的取值范围,建议使用静态方法
//2.如果要表示的数字比较大,超出了double的取值范围,建议使用构造方法
//3.如果我们传递的是0~10之间的整数,包含0,包含10,那么方法会返回已经创建好的对象,不会重新创建new
}
}
BigDecimal底层存储方式
正则表达式
正则表达式的作用
- 作用一:校验字符串是否满足规则
- 作用二:在一段文本中查找满足要求的内容
9989299121)]
BigDecimal底层存储方式
[外链图片转存中…(img-gzVGZ2Wz-1719989299121)]
[外链图片转存中…(img-Vo4b7gcs-1719989299121)]
正则表达式
[外链图片转存中…(img-5RiDD5uF-1719989299122)]
正则表达式的作用
- 作用一:校验字符串是否满足规则
- 作用二:在一段文本中查找满足要求的内容
[外链图片转存中…(img-Weh3UMjF-1719989299122)]