最近写算法的时候发现,jdk自带的包装类确实有点厉害,很多功能很有用,但是坑爹的点也很多,而数学工具类是算法神器,顺带也介绍一下。

Integer:int包装类

注意:包装类大部分都是静态方法,只有很少实例方法

注意:补码就是除符号位外,二进制原码的每位求反加一,整数补码和原码一致,Integer里的方法只要和二进制,位,符号有关,就是用的原码的补码。

静态方法

1.String和int相互转化

int parseInt(String s)     //神奇地将字符串转为整数类型,但前提是字符串一定要是个整数,不然会报错

int parseUnsignedInt(String s)     //这个太坑了,这个方法是解析一个无符号整数,不是解析成一个无符号整数,也就是说传的字符串必须是无符号数!!

int parseInt(String s,int radix)      //这个就神奇了,可以将二,八,十六进制的字符串转化为对应整数

int parseUnsignedInt(String s,int radix)      //这个千万别想多了,他的符号位是指正负号,加了Unsigned就是不让你传的字符串加‘-’号,所以我很怀疑这个方法是不是我理解错了

String toString(int i)   //显而易见,将整数转为字符串形式,但是推荐用  i  +“”这种形式,应该都知道

String toUnsignedString(int i)   //坑爹的地方又来了,如果你传了个负数进去,他输出的字符串会是个很奇怪的数字,不用奇怪,它输出的数字就是咱大学学的数字逻辑里的32位的二进制无符号数(也就是说前边那堆1是不用参与计算的,因为是符号位,但是变为无符号位之后,这堆1也要参与计算了)。

String toString(int i,int radix)     //这应该最有用的一个方法了,将一个整数转化为不同进制的形式输出,但是有一点要注意,如果传负数,传出的其它进制的形式也只是在前边加个负号罢了。

String toUnsignedString(int i,int radix)   //坑点又来了,如果你传了个负数,他就会输出我们最熟悉的带符号位(也就是全是1111)的32位的二进制形式,然后再转为八或十六进制。

2.相当于构造方法

Integer valueOf(int i)    //一般不用构造方法,直接自动装箱就行

Integer valueOf(String s)   //将字符串转化为整数,然后自动装箱

Integer valueOf(String s ,int radix)    //是将某进制形式的字符串,转成十进制整数形式,然后装箱

3.判断正负

signum方法返回指定int值的符号(如果指定值为负,则返回-1;如果指定值为零,则返回 0;如果指定值为正,则返回1)。

 int signum(int i) 

4.二进制形式循环左移、循环右移(如果想用,建议先看一遍数字逻辑基础,补码那块)

int rotateRight(int i,int distanc)     //返回的是移完之后转化成的整数

int rotateLeft(int i,int distanc)         

5.整数的二进制中有多少个前/后导0(有限制,不是总体包含几个零)

int numberOfLeadingZeros(int i)  //从32位中的最高位开始

int numberOfTrailingZeros(int i)    //从32位中的最低位开始

leading:在指定 int 值的二进制补码表示形式中最高位(最左边)的   “1”  位之前,返回零位的数量。如果指定值在其二进制补码表示形式中不存在   “1”    位,换句话说,如果它等于零,则返回 32。

也就是返回一个数字的前导0,比如,对于1,它的二进制表示是0...01,前面是31个0,而对于2,它是0...010,前面是30个0。

6.求整数二进制形式最高/低“1”位的权值

int highestOneBit(int i)

传入一个int参数i,返回其二进制最高位1的权值。

  • 若i为正整数,例如i=9,其二进制为1001,最高位1的权值为8,则返回值为8
  • 若i为负整数,最高位1为符号位,返回值为-2147483648
  • 若i为零,返回值为0

int lowestOneBit(int i)

这个就举个例子就行:以12为例,二进制为1100,返回值为4

7. 比大小,取大,取小

int compare(int x,int y)         //输出结果  大于=1;等于=0;小于=-1;

max和min,和math工具类的差不多。

8. 整数二进制表示中1的个数

int bitCount(int i)      //终极神奇

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

实例方法

XXX    XXXValue():     //XXX为其他数字基本类型,可以宽元或收缩位数,实现强转。

注意:其他包装类的方法和Integer都差不多,而且用的也不多,这里就不说了

Math工具类

注意:虽然说是工具类,但是要导的包却是java.lang.Math

math工具类的用法就不用多说了,都是静态方法,返回的都是数字基本类型

这里主要就补充一哈大佬的文章

1 . Math.abs(param) ;  参数可为int ,long, double,float 类型, 返回绝对值;

2  .Math.ceil(param);  ceil意即天花板,  参数可为double型, 返回较大值;

-          * ceil天花板的意思,就是返回大的值,注意一些特殊值

-         System.out.println(Math.ceil(-10.1));   //-10.0

-         System.out.println(Math.ceil(10.70));    //11.0

-         System.out.println(Math.ceil(-0.70));    //-0.0

-         System.out.println(Math.ceil(0.0));     //0.0

3 .Math.floor(param);  floor意即地板, 参数可为double型, 返回较少值;

-          * floor地板的意思,就是返回小的值

-         System.out.println(Math.floor(-10.1));  //-11.0

-         System.out.println(Math.floor(10.7));   //10.0

-         System.out.println(Math.floor(-0.73));   //-1.0

-         System.out.println(Math.floor(0.022));    //0.0

4 .Math.max(param);  参数类型可为int, long, float , double , 返回最大值;

-          * max 两个中返回大的值,min和它相反,就不举例了

-         System.out.println(Math.max(-10.1, -10));   //-10.0

-         System.out.println(Math.max(10.7, 10));     //10.7

5 .Math.random(),  返回一个随机值;    0<=   result    <1;

-        //生成一个int类型值 i,  100 <= i <200

-        int a = (int) (100 + Math.floor(100 * Math.random()));

-        //生成一个int类型值i, 100<= i <= 200

-        int b = (int) (100 + Math.ceil(100 * Math.random()));

6    .Math.rint(param) , 参数可为double类型, 返回四舍五入值,  返回值类型为double , 注意当遇到5时取偶;注意负数的四舍五入为先取绝对值 , 再去四舍五入值, 再加上符号;

-       System.out.println(Math.rint(3.5));  //4.0

-       System.out.println(Math.rint(4.5));  //4.0

-       System.out.println(Math.rint(4.6));  //5.0

-       System.out.println(Math.rint(-4.6)); //-5.0

Math.round(param),  参数可为float,返回为int , 参数可为double, 返回值类型为long, 返回四舍五入值;注意负数的四舍五入为先取绝对值 , 再去四舍五入值, 再加上符号;

-          System.out.println(Math.round(3.5));  //4

-          System.out.println(Math.round(4.5));  //5

-          System.out.println(Math.round(4.6));  //5

-          System.out.println(Math.round(-4.6)); //-5

这两个的区别:rint():返回最接近参数的整数,如果有2个数同样接近,则返回偶数的那个。它有两个特殊的情况:1)如果参数本身是整数,则返回本身。2)如果不是数字或无穷大或正负0,则结果为其本身。
round()就是数学上的四舍五入。

7    求幂(某一个数的n次方):Math.pow(double a,double b);
8    立方正根:Math.cbrt(double a);       平方正根:Math.sqrt(double a);

9     e的N次方的值:Math.exp(double a)                 e的N次方-1的值:Math.Math.expm1(double a)

基本类型包装及数学工具类的使用相关推荐

  1. 第21天学习Java的笔记-数学工具类Arrays,Math

    27天! 数学工具类 1.1数组工具类Arrays package Demo2101;/* 注意事项:是Arrays进行调用,不是变量进行调用!!!* java.util.Arrays是一个与数组相关 ...

  2. Math数学工具类在java中如何使用?

    Math数学工具类在java中如何使用? 一.Math数学工具类是什么? 在处理业务的时候,经常遇到一些有关数学方面的计算,特别是做测绘和监测业务时,显得出现的频率及其多, JDK提供了一个Math类 ...

  3. #学习笔记#13_数学工具类Math

    数学工具类Math java.util.Math 类是数学相关的工具类,里面提供了大量的静态方法,完成与数学运算相关的操作 public static double abs(double num):获 ...

  4. java 加减乘除 工具类_Java数学工具类MathUtil详解

    package cn.xbz.util.math; import java.math.BigDecimal; /** * @title 数学计算工具类 * @description 提供常用的数值加减 ...

  5. Java数学工具类MathUtil

    package cn.xbz.util.math;import java.math.BigDecimal;/*** @title 数学计算工具类* @description 提供常用的数值加减乘除计算 ...

  6. 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第8节 Math类_18_数学工具类Math...

    常用几个数学的方法 abs绝对值 ceil向上取整,它并不是四舍五入 floor向下取整 round四舍五入 PI 按住Ctrl+鼠标左键 进入Math这个类的源码里面 Ctrl+F12 然后输入PI ...

  7. 45.常用的数学工具类2-三角函数的使用

    文章目录 题目描述 解题思路 代码详解 运行截图 题目描述 题目:三角函数是数学重要的分支之一,使用三角函数可以解决很多问题.使用Math类的三角函数方法. 解题思路 创建类 Question44 输 ...

  8. 46. 常用的数学工具类3-反三角函数的使用

    文章目录 题目描述 解题思路 代码详解 运行截图 题目描述 题目:反三角函数通常用于获得三角函数对应的弧度,进而转换成角度,用来满足生产和生活中不同的角度应用. 使用Math类的反三角函数方法 解题思 ...

  9. 52. 常用的数学工具类9-大乐透号码生成器

    文章目录 题目描述 解题思路 代码详解 运行截图 题目描述 题目:大乐透是中国体育彩票的一种玩法,是国家体育总局体彩中心为适应市场发展需要,丰富体育彩票的市场结构,经过慎重研究和广泛的市场调研,于20 ...

  10. 51. 常用的数学工具类8-七星彩号码生成器

    文章目录 题目描述 解题思路 代码详解 运行截图 题目描述 题目:七星彩是中国体育彩票的一种玩法,由中国国家体育总局体育彩票管理中心统一发行,2004年5月18日开始在全国联网统一销售.单注最高奖金5 ...

最新文章

  1. Linux之 xstart调用 x11vnc远程图形化桌面
  2. 机器学习笔记十四:随机森林
  3. Android应用程序目录结构框架搭建
  4. OpenGL Tessellated Triangle镶嵌三角形的实例
  5. C#与halcon联合开发——内存溢出
  6. tkinter的可视化拖拽工具_可视化越做越丑?这五个高级图表效果实现流程分享给你...
  7. 怎么取消自动格式化_iPhone自动扣费怎么取消?App Store、微信、支付宝关闭自动扣费教程...
  8. 容器编排技术 -- Kubernetes kubectl create service loadbalancer 命令详解
  9. linux下的C语言开发(管道通信)
  10. Linux守护进程的启动方法
  11. C/c++ http请求
  12. wordpress如何压缩HTML代码
  13. Solana中的account
  14. 第二期腾讯AI加速器将面向全球招募AI创业者
  15. Mysql语句商城系统表案例
  16. IT英语中英文对照:著名的软件产品
  17. 用Python写了一个网易云音乐(附源码、视频教程)
  18. C++ map下标访问的问题
  19. 在互联网大厂的程序员多久能挣够100万?
  20. web安全入门之SQL注入-时间型盲注

热门文章

  1. 极验验证——滑块拼图验证码
  2. 常用的向量矩阵求导公式
  3. 来了!5G和AI的未来 这10位行业领袖这么说
  4. 云计算网络,在数据中心之中主要有哪些优势?
  5. 互联网产品经理是做什么的
  6. linux 查看CPU使用率
  7. [CUDA报错] CUDA error: device-side assert triggered
  8. java编程获取屏幕分辨率_Java及Jquery获取屏幕分辨率的实现代码
  9. VUE使用echarts实现中国地图航线动态展示
  10. Linux系统下如何挂载NTFS格式U盘