Java基础(三十五)Math、Random类和数字格式化(String.format方法)
一、Math类
Math类常用的方法:
public static long abs (double a) 返回a的绝对值 public static double max (double a,double b) 返回a、b的最大值 public static double min (double a,double b) 返回a、b的最小值 public static double pow (double a,double b) 返回a的b次幂 public static double sqrt (double a) 返回a的平方根 public static double log (double a) 返回a的对数 public static double sin (double a) 返回a的正弦值 public static double asin (double a) 返回a的反正弦值 public static double random() 产生一个0到1之间的随机数,这个随机数不包括0和1
二、Random类
1.两种构造方法
public Random() // 不含参数的构造方法以当前时间作为种子,不同时间运行的结果不同 pbulic Random(long seed) // 而含参的构造方法以种子为基础计算随机数,不同时间以相同顺序执行结果一样,两个具有相同种子的Random对象按相同顺序执行结果也一样。
2.使用方法
package integer.jun.iplab; import java.util.Random; public class RandomTest { public static void main(String[] args) { System.out.println(Math.random()); // 返回一个0(不包括)到1(不包括)之间的随机数 Random rd = new Random(); System.out.println(rd.nextInt()); // 返回32位表示的数的补码形式 System.out.println(rd.nextInt(32)); // 返回0(包括)到32(不包括)的随机数 Random rd_1 = new Random(100); System.out.print(rd_1.nextInt() + " "); System.out.print(rd_1.nextDouble() + " "); System.out.print(rd_1.nextFloat() + " "); System.out.print(rd_1.nextBoolean() + " "); System.out.println(); Random rd_2 = new Random(100); System.out.print(rd_2.nextInt() + " "); System.out.print(rd_2.nextDouble() + " "); System.out.print(rd_2.nextFloat() + " "); System.out.print(rd_2.nextBoolean() + " "); } } 输出: 0.557101449009472 1622116987 18 -1193959466 0.7346627443280227 0.7158033 true -1193959466 0.7346627443280227 0.7158033 true
二、数字格式化
数字格式化是指按照指定格式得到一个字符串。
1.Formatter类
(1)格式化模式是format方法中的一个使用双括号括起来的字符序列,该字符序列由格式和普通字符构成。
(2)值列表是使用逗号分隔的变量、常量或表达式。但是,要保证format方法“格式化模式”中格式符的个数与“值列表”中列出的值的个数相同。
String m = String.format("%d元%.1f箱%d斤", 78, 8.0, 125); System.out.println(m); // 打印: 78元8.0箱125斤
2.格式化整数
(1)格式符
%d,%o,%x和X格式符可格式化byte、Byte、short、Short、int、Integer、long和Long型数据。 %d将值格式化为十进制整数。 %o将值格式化为八进制整数。 %x将值格式化为小写的十六进制整数。 %X将值格式化为大写的十六进制整数。
(2)修饰符
String m1 = String.format("按千分组: %,d; 按千分组带正号: %+,d", 123456, 654321); System.out.println(m1); // 按千分组: 123,456; 按千分组带正号: +654,321
(3)数据的宽度
数据的宽度就是返回字符串的长度,“%md”表示在数字的左面加空格;“%-md”表示在数字的右面加空格
String m2 = String.format("%6d", 777); System.out.println(m2); // 打印: 空格空格空格777 System.out.println(m2.length()); // 打印: 6
3.格式化浮点数
(1)格式符
%f,%e(%E),%g(%G)和%a(%A)格式符可格式化float、Float、double和Double。
(2)修饰符
String m4 = String.format("整数部分按千分组: %,f; 整数部分按千分组带正号: %+,f", 123456789.123456, 123456789.123456); System.out.println(m4); // 整数部分按千分组: 123,456,789.123456; 整数部分按千分组带正号: +123,456,789.123456
(3)限制小数位数的“宽度”
"%.nf"表示保留n位小数,“%mf”表示在数字的左边加上空格凑成长度为m的字符串,“%-mf”表示在数字的右边加上空格凑成长度为m的字符串。
儿女情长什么的,最影响我们闯荡江湖了。