常用API

常用API

Math

  • 是一个帮助我们用于数学计算的工具类
  • 私有化构造方法,所有的方法都是静态的

1719889145060

练习——判断一个数是否为质数

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次幂之和

1719890174502

统计一共有多少个水仙花数

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

1719897412104

Runtime

1719898506681

Object和Objects

Object

  • 是java中顶级父类。所有的类都直接或间接的继承于Object类。
  • Object类中的方法可以被所有子类访问,所以我们要学习Object类和其中的方法。
Object的构造方法

1719898710474

Object的成员方法(其中三个)

1719898792261

1719899779646

1719899851282

1719899888932

1719899939612

Objects

1719900304253

BigInteger和BigDecimal

BigInteger

1719900409108

public static BigInteger valueOf(long val)  静态方法获取BigInteger的对象,内部有优化。
细节:
  • 获取一个指定的大整数:字符串中必须是整数,否则会报错。

  • 对象一旦创建,内部记录的值不能发生改变。

  • 获取指定进制的大整数:

    ​ 字符串中的数字必须是整数。

    ​ 字符串中的数字必须要跟进制吻合。比如二进制中,那么只能写0和1, 写其他的就报错。

  • 静态方法获取BigInteger对象:

    ​ 能表示的范围比较小,在long的取值范围之内,如果超出long的范围就不行了。

    ​ 在内部对常用的数字:-1616进行了优化。提前把-1616先创建好BigInteger的对象,如果多次获取不会重新创建新的。

1719970360715

BigInteger常见方法

在这里插入图片描述

BigInteger底层存储方式

  • 对于计算机而言,其实是没有数据类型的概念的,都是0101010101.
  • 数据类型是编程语言自己规定的。

BigInteger会把一个很大的数进行拆分,拆成很多个小段。每一个小段就会放到单独的数组(mag)当中。用signum变量区分正数和负数(符号变量)。

**拆分过程:**BigInteger会把十进制的大整数转成二进制的补码。将二进制从右往左32个比特位为一组拆分。其次将拆分出来的小段转成各自的十进制。然后把它们按照一定的顺序方法数组当中。

1719971726923

BigInteger存储上限

1719971815695

BigDecimal

小数计算不精确的原因:

十进制的小数部分转成二进制的时候,如果小数部分二进制超出float和double类型留给小数部分的比特位,超出的部分就会被舍弃。

1719971986427

作用:
  • 表示较大的小数和解决小数运算精度失真问题。
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
    }
}

1719976191889

BigDecimal底层存储方式

1719976938414

1719976966384

正则表达式

1719977364799

正则表达式的作用

  • 作用一:校验字符串是否满足规则
  • 作用二:在一段文本中查找满足要求的内容

1719977659172

9989299121)]

BigDecimal底层存储方式

[外链图片转存中…(img-gzVGZ2Wz-1719989299121)]

[外链图片转存中…(img-Vo4b7gcs-1719989299121)]

正则表达式

[外链图片转存中…(img-5RiDD5uF-1719989299122)]

正则表达式的作用

  • 作用一:校验字符串是否满足规则
  • 作用二:在一段文本中查找满足要求的内容

[外链图片转存中…(img-Weh3UMjF-1719989299122)]

1719985955145

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值