目录
位运算
奇数转为1,偶数转为0
System.out.println(3&1); // 1
System.out.println(4&1); // 0
数字分隔符_
java7之后允许用下划线分隔数字。例如1_000_000是能正常解析的(当然系统里存的还是数字,只是方便程序员查看。print也是不带下划线的形式)。
数字与字符转换
(char)('a'+12)
// ch-'a'为数字
随机数
Math.random方法:返回[0.0, 1.0)的double数值,借助转换可以获得随机整数。
int max = 1000;
int min = 1;
int ran1;
for (int i = 0; i < 5; i++) {
ran1 = (int)(Math.random() * (max-min) + min);
System.out.println(ran1);
}
java.util.Random类:
new Random()设定seed,nextInt()限制数字的范围。如果seed和范围一致,那么两次产生的随机数就是一样的。但是如果不指定seed(使用一个和当前系统时间对应的数字作为seed),那么两次产生的随机数还是会不同的。
Random类提供的所有方法生成的随机数字都是分布均匀的。
Random r = new Random(1);
int ran1;
for (int i = 0; i < 5; i++) {
ran1 = r.nextInt(100);
System.out.println(ran1);
}
除了生成int外,还可以
数字格式化
十进制数字格式化:java.text.DecimalFormat
double pi = Math.PI;
//取一位整数
System.out.println(new DecimalFormat("0").format(pi)); // 3
//取一位整数和两位小数
System.out.println(new DecimalFormat("0.00").format(pi)); // 3.14
//取两位整数和三位小数,整数不足部分以0填补。
System.out.println(new DecimalFormat("00.000").format(pi)); // 03.142
//取所有整数部分
System.out.println(new DecimalFormat("#").format(pi)); // 3
//以百分比方式计数,并取两位小数
System.out.println(new DecimalFormat("#.##%").format(pi)); // 314.16%
//显示为科学计数法,并取五位小数
System.out.println(new DecimalFormat("#.#####E0").format(pi)); // 3.14159E0
//显示为两位整数的科学计数法,并取四位小数
System.out.println(new DecimalFormat("00.####E0").format(pi)); // 31.4159E-1
//每三位以逗号进行分隔。
System.out.println(new DecimalFormat(",###\u00A4").format(12345678)); // 12,345,678¥
//将格式嵌入文本
System.out.println(new DecimalFormat("Π大小为 #.#####E0 。").format(pi)); // Π大小为 3.14159E0 。
Math常用方法
static double exp(double a) 求e^a
static double pow(double a, double b) 求a^b
sqrt 平方根 cbrt 立方根
static double log(double a) 求ln a
static double log10(double a) 求log10 a
double a = Math.rint(-4.5);
System.out.println(a); // -4
// round 实际是 Math.floor(x+0.5)
int a = (int) Math.round(-11.5);
System.out.println(a); // -11
int b = (int) Math.round(-11.6);
System.out.println(b); // -12
大数字BigInteger和BigDecimal
BigInteger
注意这是个类,所以用 . 的方法使用函数
import java.math.BigInteger;
Scanner input = new Scanner(System.in);
// 从控制台获取用户输入
int num = input.nextInt();
// 初始化BigInteger实例,用String初始化
BigInteger bi = new BigInteger(num + "");
//计算大数字除以3的商
System.out.println("取商操作结果:"+bi.divideAndRemainder(new BigInteger("3"))[0]);
BigDecimal
BigDecimal(double val) // constructor
BigDecimal(String val) // constructor
BigDecimal add(BigDecimal augend) //加法操作
BigDecimal subtract(BigDecimal subtrahend) //减法操作
BigDecimal multiply(BigDecimal multiplieand) //乘法操作
BigDecimal divide(BigDecimal divisor,int scale,int roundingMode ) //除法操作
其中除法的scale是商的小数点后的位数,roundingMode是近似值处理模式
import java.math.BigDecimal;
BigDecimal bd = new BigDecimal(num);
//计算大数字除以3.14的商
System.out.println("取商操作结果:"+bd.divide(new BigDecimal(3.14), 2, BigDecimal.ROUND_CEILING));