java中的几个内置类(对象)
|-- Math类(final)
|-- Scanner类(final)
|-- Random类
|-- String类(字符串对象)(字符串对象会在下一篇中认识)
一、Math类:
java.lang.Math
构造方法私有化 ,拿不到对象,所以都是static,
//若Math为普通类
Math math = new Math();
m.xxx();
//static
Math.xxx();
Math.PI;
Math.abs(-1);
数学类
java提供用来处理和计算复杂数学运算的类,叫Math
1. Math类Fields(属性):
|-- PI // 圆周率, 属性
|-- E // 自然常数,属性
注意java中命名规范:
java如何定义常量:
final 关键字
final int A = 10; // 常量
A = 20; // 不允许修改
如果是常量定义,建议使用public static同时修饰(public static final)
常量的命名规范问题,大常量所有单词都是写
2. Math类常见Method(方法)
|-- abs(num) // 返回num值的绝对值
有四个互为重载的方法(没有byte和short,因为有自动类型转换)
|-- abs(num) // 返回num值的绝对值
|-- cbrt(a) // 开立方根
|-- ceil(a) // 向上取整
|-- floor(a) // 向下取整
|--round(double a) //四舍五入
|--max() //返回两个数的较大值
|--min() //返回两个数的较小值
|-- pow(double a, double b) // a^b 幂次方,利用此方法可以计算开n次方
|-- sqrt(a) // a的平方根
|-- random() // 获取一个[0, 1)的随机小数
jshell> Math.cbrt(27)
$3 ==> 3.0jshell> Math.ceil(3.0000001)
$4 ==> 4.0jshell> Math.ceil(3.0000000)
$5 ==> 3.0jshell> Math.floor(3.0000001)
$6 ==> 3.0jshell> Math.floor(3.999999999)
$7 ==> 3.0jshell> Math.round(4.5)
$8 ==> 5jshell> Math.round(4.3)
$9 ==> 4
jshell> Math.max(5, 10)
$12 ==> 10jshell> Math.min(5, 10)
$13 ==> 5
jshell> Math.pow(2, 0.5)
$17 ==> 1.4142135623730951jshell> Math.sqrt(2)
$18 ==> 1.4142135623730951
jshell> Math.random()
$19 ==> 0.5421006746128851jshell> Math.random()
$20 ==> 0.3441662912804695jshell> Math.random()
$21 ==> 0.8122107380072681//随机一个[0, 9]的随机整数
jshell> (int)( Math.random() * 10)
$22 ==> 7jshell> Math.floor((Math.random() * 10))
$26 ==> 0.0
//随机一个[a, b)内的整数(a < b),a >b 需交换两个数(int)( Math.random() * (b - a) + a)
//+a保证下限是20,*(b - a)保证上限
//[20, 100)
jshell> (int)( Math.random() * (100 - 20) + 20)
$128 ==> 39
二、Scanner类:
java.util.Scanner
final,不能有子类
Scanner 是标准输入流,IO流
1. Scanner类Constructors(构造函数):
|--Scanner(inputStream sources)
System.in标准输入流
System.out标准输出流
2. Scanner类常见Method(方法)
无static
jshell> import java.util.Scanner
jshell> Scanner sc = new Scanner(System.in)
sc ==> java.util.Scanner[delimiters=\p{javaWhitespace}+] ... \E][infinity string=\Q∞\E]
|-- next() // 获取字符串,空格作为分隔符(按照一个单词一个单词的读取)
|-- nextInt() //读取一个整数
|-- nextDouble() //读取一个小数
|--nextLine() //读取一行,\n作为分隔符
jshell> sc.next()
this is a book
$189 ==> "this"jshell> sc.nextInt()
6
$190 ==> 6jshell> sc.nextDouble()
3.6
$191 ==> 3.6jshell> sc.nextDouble()
6
$192 ==> 6.0jshell> sc.nextLine()
this is a book
$194 ==> "tthis is a book"
三、Random类:
java.util.Random
普通类
1. Random类Constructors(构造函数):
|--Random()
|--Random(long seed) //传一个种子,让正态分布更加随机一些
Random r = new Random([long seed]);
jshell> Random r = new Random();
r ==> java.util.Random@31dc339bjshell> Random rr = new Random(1025455522L);
rr ==> java.util.Random@31610302
2. Random类常见Method(方法)
随机数:
计算机中随机数都是 伪随机数(自然界中的随机数呈正态分布,是大自然自然运转,不是认为控制的。而计算机中的随机数是通过特定算法得到的,称为伪随机数)
|-- Math.random() // 获取一个[0, 1)的随机小数
|-- java.util.Random
|--next(int bits) //生成下一个随机数
访问修饰符是protected,外界不能访问
1. 同类,Random类是系统,没资格在里面写代码
2. 同包,util包,系统的包,无资格写代码
所以只能通过继承Random类才能使用
|--nextBoolean()
|--nextbytes()
|--nextFloat()
|--nextDouble() //随机获取一个小数
|--nextInt() //随机获取一个整数
|--nextInt(int bound)
|--nextLong()
jshell> r.nextInt(10)
$162 ==> 8jshell> r.nextInt(10)
$163 ==> 0