拾 Java Number和Math类

Java Number 类

一般的,在需要使用数字的时候,会使用内置数据类型:byte,short,int,long,double等。
但是,在实际开发中,经常遇到需要使用对象,而不是内置数据类型的情况。为此,Java为每一个内置数据类型提供了对应的包装类。
包装类:Integer、Long、Byte、Double、Float、Short(注意大小写),他们都是Number的子类。
这里写图片描述
这种由编译器特别支持的包装称为装箱,所以当内置数据类型被当做对象使用的时候,编译器会把内置类型装箱为包装类。
类似的,编译器也把一个对象拆箱为内置类型。Number类属于java.lang包。
eg.

public class Test{
   public static void main(String args[]){
      Integer x = 5;
      x =  x + 10;
      System.out.println(x); 
   }
}

解析:当 x 被赋为整型值时,由于x是一个对象,所以编译器要对x进行装箱。然后,为了使x能进行加运算,所以要对x进行拆箱。


Math类

  • Java 的 Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。

  • Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用。

以下是Number和Math类的一些常用方法:

方法描述
xxxValue()将 Number 对象转换为xxx数据类型的值并返回。
compareTo()将Number对象与参数比较。
equals()判断number对象是否与参数相等。
valueOf()返回一个Number对象指定的内置数据类型。
toString()以字符串形式返回值。
parseInt()将字符串解析为int类型。
abs()返回参数的绝对值。
ceil()对整型变量向上取整,返回double类型。
floor()对整型变量向下取整,返回double类型。
rint()返回参数最接近的整数,返回类型为double。
round()返回一个最接近的int、long类型。
min()返回两个参数的最小值。
max()返回两个参数的最大值。
exp()返回自然数底数e的参数次方。
log()返回参数的自然数的对数值。
pow()返回第一个参数的第二参数次方。
sqrt()求参数的算术平方根。
sin()求double类型参数的正弦值。
cos()求指定double类型参数的余弦值。
tan()求指定double类型参数的正切值。
random()返回一个随机数。

注意 “==”与 “qeuals()”的区别

  • == 比较的是对象的地址。

  • equals()比较的是对象的内容。

eg.

        ...
        Integer a = 10;
        Integer b = 10;
        System.out.println(a == b);        // true
        System.out.println(a.equals(b));   // true
        Integer a = 1000;
        Integer b = 1000;
        System.out.println(a == b);        // false
        System.out.println(a.equals(b));   // true
        ...

但是,问题来了,根据 “==”比较的是对象的地址这一说,当Integer a = 10 和 Integer b = 10,来说,a 和 b 对象的地址不可能是一样的呀,然而结果却是 true 。

解析:简单的来说,就是Java会对-128-127的整数进行缓存。

Integer类中有个内部类:IntegerCache ,这个类中有一个缓存数组cache[],存放的内容是-128到127的整数。在声明Integer 变量的时候,若变量在-128-127间,就不会新建对象,而是取缓存的对象,让a和b指向缓存的对象,所以 a == b 返回 true;反之当 新建的Integer 对象 不在 -128 - 127 间时,才会新建对象,此时对象地址不会一样。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值