Java Number & Math 类

Number 类
    一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte、int、long、double 等。然而,在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形。为了解决这个问题,Java 语言为每一个内置数据类型提供了对应的包装类。所有的包装类(Integer、Long、Byte、Double、Float、Short)都是抽象类Number 的子类。Number 类属于 java.lang 包。
1.Java为八种基本数据类型提供了对应的包装类:

    这种由编译器特别支持的包装称为装箱。所以当内置数据类型被当作对象使用的时候,编译器会把内置类型装箱为包装类。相似的,编译器也可以把一个对象拆箱为内置类型。

    下面是一个使用 Integer 对象的实例:    

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

//以上实例编译运行结果如下:
15
    当 x 被赋为整型值时,由于x是一个对象,所以编译器要对x进行装箱。然后,为了使x能进行加运算,所以要对x进行拆箱。

2. 包装类
    包装类主要提供两大类的方法: 将本类型和其他基本类型进行转换的方法;  将字符串和本类型及包装类互相转换的方法;
(1) 基本数据类型与包装类之间的转换
    装箱:将基本数据类型转换成对应的包装类
        ① 使 用对应包装类的构造器
        ② 使用对应包装类的 静态方法  valueOf()
    拆箱:将包装类转换成对应的基本数据类型
        ① 使用对应包装类的 xxxValue()   xxx:对应的基本数据类型
(2) 自动装箱和自动拆箱(jdk1.5以后提供)
int a = 10;
Integer num = a; //自动装箱
int a1 = num; //自动拆箱

Integer num1 = 100;
Integer num2 = 100;
System.out.println(num1 == num2); //true

Integer num3 = 130;
Integer num4 = 130;
System.out.println(num3 == num4);//false

原因:Integer 提供了一个小的缓存(-128~127),若要装箱的值在该取值范围内,则直接从缓存中取一个Integer实例,若超出了该取值范围,则重新 new Integer()。
(3) 基本数据类型、包装类  与  String之间进行转换
    ① 基本数据类型、包装类 转成 String :
        【1】String str = a + "";
        【2】使用对应包装类的静态方法  toString()
int a1=123;
Integer a2=456;
String s1=a1+"";
String s2 = a2.toString();
System.out.println(s1);
System.out.println(s2);
     ② String 转成基本数据类型、包装类 :
        【1】使用对应包装类的构造器
        【2】使用对应包装类的静态方法  valueOf()
        【3】 使用对应包装类的静态方法  parseXxx()  :   xx 指的是对应的基本数据类型
String str = "123";
try {
    int b = Integer.valueOf(str);
} catch (NumberFormatException e) {
    e.printStackTrace();
}

Math 类
    Math 类位于 java.lang 包中,包含用于执行基本数学运算的方法, Math 类的所有方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.方法名,如: Math.round();
1.常用的方法
double ceil(double d) : 返回不小于d的最小整数
double floor(double d): 返回不大于d的最大整数
int round(float f)接近f的int型(四舍五入)
long round(double d):返回最接近 : 返回最d的long型
double abs(double d):
double max(double d1, double d2) : 返回较大值
int min(int i1, int i2) : 返回较小值
double random() : 返回一个大于等于0.0并且小于1.0的随机数
2.实例
public class Test {
    public static void main(String args[]){
        double a = 12.81;// 定义一个double类型变量
        int b = (int) a;//将double类型强制转换为int类型,去掉小数位
        System.out.println("强制类型转换:" + b);
        long c = Math.round(a);//调用round方法,进行四舍五入
        System.out.println("四舍五入:"+ c);
        double d = Math.floor(a);//调用floor方法,返回小于参数的最大整数
        System.out.println("floor:" + d);
        double e = Math.ceil(a);//调用ceil方法,返回大于参数的最小整数
        System.out.println("ceil:"+ e);
        double x = Math.random( );//调用random方法,产生[0,1)之间的随机数浮点数
        System.out.println("随机数:"+ x);
        int y = (int) (Math.random( ) * 99 );// 产生[0,99)之间的随机数
        System.out.println("产生[0,99)之间的随机数:" + y);
    }
}
//运行结果:
强制类型转换:12
四舍五入:13
floor:12.0
ceil:13.0
随机数:0.6264011687706469
产生[0,99)之间的随机数:76

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员学习圈

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

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

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

打赏作者

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

抵扣说明:

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

余额充值