基本类型包装及数学工具类的使用
最近写算法的时候发现,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)
基本类型包装及数学工具类的使用相关推荐
- 第21天学习Java的笔记-数学工具类Arrays,Math
27天! 数学工具类 1.1数组工具类Arrays package Demo2101;/* 注意事项:是Arrays进行调用,不是变量进行调用!!!* java.util.Arrays是一个与数组相关 ...
- Math数学工具类在java中如何使用?
Math数学工具类在java中如何使用? 一.Math数学工具类是什么? 在处理业务的时候,经常遇到一些有关数学方面的计算,特别是做测绘和监测业务时,显得出现的频率及其多, JDK提供了一个Math类 ...
- #学习笔记#13_数学工具类Math
数学工具类Math java.util.Math 类是数学相关的工具类,里面提供了大量的静态方法,完成与数学运算相关的操作 public static double abs(double num):获 ...
- java 加减乘除 工具类_Java数学工具类MathUtil详解
package cn.xbz.util.math; import java.math.BigDecimal; /** * @title 数学计算工具类 * @description 提供常用的数值加减 ...
- Java数学工具类MathUtil
package cn.xbz.util.math;import java.math.BigDecimal;/*** @title 数学计算工具类* @description 提供常用的数值加减乘除计算 ...
- 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第8节 Math类_18_数学工具类Math...
常用几个数学的方法 abs绝对值 ceil向上取整,它并不是四舍五入 floor向下取整 round四舍五入 PI 按住Ctrl+鼠标左键 进入Math这个类的源码里面 Ctrl+F12 然后输入PI ...
- 45.常用的数学工具类2-三角函数的使用
文章目录 题目描述 解题思路 代码详解 运行截图 题目描述 题目:三角函数是数学重要的分支之一,使用三角函数可以解决很多问题.使用Math类的三角函数方法. 解题思路 创建类 Question44 输 ...
- 46. 常用的数学工具类3-反三角函数的使用
文章目录 题目描述 解题思路 代码详解 运行截图 题目描述 题目:反三角函数通常用于获得三角函数对应的弧度,进而转换成角度,用来满足生产和生活中不同的角度应用. 使用Math类的反三角函数方法 解题思 ...
- 52. 常用的数学工具类9-大乐透号码生成器
文章目录 题目描述 解题思路 代码详解 运行截图 题目描述 题目:大乐透是中国体育彩票的一种玩法,是国家体育总局体彩中心为适应市场发展需要,丰富体育彩票的市场结构,经过慎重研究和广泛的市场调研,于20 ...
- 51. 常用的数学工具类8-七星彩号码生成器
文章目录 题目描述 解题思路 代码详解 运行截图 题目描述 题目:七星彩是中国体育彩票的一种玩法,由中国国家体育总局体育彩票管理中心统一发行,2004年5月18日开始在全国联网统一销售.单注最高奖金5 ...
最新文章
- Linux之 xstart调用 x11vnc远程图形化桌面
- 机器学习笔记十四:随机森林
- Android应用程序目录结构框架搭建
- OpenGL Tessellated Triangle镶嵌三角形的实例
- C#与halcon联合开发——内存溢出
- tkinter的可视化拖拽工具_可视化越做越丑?这五个高级图表效果实现流程分享给你...
- 怎么取消自动格式化_iPhone自动扣费怎么取消?App Store、微信、支付宝关闭自动扣费教程...
- 容器编排技术 -- Kubernetes kubectl create service loadbalancer 命令详解
- linux下的C语言开发(管道通信)
- Linux守护进程的启动方法
- C/c++ http请求
- wordpress如何压缩HTML代码
- Solana中的account
- 第二期腾讯AI加速器将面向全球招募AI创业者
- Mysql语句商城系统表案例
- IT英语中英文对照:著名的软件产品
- 用Python写了一个网易云音乐(附源码、视频教程)
- C++ map下标访问的问题
- 在互联网大厂的程序员多久能挣够100万?
- web安全入门之SQL注入-时间型盲注