Random
让系统产生随机数使用
0~9的随机数 (int)(Math.random()*10);
0~999的随机数 (int)(Math.random()*1000);
a~b的随机数 (int)(Math.random()*(b-a));
其实Math的random方法用的就是util包中的Random类
因此可以Random.nextDouble()替换Math.random(), 但是这样说不太准确
Calendar类
有时为了取得更多的日期时间信息,或对日期时间进行操作,可以使用java.util.Calendar类,Calendar是一个抽象类,不能实例化,但是通过静态工厂方法getInstance()获得Calendar实例。
Calendar类的主要方法:
static Calendar getInstance():使用默认时区和语言环境获得一个日历。
void set(int field, int value):将给定的日历字段设置为给定值。
void set(int year,int month,int date):设置日历字段YEAR、MONTH和DAY_OF_MONTH的值。
Date getTime():返回一个表示此Calendar时间值(从1970年1月1日00:00:00至现在的毫秒数)的Date对象。
boolean after(Object when):判断此Calendar表示的时间是否在指定时间之后,返回判断结果。
boolean before(Object when):判断此Calendar表示的时间是否在指定时间之前,返回判断结果。
int compareTo(Calendar anotherCalendar):比较两个Calendar对象表示的时间值。
java.lang.Math
Java语言是彻底地面向对象语言,哪怕是进行数学运算也封装到一个类中的,这个类是java.lang.Math,Math类是final的不能被继承。Math类中包含用于进行基本数学运算的方法,如指数、对数、平方根和三角函数等。这些方法分类如下:
舍入方法
static double ceil(double a):返回大于或等于a最小整数。
static double floor(double a):返回小于或等于a最大整数。
static int round(float a):四舍五入方法。
最大值和最小值
static int min(int a, int b):取两个int整数中较小的一个整数。
static int min(long a, long b):取两个long整数中较小的一个整数。
static int min(float a, float b):取两个float浮点数中较小的一个浮点数。
static int min(double a, double b):取两个double浮点数中较小的一个浮点数。
max方法取两个数中较大的一个数,max方法与min方法参数类似也有4个版本,这里不再赘述。
绝对值
static int abs(int a):取int整数a的绝对值。
static long abs(long a):取long整数a的绝对值。
static float abs(float a):取float浮点数a的绝对值。
static double abs(double a):取double浮点数a的绝对值。
三角函数:
static double sin(double a):返回角的三角正弦。
static double cos(double a):返回角的三角余弦。
static double tan(double a):返回角的三角正切。
static double asin(double a):返回一个值的反正弦。
static double acos(double a):返回一个值的反余弦。
static double atan(double a):返回一个值的反正切。
static double toDegrees(double angrad):将弧度转换为角度。
static double toRadians(double angdeg):将角度转换为弧度。
对数运算:static double log(double a),返回a的自然对数。
平方根:static double sqrt(double a),返回a的正平方根。
幂运算:static double pow(double a, double b),返回第一个参数的第二个参数次幂的值。
计算随机值:static double random(),返回大于等于 0.0 且小于 1.0随机数。
常量
圆周率PI, 自然对数的底数E。
大数值
对货币等大值数据进行计算时,int、long、float和double等基本数据类型已经在精度方面不能满足需求了。为此Java提高了两个大数值类:BigInteger和BigDecimal,这里两个类都继承自Number抽象类。
BigInteger
java.math.BigInteger是不可变的任意精度的大整数。BigInteger构造方法有很多,其中字符串参数的构造方法有两个:
BigInteger(String val):将十进制字符串val转换为BigInteger对象。
BigInteger(String val, int radix):按照指定基数radix将字符串val转换为BigInteger对象。
BigInteger提供多种方法,下面列举几个常用的方法:
int compareTo(BigInteger val):将当前对象与参数val进行比较,方法返回值是int,如果返回值是0,则相等;如果返回值小于0,则此对象小于参数对象;如果返回值大于0,则此对象大于参数对象。
BigInteger add(BigInteger val):加运算,当前对象数值加参数val。
BigInteger subtract(BigInteger val):减运算,当前对象数值减参数val。
BigInteger multiply(BigInteger val):乘运算,当前对象数值乘参数val。
BigInteger divide(BigInteger val):除运算,当前对象数值除以参数val。
BigDecimal
java.math.BigDecimal是不可变的任意精度的有符号十进制数。BigDecimal构造方法有很多:
BigDecimal(BigInteger val):将BigInteger对象val转换为BigDecimal对象。
BigDecimal(double val):将double转换为BigDecimal对象,参数val是double类型的二进制浮点值准确的十进制表示形式。
BigDecimal(int val):将int转换为BigDecimal对象。
BigDecimal(long val):将long转换为BigDecimal对象。
BigDecimal(String val):将字符串表示数值形式转换为BigDecimal对象。
BigDecimal提供多种方法,下面列举几个常用的方法:
int compareTo(BigDecimal val):将当前对象与参数val进行比较,方法返回值是int,如果返回值是0,则相等;如果返回值小于0,则此对象小于参数对象;如果返回值大于0,则此对象大于参数对象。
BigDecimal add(BigDecimal val):加运算,当前对象数值加参数val。
BigDecimal subtract(BigDecimal val):减运算,当前对象数值减参数val。
BigDecimal multiply(BigDecimal val):乘运算,当前对象数值乘参数val。
BigDecimal divide(BigDecimal val):除运算,当前对象数值除以参数val。
BigDecimal divide(BigDecimal val, int roundingMode):除运算,当前对象数值除以参数val。roundingMode要应用的舍入模式。
日期时间相关类
Java 8之前日期类是java.util.Date,Date类比较古老,其中的很多方法现在已经废弃了,但是目前仍然有很多程序还在使用Date类。
此外,Java 8之前与日期时间相关类还有DateFormat、Calendar和TimeZone,DateFormat用于日期格式化,Calendar日历类,TimeZone是时区类。
日期格式化和解析
日期格式化类是java.text.DateFormat,DateFormat是抽象类,它的常用具体类是java.text.SimpleDateFormat。
DateFormat中提供日期格式化和日期解析方法,具体方法说明如下:
String format(Date date):将一个Date格式化为日期/时间字符串。
Date parse(String source):从给定字符串的开始解析文本,以生成一个日期对象。如果解析失败则抛出ParseException。
另外,具体类是SimpleDateFormat构造方法如下:
SimpleDateFormat():用默认的模式和默认语言环境的日期格式符号构造SimpleDateFormat。
SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。pattern参数是日期和时间格式模式,下表所示是常用的日期和时间格式模式。
Java 8新日期时间相关类
Java 8之后提供了新的日期时间相关类、接口和枚举,这些类型内容非常多,令人生畏。但是使用起来非常方便。
ava 8之后提供了新的日期时间类有三个:LocalDate、LocalTime和LocalDateTime,它们都位于java.time包中,LocalDate表示一个不可变的日期对象;LocalTime表示一个不可变的时间对象;LocalDateTime表示一个不可变的日期和时间。
这三个类有类似的方法,首先先看看创建日期时间对象相关方法,这三个类并没有提供公有的构造方法,创建它们对象可以使用静态工厂方法,主要有now()和of()方法。
now()方法说明如下:
static LocalDate now():LocalDate静态工厂方法,该方法使用默认时区获得当前日期,返回LocalDate对象。
static LocalTime now():LocalTime静态工厂方法,该方法使用默认时区获得当前时间,返回LocalTime对象。
static LocalDateTime now():LocalDateTime静态工厂方法,该方法使用默认时区获得当前日期时间,返回LocalDateTime对象。
of()方法有很多重载方法,说明如下:
static LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second):按照指定的年、月、日、小时、分钟和秒获得LocalDateTime实例,将纳秒设置为零。
static LocalTime of(int hour, int minute, int second):按照指定的小时、分钟和秒获取一个LocalTime实例。
static LocalDate of(int year, int month, int dayOfMonth):按照指定的年、月和日获得一个LocalDate实例,日期中年、月和日必须有效,否则将抛出异常。
日期格式化和解析
Java 8提供的日期格式化类是java.time.format.DateTimeFormatter,DateTimeFormatter中本身没有提供日期格式化和日期解析方法,这些方法还是由LocalDate、LocalTime和LocalDateTime提供的。
日期格式化
日期格式化方法是format,这三个类每一个都有String format(DateTimeFormatter formatter),参数formatter是DateTimeFormatter类型。
日期解析
日期解析方法是parse,这三个类每一个都有两个版本的parse方法,具体说明如下:
static LocalDateTime parse(CharSequence text):使用默认格式,从一个文本字符串获取一个LocalDateTime实例,如2007-12-03T10:15:30。
static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter):使用指定格式化,从文本字符串获取LocalDateTime实例。
static LocalDate parse(CharSequence text):使用默认格式,从一个文本字符串获取一个LocalDate实例,如2007-12-03。
static LocalDate parse(CharSequence text, DateTimeFormatter formatter):使用指定格式化,从文本字符串获取LocalDate实例。
static LocalTime parse(CharSequence text):使用默认格式,从一个文本字符串获取一个LocalTime实例。
static LocalTime parse(CharSequence text, DateTimeFormatter formatter):使用指定的格式化,从文本字符串获取LocalTime实例。
格式化类DateTimeFormatter对象是通过ofPattern(String pattern)获得,其中pattern是日期和时间格式模式,具体说明参考上上表。