处理数字问题经常需要使用的类
Number
Java提供的基本类库,尽管Java提供了内置的各种用于处理数字的内置类型(byte、float等),但是在实际开发过程中,我们常常需要用到对象,也因此java提供了对应的包装类。
各个数据类型及其对应的包装类
当我们需要把内置数据类型转变为对应的包装类的时候,编译器就会把内置数据类型装箱为包装类。同样编译器也可以将包装类拆箱成内置数据类型。
Number类属于java.lang包,因此编译时自动导入。
public static void main(String[] args) {
int x = 5;
Integer y = 5;//自动装箱
System.out.println(y);
if (x == y) {
System.out.println("yes");
}
else {
System.out.println("no");
}
y = y + 5;//自动拆箱
System.out.println(y);
}
输出结果
注意我们可以看到x等于y输出了yes,表明Integer对==做了重写。
API value()该方法用于将Number对象转为java内置数据类型
使用时在Value前加上基本数据类型的名称
Integer x = 5; System.out.println(x.intValue()); //5 System.out.println(x.doublevalue()); //5.0compareTo()
该方法比较Number对象与输入的值。注意Number对象对应的内置数据类型必须与被比较的值的数据类型一致
当Number对象与值相等时返回0,Number对象大返回1,否则返回-1
Integer x = 5; System.out.println(x.compareTo(-5)); //1 System.out.println(x.compareTo(5)); //0 System.out.println(x.compareTo(15)); //-1 System.out.println(x.compareTo(8.0)); //errorequals()
该方法用于判断两个Number对象是否相等
如 Number 对象不为 Null,且与方法的参数类型与数值都相等返回 True,否则返回 False。
Integer x = 7; Integer y = 10; Integer z =7; Long a = 5L; System.out.println(x.equals(y)); //false System.out.println(x.equals(z)); //true System.out.println(x.equals(a)); //falsevalueOf()
valueOf()存在三个重载
Integer的valueOf()在java中的函数原型如下:
static Integer valueOf(int i)//接收一个int并返回该int值的Integer实例对象 static Integer valueOf(String s)//接受一个String并返回String值得Integer对象 static Integer valueOf(String s, int radix)//radix是基数,用于String中提取值
示例
Integer x = Integer.valueOf(7);
Double c = Double.valueOf(1);
Float a = Float.valueOf("100");
Integer b = Integer.valueOf("11",2); // 使用2进制
System.out.println(x); //7
System.out.println(c); //1.0
System.out.println(a); //100.0
System.out.println(b); //3
toString()
以字符串形式返回
两个重载
String toString()//返回该对象的String static String toString(int i)//返回指定的值的String
实例
Integer x = 100; System.out.println(x.toString()); //100 System.out.println(Integer.toString(150));//150Math
Math包含了许多我们常用的个数学计算方法,比如阶乘、三角函数等
由于Math类位于java.lang 包,构造方法也是private的,所以无法创建对象。但是Math中的方法都是static的,这就意味着可以通过类名来调用它们。
示例代码:
System.out.println(Math.abs(-1)); //1静态属性
虽然Math类不能创建对象,但是Math类提供了几个静态属性,比如自然对数e和圆周率π
System.out.println(Math.E); //2.718281828459045 System.out.println(Math.PI); //3.141592653589793API abs
返回绝对值
Integer a = -100; System.out.println(Math.abs(a));//100ceil/floor/round
ceil:向上取整
floor:向下取整
round:四舍五入()
ceil方法:
double a = 1.1; double b = 1.4; double c = 1.5; double d = -1.1; double e = -1.4; double f = -1.5; System.out.println(Math.ceil(a));//2.0 System.out.println(Math.ceil(b));//2.0 System.out.println(Math.ceil(c));//2.0 System.out.println(Math.ceil(d));//-1.0 System.out.println(Math.ceil(e));//-1.0 System.out.println(Math.ceil(f));//-1.0
floor方法:
double a = 1.1; double b = 1.4; double c = 1.5; double d = -1.1; double e = -1.4; double f = -1.5; System.out.println(Math.floor(a));//1.0 System.out.println(Math.floor(b));//1.0 System.out.println(Math.floor(c));//1.0 System.out.println(Math.floor(d));//-2.0 System.out.println(Math.floor(e));//-2.0 System.out.println(Math.floor(f));//-2.0
round方法(注意负数的四舍五入):
double a = 1.1; double b = 1.4; double c = 1.5; double d = -1.1; double e = -1.4; double f = -1.5; double g = -1.6; System.out.println(Math.round(a));//1 System.out.println(Math.round(b));//1 System.out.println(Math.round(c));//2 System.out.println(Math.round(d));//-1 System.out.println(Math.round(e));//-1 System.out.println(Math.round(f));//-1 System.out.println(Math.round(g));//-2sin/cos/tan
三角函数
常常搭配Math的另一个方法toRadians()计算出弧度后再代入计算值
double degrees = 60.0; double radians = Math.toRadians(degrees); System.out.println(Math.sin(radians));//0.8660254037844386asin/acos/atan
反三角函数
常常搭配toDegrees()方法获取度数
double d = 1.0; System.out.println(Math.toDegrees(Math.atan(d)));//45.0pow
阶乘,参数必须为浮点数类型,返回值也是浮点数
double d = 2.0; double a = 4.0; System.out.println(Math.pow(d,a));//16.0max/min
比较两个数的大小
注意返回值不是boolean类型而是返回的数字
double d = 2.0; double a = 4.0; System.out.println(Math.max(d,a));//4.0 System.out.println(Math.min(d,a));//2.0sqrt
平方根
double d = 2.0; System.out.println(Math.sqrt(d));//1.4142135623730951random
随机数生成器,范围在[0,1)
System.out.println(Math.random());//0.6144458722566405



