简单常用类:Math 、Random、System、Integer、Character、BigInteger、BigDecimal等

时间:2022-07-19 16:50:30

一、Math 

(一)概述 1、Math:用于数学运算的类,如初等指数、对数、平方根和三角函数等。 2、2个成员变量:
  •  public static final double PI :圆周率,3.141592653589793
  •  public static final double E:自然对数的底数,2.718281828459045
(二)、功能 1、计算取值(直接看API) 1)绝对值 :
  • public static int abs(int a):
2)向上取整:12.34(13),12.78(13)
  •  public static double ceil(double a):
3)向下取整:12.34(12),12.78(12)
  •  public static double floor(double a):
4)最大值(方法的嵌套):
  •  public static int max(int a,int b):
5)a的b次幂
  •  public static double pow(double a,double b):
6)四舍五入:floor(a + 0.5f)
  •  public static int round(float a) 
7)正平方根
  • public static double sqrt(double a):
<span style="font-family:Arial;font-size:18px;"><span style="font-family:Arial;font-size:18px;">public void test1() {
// public static final double PI
System.out.println("PI:" + Math.PI);//3.141592653589793
// public static final double E
System.out.println("E:" + Math.E);//2.718281828459045
System.out.println("--------------");

// public static int abs(int a):绝对值
System.out.println("abs:" + Math.abs(10));//10
System.out.println("abs:" + Math.abs(-10));//10
System.out.println("--------------");

// public static double ceil(double a):向上取整
System.out.println("ceil:" + Math.ceil(12.34));//13.0
System.out.println("ceil:" + Math.ceil(12.56));//13.0
System.out.println("--------------");

// public static double floor(double a):向下取整
System.out.println("floor:" + Math.floor(12.34));//12.0
System.out.println("floor:" + Math.floor(12.56));//12.0
System.out.println("--------------");

// public static int max(int a,int b):最大值
System.out.println("max:" + Math.max(12, 23));//23
// 需求:我要获取三个数据中的最大值
// 方法的嵌套调用
System.out.println("max:" + Math.max(Math.max(12, 23), 18));//23
// 需求:我要获取四个数据中的最大值
System.out.println("max:"
+ Math.max(Math.max(12, 78), Math.max(34, 56)));//78
System.out.println("--------------");

// public static double pow(double a,double b):a的b次幂
System.out.println("pow:" + Math.pow(2, 3));//8.0
System.out.println("--------------");

// public static double random():随机数 [0.0,1.0)
System.out.println("random:" + Math.random());//随机

// 获取一个1-100之间的随机数
System.out.println("random:" + ((int) (Math.random() * 100) + 1));
System.out.println("--------------");

// public static int round(float a) 四舍五入(参数为double的自学)
// floor(a + 0.5f)
System.out.println("round:" + Math.round(12.34f));//12
System.out.println("round:" + Math.round(12.56f));//13
System.out.println("--------------");

//public static double sqrt(double a):正平方根
System.out.println("sqrt:"+Math.sqrt(4));//2.0

}
</span></span>

2、随机数 1)默认随机数:随机数 [0.0,1.0) 
  • public static double random()
<span style="font-family:Arial;font-size:18px;"><span style="font-family:Arial;font-size:18px;">System.out.println("random:" + Math.random());//默认是随机数 [0.0,1.0)
System.out.println("random:" + (int)(Math.random()*100));//默认是随机数 [0,100)
System.out.println("random:" + ((int) (Math.random() * 100) + 1));//默认是随机数 [1,100]
System.out.println("random:" + ((int) (Math.random() * 100) + 1));</span></span></span>

2)面试:实现获取任意范围内的随机数
  • int number = (int) (Math.random() * (end - start + 1)) + start;

<span style="font-family:Arial;font-size:18px;"><span style="font-family:Arial;font-size:18px;">/**
* 请设计一个方法,可以实现获取任意范围内的随机数。
*/
public void test2() {
int start = 100;
int end = 200;

// 回想我们讲过的1-100之间的随机数
// int number = (int) (Math.random() * 100) + 1;
// int number = (int) (Math.random() * end) + start;
// 发现有问题了,怎么办呢?
for (int i = 0; i < 1000; i++) {
int number = (int) (Math.random() * (end - start + 1)) + start;//最终结果
System.out.print(number+" ");
}
}
</span></span>

二、Random

(一)概述 1、Random:产生随机数的类,其实Math.random() 更好用。 2、构造方法:
  • public Random():没有给种子,用的是默认种子,是当前时间的毫秒值 。
  • public Random(long seed):给出指定的种子,给定种子后,每次得到的随机数是相同的。
(二)功能 1、常用功能 1)public int nextInt():返回的是int范围内的随机数 2)public int nextInt(int n):返回的是[0,n)范围的内随机数

<span style="font-family:Arial;font-size:18px;">// 创建对象
//Random r1 = new Random();
Random r = new Random(1111);

for (int x = 0; x < 10; x++) {
// int num = r.nextInt();
int num = r.nextInt(100) + 1;
System.out.println(num);
}
</span></span>

三、System

(一)、概述

1、System类包含一些有用的类字段和方法。它不能被实例化。
(二)、功能 1、public static void gc():运行垃圾回收器。
  • 默认会调用 finalize()
简单常用类:Math 、Random、System、Integer、Character、BigInteger、BigDecimal等


2、public static void exit(int status):终止当前正在运行的 Java 虚拟机。参数用作状态码;根据惯例,非 0 的状态码表示异常终止。 
  • System.exit(0);
3、public static long currentTimeMillis:返回以毫秒为单位的当前时间
<span style="font-family:Arial;font-size:18px;"><span style="font-family:Arial;font-size:18px;">// 要求:请大家给我统计这段程序的运行时间
long start = System.currentTimeMillis();
for (int x = 0; x < 100000; x++) {
System.out.println("hello" + x);
}
System.out.println("共耗时:" + (System.currentTimeMillis() - start) + "毫秒");
</span></span>

4、public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length):数组的复制

四、Integer

(一)概述

1、为了对基本数据类型进行更多的操作,更方便的操作,Java就针对每一种基本数据类型提供了对应的类类型。 2、包装类类型:

简单常用类:Math 、Random、System、Integer、Character、BigInteger、BigDecimal等

(二)功能

1、常用进制转换和最值

<span style="font-family:Arial;font-size:18px;">public void test1(){

//进制转换
System.out.println(Integer.toBinaryString(100));
System.out.println(Integer.toOctalString(100));
System.out.println(Integer.toHexString(100));

//最大值与最小值
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
}
</span>

2、int、String的相互转化

1)int 转成 String
  • 方法一:利用空“”
  • 方法二:String.valueOf()-推荐
  • 方法三:Integer.toString()
<span style="font-family:Arial;font-size:18px;">//int-->String
//方法一
int a1 = 12345;
String s1 = "" + a1;
System.out.println("s1:" + s1);

// 方法二
int a2 = 12345;
String str = String.valueOf(a2);
System.out.println(str);

// 方法三
String s4 = Integer.toString(a2);
System.out.println("s4:" + s4);
</span>

2)String 转成 Int

  • 方法一:Ingteger的构造方法
  • 方法二:Integer.parseInt()
<span style="font-family:Arial;font-size:18px;"><span style="font-family:Arial;font-size:18px;">String s = "100";
// 方式1
// String -- Integer -- int
Integer ii = new Integer(s);
// public int intValue()
int x = ii.intValue();
System.out.println("x:" + x);
//方式2
String b = "100";
int y = Integer.parseInt(b);
System.out.println("y:"+y);</span></span>

3、十进制与其他进制的转化 1)十进制到其他进制:Integer.toString(int i,int radix) 2)其他进制到十进制:Integer.parseInt(String s,int radix)

<span style="font-family:Arial;font-size:18px;">/*
* 常用的基本进制转换
* public static String toBinaryString(int i)
* public static String toOctalString(int i)
* public static String toHexString(int i)
*
* 十进制到其他进制
* public static String toString(int i,int radix)
* 由这个我们也看到了进制的范围:2-36
* 为什么呢?0,...9,a...z
*
* 其他进制到十进制
* public static int parseInt(String s,int radix)
*/
public void test4(){
// 十进制到二进制,八进制,十六进制
System.out.println(Integer.toBinaryString(100));
System.out.println(Integer.toOctalString(100));
System.out.println(Integer.toHexString(100));
System.out.println("-------------------------");

// 十进制到其他进制,进制的范围:2-36
System.out.println(Integer.toString(100, 10));
System.out.println(Integer.toString(100, 2));
System.out.println(Integer.toString(100, 8));
System.out.println(Integer.toString(100, 16));
System.out.println(Integer.toString(100, 5));
System.out.println(Integer.toString(100, 7));
System.out.println(Integer.toString(100, -7));//100
System.out.println(Integer.toString(100, 70));//100
System.out.println(Integer.toString(100, 1));
System.out.println(Integer.toString(100, 17));
System.out.println(Integer.toString(100, 32));
System.out.println(Integer.toString(100, 37));//100
System.out.println(Integer.toString(100, 36));
System.out.println("-------------------------");

//其他进制到十进制
System.out.println(Integer.parseInt("100", 10));
System.out.println(Integer.parseInt("100", 2));
System.out.println(Integer.parseInt("100", 8));
System.out.println(Integer.parseInt("100", 16));
System.out.println(Integer.parseInt("100", 23));
//NumberFormatException
System.out.println(Integer.parseInt("123", 2));//类型数据不正确(2进制只有0和1)

}
</span>

4、自动装箱拆箱
1)自动装箱:把基本类型转换为包装类类型 。
  • int 转 Integer
  • Integre integre = Integer.valueOf(100);
2)自动拆箱:把包装类类型转换为基本类型
  • Integer 转 int
  • int a = Integer.intValue();
3)面试点 1)问题:自动装箱操作,

简单常用类:Math 、Random、System、Integer、Character、BigInteger、BigDecimal等


2)查看源码

简单常用类:Math 、Random、System、Integer、Character、BigInteger、BigDecimal等

3)分析:
  • Integer i7 = 127 其实是 Integer ii = Integer.valueOf(127)自动装箱。
  • 通过查看源码,我们就知道了,针对-128到127之间的数据,做了一个数据缓冲池,如果数据是该范围内的,每次并不创建新的空间。直接在缓冲池取。


五、Character

1、方法
  • public static boolean isUpperCase(char ch):判断给定的字符是否是大写字符
  • public static boolean isLowerCase(char ch):判断给定的字符是否是小写字符
  • public static boolean isDigit(char ch):判断给定的字符是否是数字字符
  • public static char toUpperCase(char ch):把给定的字符转换为大写字符
  • public static char toLowerCase(char ch):把给定的字符转换为小写字符

六、BigInteger

(一)概述

1、BigInteger:可以让超过Integer范围内的数据进行运算,大整数。 2、构造方法:BigInteger(String val)   1)Integer.MAX_VALUE 的值为 2147483647,当大于这个数后,Integer会报错,NumberFormatException 2)实例:
<span style="font-family:Arial;font-size:18px;"> //这几个测试,是为了简单超过int范围内,Integer就不能再表示,所以就更谈不上计算了。
Integer i = new Integer(100);
System.out.println(i);
System.out.println(Integer.MAX_VALUE);
Integer ii = new Integer("2147483647");
System.out.println(ii);
// NumberFormatException
Integer iii = new Integer("2147483648");
System.out.println(iii);

// 通过大整数来创建对象
BigInteger bi = new BigInteger("2147483648");
System.out.println("bi:" + bi);
</span>

(二)常用功能(API)

1、public BigInteger add(BigInteger val):加 2、public BigInteger subtract(BigInteger val):减 3、public BigInteger multiply(BigInteger val):乘 4、public BigInteger divide(BigInteger val):除 5、public BigInteger[] divideAndRemainder(BigInteger val):返回商和余数的数组


七、BigDecimal

(一)概述 1、float和double丢失精度问题:
<span style="font-family:Arial;font-size:18px;"><span style="font-family:Arial;font-size:18px;">//因为float类型的数据存储和整数不一样导致的。它们大部分的时候,都是带有有效数字位。
System.out.println(0.09 + 0.01);//0.09999999999999999
System.out.println(1.0 - 0.32);//0.6799999999999999
System.out.println(1.015 * 100);//101.49999999999999
System.out.println(1.301 / 100);//0.013009999999999999
</span></span>

简单常用类:Math 、Random、System、Integer、Character、BigInteger、BigDecimal等 2、BigDecimal类:不可变的、任意精度的有符号十进制数,可以解决数据丢失问题。
3、构造方法:public BigDecimal(String val) ,推荐使用String的构造函数,其他可能还会有问题。
(二)常用功能(API) 1、public BigDecimal add(BigDecimal augend) :加 2、public BigDecimal subtract(BigDecimal subtrahend) :减 3、public BigDecimal multiply(BigDecimal multiplicand) :乘 4、public BigDecimal divide(BigDecimal divisor) :除 5、public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode):商,几位小数,如何舍取