一、Math
(一)概述 1、Math:用于数学运算的类,如初等指数、对数、平方根和三角函数等。 2、2个成员变量:
- public static final double PI :圆周率,3.141592653589793
- public static final double E:自然对数的底数,2.718281828459045
- public static int abs(int a):
- public static double ceil(double a):
- public static double floor(double a):
- public static int max(int a,int b):
- public static double pow(double a,double b):
- public static int round(float a)
- 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):给出指定的种子,给定种子后,每次得到的随机数是相同的。
<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()
- System.exit(0);
<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、包装类类型:
(二)功能
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);
- Integer 转 int
- int a = Integer.intValue();
2)查看源码
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>
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):商,几位小数,如何舍取