Java中Math、System、Object、Objects、BigDecimal类的常用方法;基本数据类型包装类;int和String类型相互转换的方法

1. API——Math

Math类 包含执行基本数字运算的方法

Math类中无构造方法(构造方法私有化),但内部的方法都是静态的,则可以通过 类名.进行调用

Math类的常用方法:

public static int abs(int a)返回参数的绝对值
public static double ceil(double a)返回大于或等于参数的最小double值,向上取整
public static double floor(double a)返回小于或等于参数的最大double值,向下取整
public static int round(float a)按照四舍五入返回最接近参数的int
public static int max(int a,int b)返回两个int值中的较大值
public static int min(int a,int b)返回两个int值中的较小值
public static double pow (double a,double b)返回a的b次幂的值
public static double random()返回值为double的正值,[0.0,1.0)
public static double sqrt(double a)返回double值,a的平方根

示例代码: 

public static void main(String[] args) {
        //public static double ceil(double a)
        double a = 11.1;
        double ceil = Math.ceil(a);
        System.out.println(ceil);//12.0
        //public static double floor(double a)
        double b = 11.9;
        double floor = Math.floor(b);
        System.out.println(floor);//11.0
        //public static int round(float a)
        float a1 = 5.67F;
        int round = Math.round(a1);
        System.out.println(round);//6
        //public static double random() [0.0,1.0)
        double random = Math.random();
        System.out.println(random);//0.24202400282124625
    }

2. API——System

System类中无构造方法(构造方法私有化),但内部的方法都是静态的,则可以通过 类名.进行调用

System类常用方法:

方法名说明
public static void exit(int status)终止当前运行的 Java 虚拟机,非零表示异常终止
public static long currentTimeMillis()返回当前时间(以毫秒为单位)
arraycopy(数据源数组, 起始索引, 目标数组, 起始索引, 拷贝个数)数组复制

示例代码: 

public static void main(String[] args) {
        new Random().nextInt(10000);
        int[] arr = new int[10000];
        ArrayList<Integer> list = new ArrayList<>();
        long l1 = System.currentTimeMillis();
        for (int i = 0; i <10000 ; i++) {
            arr[i] = new Random().nextInt(10000);
        }
        long l2 = System.currentTimeMillis();
        for (int i = 0; i <10000 ; i++) {
            list.add(new Random().nextInt(10000));
        }
        long l3 = System.currentTimeMillis();
        System.out.println("数组存10000个数耗时:" + (l2-l1));//10毫秒
        System.out.println("集合存10000个数耗时:" + (l3-l2));//4毫秒
        //数组复制
        int[] arr1 = new int[10];
        System.arraycopy(arr, 100, arr1, 0, 10);
        for (int i : arr1) {
            System.out.println(i);
        }
    }

3. API——Object

所有类都直接或者间接的继承自Object,Object所具备的方法,所有类都会有一份

构造方法:public Object(){}(所有的类都会默认调用父类无参构造,因为顶级父类Object只有无参构造)

println的原码:实际上是调用Object中的toString方法默认返回的是地址值,若不想打印对象的地址值,可以在自定义的类中重写Object中的toString方法

Object中的equals方法:用于对象之间的比较,默认比较二者的地址值,重写后比较的是对象的属性

equals方法常见面试题:

  • String类重写了equals方法,虽然比较的是字符串内容是否相等,但是首先需要比较类型(StringBuilder类型和String类型字符串比较即使内容相同也会返回false)
  • StringBuilder类中没有重写equals方法,使用的是Object类中equals方法,比较的是地址值

4. API——Objects

此类包含static实用程序方法,用于操作对象或在操作前检查某些条件

构造方法:无构造方法,内部方法都为静态方法,可以通过 类名.进行调用

Objects常用方法:

方法名说明
public static String toString(对象)返回参数中对象的字符串表示形式。
public static String toString(对象, 默认字符串)

如果第一个参数不是 null ,则返回在第一个参数上调用 toString的结果,否则返回第二个参数

public static Boolean isNull(对象)判断对象是否为空
public static Boolean nonNull(对象)判断对象是否不为空
public static void main(String[] args) {
        Student stu1 = new Student("李白", 56);
        //调用Student类中的toString方法
        String str1 = Objects.toString(stu1);
        System.out.println(str1);//Student{name='李白', age=56}
        System.out.println("==============================");
        Student stu2 = new Student();
        String str2 = Objects.toString(stu2, "君不见黄河之水天上来");
        System.out.println(str2);//Student{name='null', age=0}
        //若对象为null,返回第二个参数
        stu2 = null;
        String str3 = Objects.toString(stu2, "君不见黄河之水天上来");
        System.out.println(str3);//君不见黄河之水天上来
    }

 

5. API——BigDecimal

BigDecimal作用:用于精确计算(构造方法使用参数类型为字符串)

构造方法:BigDecimal(double val)和 BigDecimal(String val)

BigDecimal常用方法:

方法名说明
public BigDecimal add(另一个BigDecimal对象)加法
public BigDecimal subtract (另一个BigDecimal对象)减法
public BigDecimal multiply (另一个BigDecimal对象)乘法
public BigDecimal divide (另一个BigDecimal对象)除法
public BigDecimal divide (另一个BigDecimal对象,精确几位,舍入模式)除法

 

舍入模式(常量):

  • BigDecimal.ROUND_UP  进一法
  • BigDecimal.ROUND_FLOOR 去尾法
  • BigDecimal.ROUND_HALF_UP 四舍五入

案例练习:

  • 定义一个double类型的数组 double[] array={0.1, 0.2, 2.1, 3.2, 5.56, 7.21};
  • 使用BigDecimal求数组中元素的平均值,保留2位小数舍入模式:四舍五入
  •  注意:每一个元素都需要封装为BigDecimal对象才能进行运算,运算的结果也是BigDecimal对象
import java.math.BigDecimal;


public class Exercise02 {
            
        public static void main(String[] args) {
            double[] array = {0.1, 0.2, 2.1, 3.2, 5.56, 7.21};
            //1.定义一个求和变量,精确的值就需要精确的BigDecimal
            BigDecimal sum = new BigDecimal("0");
            for (int i = 0; i < array.length; i++) {
                //2.将数组中的数拿出来转换成BigDecimal形式
                double num = array[i];
                String strNum = String.valueOf(num);
                //3.累加
                sum = sum.add(new BigDecimal(strNum));
            }
            //4.求平均值,保留2位小数
            int length = array.length;
            String strLength = String.valueOf(length);
            BigDecimal avg = sum.divide(new BigDecimal(strLength), 2, BigDecimal.ROUND_HALF_UP);
            System.out.println(avg);
        }
            
}

6. 基本数据类型包装类

把基本数据类型包装为对象,可以在对象中定义更多的功能方法操作该基本数据类型。常用的操作之一:基本数据类型与字符串之间的转换

基本数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

Integer类构造方法:

  • public static Integer valueOf(int i) 
  • public static Integer valueOf(String s) 

自动装箱:把基本数据类型转换为对应的包装类类型

自动拆箱:把包装类类型转换为对应的基本数据类型

Integer i = 100;  // 自动装箱
i += 200;         // i = i + 200;  i + 200 自动拆箱;i = i + 200; 是自动装箱

int 类型转换为String类型:

  • 方式一:直接在数字后加一个空字符串
  • 方式二:通过String类静态方法valueOf()
public static void main(String[] args) {
        //int --- String
        int number = 100;
        //方式1
        String s1 = number + "";
        System.out.println(s1);
        //方式2
        //public static String valueOf(int i)
        String s2 = String.valueOf(number);
        System.out.println(s2);
    }

String 类型转换为int类型:

  • 方式一:先使用 valueOf() 将字符串数字转成Integer对象,再调用 intValue() 方法返回int型
  • 方式二:通过Integer静态方法parseInt()进行转换
public static void main(String[] args) {
        String s = "100";
        //方式1:String --- Integer --- int
        Integer in = Integer.valueOf(s);
        //public int intValue()
        int x = in.intValue();
        System.out.println(x);
        //方式2
        //public static int parseInt(String s)
        int y = Integer.parseInt(s);
        System.out.println(y);
    }

案例需求:

  • 有一个字符串:“91 27 46 38 50”,把其中的每一个数存到int类型的数组中
String str = "91 27 46 38 50";
//1.需要将字符串中的数字拿出来,使用split进行切割,先拿到字符串数组
String[] strArr = str.split(" ");
//2.创建一个int类型的数组
int[] numArr = new int[strArr.length];
//3.遍历字符串数组,拿出里面的字符串,然后进行类型转换
for (int i = 0; i < strArr.length; i++) {
    //4.将String转换成int,使用parseInt。给int数组赋值
    numArr[i] = Integer.parseInt(strArr[i]);
}

 

如有错误欢迎留言评论,及时更正。 5月27日 羽露风

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羽露风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值