java 中常用的类
Math
Math 类,包含用于执行基本数学运算的方法
常用API
取整
l static doubleabs(double a)获取double 的绝对值
l static doubleceil(double a) 向上取整(天花板)
l static doublefloor(double a) 向下取整 (地板)
l static longround(doublea) 四舍五入
1 double a = 3.1415926;2 double ceil =Math.ceil(a);3 double floor =Math.floor(a);4 long round =Math.round(a);5 //打印结果 : 4.0---3.0---3
6 System.out.println(ceil +"---"+ floor +"---"+ round);
Math 类中的取整
最值
l staticT max(T t, T t) 返回参数类型值中比较大的值
l staticT min(T t, T t)返回参数类型值中比较小的值
1 double a = 3.156;2 double b = 123;3
4 double max =Math.max(a, b);5 //打印结果 :123.0
6 System.out.println(max);7
8 double min =Math.min(a, b);9 //打印结果 :3.156
10 System.out.println(min);
Math 类中的最值方法
0-1 随机数
l static doublerandom() 返回从0-1的随机数
1 double random =Math.random();2 //打印结果 :0.40999788738259957
3 System.out.println(random);
Math 类中的随机方法
Calendar
Calendar 是日历类,calendar 为抽象类,由于语言的敏感性,calendar 在创建的时候并非直接创建,而是通过静态方法创建,先处理语言的敏感性,在返回子类对象。
Calendar 是通过getInsrance() 静态方法来获取子类对象。
staticCalendargetInstance()使用默认时区和语言环境获得一个日历
示例:
1 public classStringDemo {2 /**
3 * 通过calendar 类中的静态方法,getInstance 获取子类对象4 */
5 static Calendar c =Calendar.getInstance();6 public static voidmain(String[] args) {7 /**
8 * 获取当前日历年份9 * 结果 : 201810 */
11 System.out.println(c.get(Calendar.YEAR));12 }13 }
获取calendar
常用API
获取
lstatic CalendargetInstance()获取日历
l longgetTimeInMillis()获取当前时间的毫秒值
l DategetTime()获取当前时间
lintget(int field)获取指定字段的值
YEAR 年
MONTH 月,从0开始算起,最大11;0代表1月,11代表12月。
DATE 天
HOUR 时
MINUTE分
SECOND秒
设置值
abstract voidadd(int field, int amount)为指定的日历字段增加或减少时间量
voidset(int field, int value)将指定的值设置给指定的字段
voidsetTime(Datedate)将指定的Date 值设置给calendar
voidsetTimeInMillis(long millis)将指定的毫秒值设置给calendar
1 importjava.text.SimpleDateFormat;2 importjava.util.Calendar;3 importjava.util.Date;4
5 public classStringDemo {6 /**
7 * 通过calendar 类中的静态方法,getInstance 获取子类对象8 */
9 static Calendar c =Calendar.getInstance();10 public static voidmain(String[] args){11 /**
12 * 获取当前时间的毫秒值13 * 打印结果:154348347524614 */
15 System.out.println(c.getTimeInMillis());16
17 /**
18 * 获取当前时间19 * 打印结果:Thu Nov 29 17:24:35 CST 201820 * 打印结果:2018-11-29 : 17:24:3521 */
22 Date time =c.getTime();23 System.out.println(time);24 //调用SimpleDateFormat,将当前时间转换为指定格式
25 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd : HH:mm:ss");26 System.out.println(dateFormat.format(time));27
28 /**
29 * 获取当前年份30 * 打印结果:202031 */
32 c.set(Calendar.YEAR, 2020);33 System.out.println(c.get(Calendar.YEAR));34
35 }36 }
calendar 的API 示例
SimpleDateFormat 与 Date
DataFormat 类是针对日期进行格式化,针对字符串进行解析的类,但它是抽象类,所以使用其子类simpleDateFormat
Data 是表示特定的瞬间,精确到毫秒
SimpleDateFormat的构造方法
SimpleDateFormat的API
voidapplyPattern(Stringpattern)将指定模式字符串应用于此日期格式
stringBufferformat(Datedate)将指定的日期以指定的字符串格式输出
Dateparse(Stringtext)将指定字符串解析成时间(date)
y 年 M 月 d 日
h
时 在上午或下午 (1~12)
H
时 在一天中 (0~23)
m
分 s 秒 S 毫秒 E 星期
D
一年中的第几天
F 一月中第几个星期几
w 一年中第几个星期
W 一月中第几个星期
a 上午 / 下午 标记符
k 时 在一天中 (1~24)
K 时 在上午或下午 (0~11)
z 时区
示例:
1 1、将当前时间毫秒值转换成指定时间字符串2 //创建时间格式字符串
3 String str = "yyyy-MM-dd HH:mm:ss 一年中的第D天---一月中第F个星期E---一年中第w个星期";4 SimpleDateFormat dateFormat = newSimpleDateFormat(str);5 /**
6 * 使用System.currentTimeMillis()获取当前时间的毫秒值7 * 将时间毫秒值转换成指定格式的时间日期8 * 打印结果:2018-11-26 09:49:30 一年中的第330天---一月中第4个星期星期一---一年中第48个星期9 */
10 System.out.println(dateFormat.format(System.currentTimeMillis()));11
12
13
14 2、将指定时间字符串转换成时间15 //创建时间字符串
16 String str1 = "2018年11月26日";17 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日");18 //将时间字符串以指定格式,转换成时间
19 Date date =simpleDateFormat.parse(str1);20 //打印结果:Mon Nov 26 00:00:00 CST 2018
21 System.out.println(date);22
23
时间与字符串相互转换
Date API
longgetTime()获取当时时间的毫秒值,和System.currentTimeMillis() 类似
System
System API
void(Objectsrc, int srcPos,Objectdest, int destPos, int length) 从指定源数组中复制一个数组,复制从指定位置开始,到目标数组的指定位置结束
voidexit(int status)终止当前正在运行的java 虚拟机
voidgc()运行垃圾回收器
示例:
1 //创建两个数组,一个有内容,一个长度为10的数组
2 int[] arr = {1,2,3,4,5,6,7,8,9};3 int[] arr1 =new int[10];4 //调用System 中的arraycopy 方法,复制arr数组到arr1中
5 System.arraycopy(arr, 0, arr1, 0, arr.length);6 //打印结果:[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
7 System.out.println(Arrays.toString(arr1));
system 中的arraycopy方法
Random
Random 类 是生成随机数(伪随机数)的类。在进行随机时,随机算法的起源数字称之为种子数,在种子数的基础上进行一定的变换,从而产生需要的随机数字。
相同种子数的Random 对象,相同次数生成的随机数数字是完全相同的。也就是说,两个种子数完全相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。
Random 的构造方法
使用单个 long 种子创建一个新的随机数生成器。
1 //创建random 类,种子数相同
2 Random random = new Random(10);3 Random random1 = new Random(10);4 //生成随机数
5 int i =random.nextInt();6 int i1 =random1.nextInt();7 //打印结果 : -1157793070----1157793070
8 System.out.println(i+"---"+i1);9
10 //创建random 类,生成随机数,无种子数
11 Random random = newRandom();12 Random random1 = newRandom();13 //生成随机数
14 int i =random.nextInt();15 int i1 =random1.nextInt();16 //打印结果 : -1526132103----233068814
17 System.out.println(i+"---"+i1);
Random 种子数对比
Random 类的API
int生成下一个伪随机数。
intnextInt() 返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。
boolean 值。
long 值。
0.0 和 1.0 之间均匀分布的 double 值。
0.0 和 1.0 之间均匀分布的 float 值。
示例:
1 Random random = newRandom();2 //获取 -3到7 之间的随机数,包含-3,不包含7
3 int nextInt = random.nextInt(10)-3;4 //打印结果 5
5 System.out.println(nextInt);
Random 中的nextInt方法
Scanner
Scanner 是jdk1.5 之后添加的类。用于键盘输入内容
构造方法
Scanner,它生成的值是从指定的输入流扫描的。System.in (从键盘扫描)
Scanner,它生成的值是从指定文件扫描的。
Scanner API
int。
double。
示例:
1 //创建Scanner 类
2 Scanner s = newScanner(System.in);3 System.out.println("请输入数字");4 //调用nextLine() 方法,键盘输入
5 String line =s.nextLine();6 //调用nextLine() 方法,键盘输入
7 String line2 =s.nextLine();8 //输出结果
9 System.out.println(line+line2);10
11 //创建Scanner 类
12 Scanner s1 = newScanner(System.in);13 System.out.println("请输入数字");14 //调用nextInt() 方法,键盘输入整数
15 int line3 =s1.nextInt();16 //调用nextInt() 方法,键盘输入整数
17 int line4 =s1.nextInt();18 //输出结果
19 System.out.println(line+line2);
Scanner 调用示例
注意:
Scanner 中 next() 与 nextLine() 的区别
next() : 只读取输入的值,到空格结束。它不能读取由两个空格或者符号隔开的单词。且光标定位到本行
nextLine() : 读取输入的值,包括单词,所有空格以及符号。到回车键结束。且光标定位到下一行