一、Maths类
1、概述
java.lang
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
2、成员变量
PI:3.145926
3、成员方法
* public static int abs(int a):取绝对值
* public static double ceil(double a):ceil天花板,获取向上取整,但结果是double值
* public static double floor(double a):floor地板,获取向下取整,但结果是double值
* public staticint max(int a,int b):获取两个值中的最大值
* public staticint min(int a,int b):获取两个值中的最小值
* public static double pow(double a,double b):求a^b,指数运算
* public static double random():生成0.0-1.0之间的随机小数,包括0.0,不包括1.0
* public static int round(float a):四舍五入,得到的是一个整数,参数为double的也可以
* public static double sqrt(double a):取根号开平方,返回小数
注意:以上所有成员方法都是静态的,构造方法会被私有(不让其他类来创建该类对象)
二、Random类
1、java.util,父类为Object类,导包
2、功能
* 此类用于产生随机数如果用相同的种子创建两个 Random 实例,
* 则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。
3、构造方法
* public Random():创建一个新的随机数生成器,参数传递的是纳秒值(种子数),每次(每纳秒)运行都会得到不同的值
* public Random(long seed):使用单个long种子创建一个新的随机数生成器,种子不同生成的随机数是不同的(不用管内部机制比较复杂对开发没什么帮助)
4、成员方法
* public int nextInt():返回任意int型随机数
* public int nextInt(int n)(重点掌握):返回[0,n)(左闭右开)区间内的Int值。
import java.util.Random;
public class Demo2_Random {
public static void main(String[] args) {
Random r = new Random();
/*int x = r.nextInt();
System.out.println(x);*/
for(int i = 0; i < 10; i++) {
//System.out.println(r.nextInt());
System.out.println(r.nextInt(100)); //要求掌握,生成在0到n范围内的随机数,包含0不包含n
}
int a = r2.nextInt();
int b = r2.nextInt();
System.out.println(a);
System.out.println(b);*/
}
}
三、System类:System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。
1、java.lang,父类为Object,final类(不能有子类)
2、不能被实例化(构造方法被私有,成员方法均为静态的直接类名调用即可)
3、在System类提供的设施中,有标准输入、标准输出和错误输出流
4、成员方法
- in:标准输入流(键盘输入)
- out:标准输出流(显示器)
- err:标准错误输出流(显示器)。
例如: System.out.println(“Test”);
该行代码的作用是将字符串”Test”输出到系统的标准输出设备上,也就是显示在屏幕上。
后续在学习完IO相关的知识以后,可以使用System类中的成员方法改变标准输入流等对应的设备,例如可以将标准输出流输出的信息输出到文件内部,从而形成日志文件等。
5、成员方法
1)public static void gc():运行垃圾回收器,手动清扫
注意:在一个源文件中不允许出现两个public类,会抢占公共资源,一般建议拥有主方法的类为public
2)public static void exit(int status):终止当前正在运行的java虚拟机
根据惯例,非0状态是异常终止(扣电池),0是正常终止
3)public static long currentTimeMills():返回以毫秒为单位的当前时间,计算程序运行时间
返回:当前时间与谢天世界时1970年1月1日午夜之间的时间差
4)pubiic static void arraycopy(Object src, int srcPos,Object dest, int destPos, int length) :数组拷贝
src--被拷贝的数组,dest--拷贝到哪
从制定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束
System.arraycopy(src, 0,dest, 0, src.length)
public class Demo3_System {
public static void main(String[] args) {
//demo1();
//demo2();
//demo3();
int[] src = {11,22,33,44,55};
int[] dest = new int[8];
for (int i = 0; i < dest.length; i++) {
System.out.println(dest[i]);
}
System.out.println("--------------------------");
System.arraycopy(src, 0, dest, 0, src.length); //将数组内容拷贝
for (int i = 0; i < dest.length; i++) {
System.out.println(dest[i]);
}
}
public static void demo3() {
long start = System.currentTimeMillis(); //1秒等于1000毫秒
for(int i = 0; i < 1000; i++) {
System.out.println("*");
}
long end = System.currentTimeMillis(); //获取当前时间的毫秒值
System.out.println(end - start);
}
public static void demo2() {
System.exit(1); //非0状态是异常终止,退出jvm
System.out.println("11111111111");
}
public static void demo1() {
for(int i = 0; i < 100; i++) {
new Demo();
System.gc(); //运行垃圾回收器,相当于呼喊保洁阿姨
}
}
}
class Demo { //在一个源文件中不允许定义两个用public修饰的类
@Override
public void finalize() {
System.out.println("垃圾被清扫了");
}
}
四、BigInteger类
1、可以让超过Integer范围内的数据进行运算
2、构造方法
* publicBigInteger(String val)
3、成员方法
* public BigInteger add(BigInteger val)
* public BigInteger subtract(BigInteger val)
* public BigInteger multiply(BigInteger val)
* public BigInteger divide(BigInteger val)
* public BigInteger[] divideAndRemainder(BigInteger val)。放商和玉树
五、BigDecimal类
1、由于在运算的时候,float类型和double很容易丢失精度,演示案例。 所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal
2、不可变的、任意精度的有符号十进制数。
3、构造方法
* publicBigDecimal(String val):计算小数的加减乘除,通过构造中传入字符串的方式,可以很精确得到结果,开发时推荐
4、成员方法
* publicBigDecimal add(BigDecimal augend)
* publicBigDecimal subtract(BigDecimal subtrahend)
* publicBigDecimal multiply(BigDecimal multiplicand)
* publicBigDecimal divide(BigDecimal divisor)
import java.util.Date;
public class Demo6_Date {
public static void main(String[] args) {
//demo1();
//demo2();
Date d1 = new Date();
d1.setTime(1000); //设置毫秒值,改变时间对象
System.out.println(d1);
}
public static void demo2() {
Date d1 = new Date();
System.out.println(d1.getTime()); //通过时间对象获取毫秒值
System.out.println(System.currentTimeMillis()); //通过系统类的方法获取当前时间毫秒值
}
public static void demo1() {
Date d1 = new Date(); //如果没有传参数代表的是当前时间
System.out.println(d1);
Date d2 = new Date(0); //如果构造方法中参数传为0代表的是1970年1月1日
System.out.println(d2); //通过毫秒值创建时间对象
}
}
六、Date类:util包下的,不能导入aql包下的
1、类Date 表示特定的瞬间,精确到毫秒。
2、构造方法
* publicDate():当前时间
* publicDate(long date):1970年1月1日,通过毫秒值创建时间对象
3、成员方法
* public longgetTime():返回1970.1.10点以来此data对象表示的毫秒数,通过时间对象获取毫秒值
Ststem.currentTimeMillis():通过系统类的方法获取当前时间毫秒值
* public voidsetTime(long time):设置毫秒值,改变时间对象
七、SimpleDateFormat类:实现日期和字符串的相互转换
1、DateFormat类的概述
* DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。是抽象类,所以使用其子类SimpleDateFormat
2、SimpleDateFormat构造方法
* publicSimpleDateFormat()
* publicSimpleDateFormat(String pattern):创建时间的指定格式
3、成员方法
* publicfinal String format(Date date):将日期对象转换为字符串
* public Dateparse(String source):将时间字符串转换为日期对象
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo7_SimpleDateFormat {
public static void main(String[] args) throws ParseException {
//demo1();
//demo2();
//demo3();
//将时间字符串转换成日期对象
String str = "2000年08月08日 08:08:08";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date d = sdf.parse(str); //将时间字符串转换成日期对象
System.out.println(d);
}
public static void demo3() {
Date d = new Date(); //获取当前时间对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//创建日期格式化类对象
System.out.println(sdf.format(d)); //将日期对象转换为字符串
}
public static void demo2() {
Date d = new Date(); //获取当前时间对象
SimpleDateFormat sdf = new SimpleDateFormat(); //创建日期格式化类对象
System.out.println(sdf.format(d)); //88-6-6 下午9:31
}
public static void demo1() {
//DateFormat df = new DateFormat(); //DateFormat是抽象类,不允许实例化
//DateFormat df1 = new SimpleDateFormat();
DateFormat df1 = DateFormat.getDateInstance(); //相当于父类引用指向子类对象,右边的方法返回一个子类对象
}
}