Java 《Number》类、《Math》类(基础3)

一、Java Number 类

拿int和Integer做例子进行对比:

  • Integer是int的包装类;int是基本数据类型;
  • Integer变量必须实例化后才能使用;int变量不需要;
  • Integer实际是对象的引用,指向此new的Integer对象;int是直接存储数据值 ;
  • Integer的默认值是null;int的默认值是0;

    通过上面我们可以知道,int除了存储数据值不能有更多的功能。就拿现实中考试成绩来说,一个人的成绩可能为0,这是他一点都不写的情况;有可能是null,这是他去都没去的情况;其余的任意值是动笔的情况。这个时候我们就不能通过int进行判断,需要Integer一个score变量,通过对score是否为0/null/{1.......100}这些取值,分析出他是否缺考。Integer可以区分出未赋值和值为0的区别,适合作为web层的表单数据的类型,int则无法表达出未赋值的情况。

1.1深入对比,参考资料大致分为四种情况

Integer i = new Integer(100);
Integer j = new Integer(100);
System.out.print(i == j); //false
/*(1)两个通过new生成的Integer变量永远是不相等的(因为new生成的是两个对象,其内存地址不同)*/



Integer i = new Integer(100);
int j = 100;
System.out.print(i == j); //true
/*(2)通过自动拆箱机制,只要两个变量的值是相等的,则结果为true*/



Integer i = new Integer(100);
Integer j = 100;
System.out.print(i == j); //false
/*(3)非new生成的Integer变量指向的是静态常量池中cache数组中存储的指向
了堆中的Integer对象,而new Integer()生成的变量指向堆中新建的对象,两
者在内存中的对象引用(地址)不同。*/



Integer i = 100;
Integer j = 100;
System.out.print(i == j); //true
Integer i = 128;
Integer j = 128;
System.out.print(i == j); //false
/**(4)两个非new生成的Integer对象进行比较时,值在区间-128到127之间,则比较结果为true,
如果两个变量的值不在此区间,则比较结果为false。原因:java在编译Integer i = 100 ;时,
会翻译成为Integer i = Integer.valueOf(100)。而java API中对Integer类型的valueOf的
定义如下,对于-128到127之间的数,会进行缓存,Integer i = 127时,会将127这个Integer
对象进行缓存,下次再写Integer j = 127时,会直接从缓存中取,超过此范围后,每次装箱就会
新建一个Integer对象*/

1.2自动拆箱/装箱机制

//自动拆箱:将对象重新转化为基本数据类型,计算时将num直接拆箱成int,计算打印出8 
public class Test {  
        public static void main(String[] args) {  
            / /声明一个Integer对象
	        Integer num = 9;
            // 进行计算时隐含的有自动拆箱
		    System.out.print(num--);
        }  
    }  



/*自动装箱:将基本数据类型重新转化为对象,声明一个Integer对象,用到了自动
装箱:解析为:Integer num = Integer.valueOf(9);*/
    public class Test {  
        public static void main(String[] args) {  
	        Integer num = 9;
        }  
    }  


//因为对象不能直接进行运算,需要转化为基本数据类型后才能进行加减乘除
// 装箱
Integer num = 10;
// 拆箱
int num1 = num;

二、Java  Math 类

Java 的 Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数等。Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用。

public class Test {  
    public static void main (String []args)  
    {  
        System.out.println("90 度的正弦值:" + Math.sin(Math.PI/2));  
        System.out.println("0度的余弦值:" + Math.cos(0));  
        System.out.println("60度的正切值:" + Math.tan(Math.PI/3));  
        System.out.println("1的反正切值: " + Math.atan(1));  
        System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI/2));  
        System.out.println(Math.PI);  
    }  
}
/*90 度的正弦值:1.0
  0度的余弦值:1.0
  60度的正切值:1.7320508075688767
  1的反正切值: 0.7853981633974483
  π/2的角度值:90.0
  3.141592653589793
*/

三、Java  Number & Math 类方法

3.1 Java xxxValue() 方法

Integer x = 5;
System.out.println(x.doubleValue());
// 返回 double 原生数据类型:5.0

 3.2 Java compareTo() 方法

/* 可以用来比较相同数据类型,返回值分三种:如果指定的数与参数相等返回 0;
如果指定的数小于参数返回 -1;如果指定的数大于参数返回 1 */
Integer x = 5;
System.out.println(x.compareTo(3));
System.out.println(x.compareTo(5));
System.out.println(x.compareTo(8));    
/*1
  0
  -1*/

3.3 Java equals() 方法

//用于判断 Number 对象与方法的参数是否相等
Integer x=5;
Integer y=10;
Integer z=5;
Short a=5;
System.out.prntln(x.equals(y));
System.out.prntln(x.equals(z));
System.out.prntln(x.equals(a));
/*false
  true
  false
*/

3.4 Java valueOf() 方法

                Integer x =Integer.valueOf(9);
//1、Integer valueOf(int i):返回一个表示指定的 int 值的 Integer 实例
                Double c = Double.valueOf(5);


//2、Integer valueOf(String s):返回保存指定的 String 的值的 Integer 对象
                Float a = Float.valueOf("80");


/*3、Integer valueOf(String s, int radix): 返回一个 Integer 对象,
该对象中保存了用第二个参数提供的基数进行解析时从指定的 String 中提取的值 */              
                Integer b = Integer.valueOf("444",16);   // 使用 16 进制
                System.out.println(x); 
                System.out.println(c);
                System.out.println(a);
                System.out.println(b);

/*9
  5.0
  80.0
  1092
*/

3.5 Java toString() 方法

 Integer x = 5;

 System.out.println(x.toString());  //1、toString(): 返回表示 Integer 值的 String 对象

 //2、toString(int i): 返回表示指定 int 整数的 String 对象
 System.out.println(Integer.toString(12)); 

/*
5
12
*/
 public class CeShi1{
    public static void main(String[] args){
           Ren1 r1 = new Ren1("YL",23);
           System.out.println(r1.toString());
        }
}
class Ren1{
        String mingZi1;
        int nianLing1;

        public Ren1(String mingZi1, int nianLing1){
          this.mingZi1 = mingZi1;
          this.nianLing1 = nianLing1;
          }
        public String toString(){
              return "姓名:" + mingZi1 + "\n" +"年龄:" + nianLing1;
                  } 
         }
/*
姓名:YL
年龄:23 
*/
public class CeShi2{
     public static void main(String[] args){
           Ren r2 = new Ren2("YL",23);
           System.out,println("姓名:" + r2.mingZi2 + "\n" + "年龄:" + r2.nianLing2);
       }

class Ren2{
        String mingZi2;
        int nianLing2;
           
        public Ren(String mingZi2, int nianLing2){        
            this.mingZi2 = mingZi2;
            this.nianLing2 = nianLing2;
           }
       }
   }

 

3.6 Java parseInt() 方法

//1、parseInt(String s): 返回用十进制参数表示的整数值
   int x =Integer.parseInt("9");
   double c = Double.parseDouble("5");
//2、parseInt(int i): 使用指定基数的字符串参数表示的整数 (基数可以是 10, 2, 8, 或 16 等进制数)
   int b = Integer.parseInt("444",16);

/* 
9
5.0
1092
*/

3.7 Java abs() 方法

//任何原生数据类型,返回参数的绝对值
    Integer a = -8;
    double d = -100;
    float f = -90f;   
    System.out.println(Math.abs(a));
    System.out.println(Math.abs(d));    
    System.out.println(Math.abs(f));
/*
8
100.0
90.0
*/

3.8 Java ceil() 方法

//可对一个数进行上舍入,返回值大于或等于给定的参数,类型为双精度浮点型
        double d = 100.675;
        float f = -90;    
 
        System.out.println(Math.ceil(d));
        System.out.println(Math.ceil(f)); 
        
//floor()下舍入             
        System.out.println(Math.floor(d));
        System.out.println(Math.floor(f)); 
/*
101.0
-90.0
100.0
-90.0
*/

3.9 Java floor() 方法

 参考3.8

3.10 Java rint() 方法

//double 类型数据,返回最接近参数的整数值
  double e = 100.500;
  System.out.println(Math.rint(e)); //100.0 下取整

3.11 Java round() 方法

round() 方法返回一个最接近的 int、long 型值,四舍五入。

round 表示“四舍五入”,算法为Math.floor(x+0.5) ,即将原来的数字加上 0.5 后再向下取整,所以 Math.round(11.5) 的结果为 12,Math.round(-11.5) 的结果为 -11

3.12 Java min() 方法

double min(double arg1, double arg2)
float min(float arg1, float arg2)
int min(int arg1, int arg2)
long min(long arg1, long arg2)
//返回两个参数中的最小值

System.out.println(Math.min(12.123, 12.456));// 12.123

3.13 Java max() 方法

参考3.12,返回两个参数中的最大值 

3.14 Java exp() 方法

//返回自然数底数e的参数次方
double x = 11.635;
System.out.printf("exp(%.3f) 为 %.3f%n", x, Math.exp(x)); //exp(11.635) 为 112983.831

3.15 Java log() 方法

参考3.14,取e为底的对数值 

3.16 Java pow() 方法

//返回第一个参数的第二个参数次方
   double x = 11.635;
   double y = 2.76;
   System.out.printf("pow(%.3f, %.3f) 为 %.3f%n", x, y, Math.pow(x, y));
// pow(11.635, 2.760) 为 874.008

3.17 Java sqrt() 方法

//返回参数的算术平方根
  double x = 11.635;
  System.out.printf("sqrt(%.3f) 为 %.3f%n", x, Math.sqrt(x));
// sqrt(11.635) 为 3.411

3.18 Java sin() 方法

//返回指定double类型参数的正弦值。
  double degrees = 45.0;
  double radians = Math.toRadians(degrees);//把角度转换为弧度

  System.out.format("%.1f 度的正弦值为 %.4f%n", degrees, Math.sin(radians));
//45.0 度的正弦值为 0.7071

3.19 Java cos() 方法

参考3.18,返回余弦值 

3.20 Java tan() 方法

参考3.18,返回正切值 

3.21 Java asin() 方法

//返回指定double类型参数的反正弦值
 double degrees = 45.0;
 double radians = Math.toRadians(degrees);

 System.out.format("%.4f 的反正弦值为 %.4f 度 %n", Math.sin(radians), 
 Math.toDegrees(Math.asin(Math.sin(radians))));
//0.7071 的反正弦值为 45.0000 度;这里先把45度转为正弦值,再从正弦值计算得到反正弦值

System.out.format("%f\n",pi);//"f"表示格式化输出浮点数

System.out.format("%d\n",i);//"d"表示格式化输出十进制整数

System.out.format("%o\n",i);//"o"表示格式化输出八进制整数

System.out.format("%x\n",i);//"x"表示格式化输出十六进制整数

System.out.format("%s\n",str);//"s"表示格式化输出字符串

3.22 Java acos() 方法

参考3.21,返回反余弦值 

3.23 Java atan() 方法

参考3.21,返回反正切值 

3.24 Java atan2() 方法

/**
atan2() 方法用于将矩形坐标 (x, y) 转换成极坐标 (r, theta),返回所得角 theta。
该方法通过计算 y/x 的反正切值来计算相角 theta,范围为从 -pi 到 pi
*/

  double x = 45.0;
  double y = 30.0;
  System.out.println( Math.atan2(x, y) );

3.25 Java toDegrees() 方法

//将参数转化为角度
double x = 45.0;
System.out.println( Math.toDegrees(x) );
//2578.3100780887044

3.26 Java toRadians() 方法

//将角度转换为弧度
 double x = 45.0;
 System.out.println( Math.toRadians(x) );
//0.7853981633974483

3.27 Java random() 方法

//用于返回一个随机数,随机数范围为 0.0 =< Math.random < 1.0
 System.out.println( Math.random() );
//0.5444085967267008  ————随机输出,Math.random()是固定用法

速查:

参考资料:菜鸟教程 - 学的不仅是技术,更是梦想!

参考文献:Java基础之int和Integer有什么区别_integer什么意思-CSDN博客

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

S0fM

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

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

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

打赏作者

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

抵扣说明:

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

余额充值