和数学相关的类
java.lang包下的Math类
Math类没有构造器,但该类中的方法均为静态方法,可直接用类名调用。
Math类下的常用方法
方法 解释 static double/float/int/long abs(double/float/int/long a)
返回一个double/float/int/lon绝对值 static double ceil(double a)
返回最小的(最接近负无穷大) double值,该值大于或等于该参数,并等于某个整数。 (向上取整) static double floor(double a)
返回小于或等于参数的最大(最接近正无穷大) double值,等于数学整数。 (向下取整) static long round(double a)
返回最接近 long的参数,其中 long四舍五入为正无穷大。 static int round(float a)
返回最接近的参数 int ,其中 int四舍五入为正无穷大。 static double pow(double a, double b)
将第一个参数的值返回到第二个参数的幂。(返回a的b次幂) static double sqrt(double a)
返回 double值的正确舍入的正平方根。 (返回a的平方根) static double random()
返回值为 double的正值,大于等于 0.0 ,小于 1.0 。(返回[0,1)的随机浮点数),可用于生成一定范围内的随机整数,详见代码示例 static double max(double a, double b)
返回两个 double中的较大值。 static float max(float a, float b)
返回两个 float中的较大值。 static int max(int a, int b)
返回两个 int中的较大值 static long max(long a, long b)
返回两个 long中的较大值。 static double min(double a, double b)
返回两个 double中的较小值。 static float min(float a, float b)
返回两个 float中的较小值。 static int min(int a, int b)
返回两个 int中的较小值。 static long min(long a, long b)
返回两个 long中的较小值。
代码示例
package com. atguigu. math ;
public class TestOne {
public static void main ( String [ ] args) {
for ( int i = 0 ; i < 10 ; i++ ) {
int d = ( int ) ( Math . random ( ) * 10 ) ;
System . out. println ( d) ;
}
System . out. println ( "-----------------------------" ) ;
for ( int i = 0 ; i < 10 ; i++ ) {
int e = ( int ) ( Math . random ( ) * 100 ) ;
System . out. println ( e) ;
}
System . out. println ( "-----------------------------" ) ;
for ( int i = 0 ; i < 10 ; i++ ) {
int f = ( int ) ( Math . random ( ) * 15 ) ;
System . out. println ( f) ;
}
System . out. println ( Math . abs ( - 52.5 ) ) ;
}
}
java.math包下的类
BigInteger类
作用 处理连long都装不下的整数的运算构造方法 BigInteger(String val)
------将BigInteger的十进制字符串表示形式转换为BigIntegerBigInteger类下的常用方法
方法 解释 BigInteger abs() 返回一个BigInteger,它的值是此BigInteger的绝对值。 BigInteger add(BigInteger val) 返回值为 (this + val)的BigInteger。(加) BigInteger subtract(BigInteger val) 返回值为 (this - val)的BigInteger。(减) BigInteger multiply(BigInteger val) 返回值为 (this * val)的BigInteger。 (乘) BigInteger divide(BigInteger val) 返回值为 (this / val)的BigInteger (除) BigInteger remainder(BigInteger val) 返回值为 (this % val)的BigInteger。(取余)
BigDecimal类
作用 (1)处理连double都装不下的浮点数的运算 (2)进行精确浮点运算(double和float进行的精确的浮点运算没有BigDecimal准确)构造方法 BigDecimal(String val)
------将 BigDecimal的字符串表示 BigDecimal转换为 BigDecimal 。BigDecimal类下的常用方法
方法 解释 int scale() 返回这个 BigDecimal的 比例 (即小数点右侧的数字个数即小数部分的位数)。 BigDecimal abs()
返回值为 BigDecimal的绝对值的 BigDecimal ,其大小为 this.scale() 。 BigDecimal add(BigDecimal augend)
返回 BigDecimal ,其值是 (this + augend) ,其标为 max(this.scale(), augend.scale()) 。(加) BigDecimal subtract(BigDecimal subtrahend)
返回 BigDecimal ,其值是 (this - subtrahend) ,其标为 max(this.scale(), subtrahend.scale())(两个操作数的小数位数的最大值) 。 (减) BigDecimal multiply(BigDecimal multiplicand)
返回 BigDecimal ,其值是 (this × multiplicand) ,其标为 (this.scale() + multiplicand.scale()) 。(乘) BigDecimal divide(BigDecimal divisor)
返回一个BigDecimal ,其值是(this / divisor) (除)(利用该方法得商时必须给一个舍入模式(即RoundingMode枚举类类型),不然会报异常 )(除) BigDecimal divide(BigDecimal divisor, RoundingMode roundingMode)
返回 BigDecimal ,其值是根据枚举类的不同得商 即(this / divisor) ,其标为 this.scale() 。 BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
返回一个 BigDecimal其值为 (this / divisor) ,其比例为指定(即scale为指定小数点位数)。 BigDecimal remainder(BigDecimal divisor)
返回 BigDecimal ,其值是 (this % divisor) (取余)
RoundingMode枚举类
枚举类型 解释 CEILING 圆形模式向正无穷大转弯。 (即向正无限大方向舍入的舍入模式(向上取整)) DOWN 舍入模式向零舍入。(即向零方向舍入的舍入模式。(向下取整)) FLOOR 舍入模式向负无穷大转弯。(即向负无限大方向舍入的舍入模式) HALF_DOWN 四舍五入模式向“最近邻居”转弯,除非这两个邻居都是等距离的,在这种情况下,这是倒圆的。 (即向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入。) HALF_EVEN 四舍五入模式向“最近邻居”转弯,除非这两个邻居都是等距离的,在这种情况下,朝向偶数邻居。 (即向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。) HALF_UP 四舍五入模式向“最近邻居”转弯,除非两个邻居都是等距的,在这种情况下是圆括弧的。(即向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。) UNNECESSARY 舍入模式来确定所请求的操作具有精确的结果,因此不需要舍入。(即用于断言请求的操作具有精确结果的舍入模式,因此不需要舍入) UP 舍入模式从零开始。 (即远离零方向舍入的舍入模式)
java.util包下的类
Random类
注意 Random 类和 Math 类下的 random() 方法虽然在名称上相似,但它们是不同的概念和用途构造方法 Random类下的常用方法
方法 解释 protected int next(int bits) 生成下一个伪随机数。 该方法通常是 Random 类中其他方法的基础,不会直接在应用程序中使用,而是由其他方法如 nextInt()、nextLong() 等调用以生成不同范围的随机数。 boolean nextBoolean() 从该随机数生成器的序列返回下一个伪随机数,它是均匀分布的 boolean值。 void nextBytes(byte[] bytes) 生成随机字节并将它们放入用户提供的字节数组中。 double nextDouble() 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 double 值。 float nextFloat() 返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 float 值。 double nextGaussian() 返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的 double 值,其平均值是 0.0,标准差是 1.0。 int nextInt() 从这个随机数生成器的序列返回下一个伪随机数,它是均匀分布的 int值。 int nextInt(int bound) 返回伪随机数,均匀分布 int值介于0(含)和指定值bound(不包括)之间。 long nextLong() 返回下一个伪随机数,它是从这个随机数发生器的序列中均匀分布的 long值。
和日期处理相关的类
JDK1.8之前的日期处理
java.util包下的Date类
构造方法 解释 Date()
分配一个 Date对象并对其进行初始化,以便它表示分配的时间,以最接近的毫秒为单位。 (即会将当前系统的时间保存到该对象中) Date(long date)
分配一个 Date对象,并将其初始化为表示从标准基准时间(称为“时代”)即1970年1月1日00:00:00 GMT起的指定毫秒数。(即把date值初始化为从1970年1月1日00:00:00起的具体时间保存到该对象中)
方法 解释 boolean after(Date when)
测试此(当前)日期是否在指定日期之后 boolean before(Date when)
测试此(当前)日期是否在指定日期之前 int compareTo(Date anotherDate)
两个日期进行比较大小 int getYear()
返回Date对象保存的时间到现在过了多少年 int getTime()
返回自1970年1月1日0:0:0开始当前日期对象所表示的时间之间的毫秒数 void setTime(long time)
将此Date对象设置为自1970年1月1日00:00:00 GMT开始后经过 time毫秒的时间点
java.text包下的SimpleDateFormat类
作用 SimpleDateFormat 类是 Java 中的一个日期格式化类,位于 java.text 包下。它用于将日期对象格式化为指定的字符串类型 (学习) 以及将日期字符串解析为对应的日期对象的功能(了解)构造方法
构造方法 解释 SimpleDateFormat()
创建一个默认格式 的 SimpleDateFormat 对象。它使用默认的日期和时间格式模式,基于系统的默认语言环境。 SimpleDateFormat(String pattern)
创建一个具有指定格式模式 的 SimpleDateFormat 对象。参数 pattern 是一个字符串,用于指定日期和时间的格式。pattern
参数中可以使用特殊的字符表示不同的日期和时间元素,如年份(yyyy)、月份(MM)、日期(dd)、小时(HH)、分钟(mm)、秒(ss)等
方法 解释 StringBuffer format(Date date) 将给定的 Date 对象 按照指定的日期时间格式格式化为一个字符串 。(注意:指定的日期时间格式需要通过SimpleDateFormat构造器来设置)
java.util包下的Calendar类
注意 (1)由于我们只显示出日期是不够的,所以又引入了Calendar类,该类专门用来取代Date的大部分功能 (2)该类不能new,因为该类是一个抽象类,所以我们可以利用该类的一个静态方法getInstance()
方法来获取一个 Calendar 对象的实例Calendar类下的方法
方法 解释 static Calendar getInstance() 使用默认时区和区域设置获取日历。(即获取默认时区的 Calendar 对象)getInstance() 方法返回一个 Calendar 对象,该对象表示当前默认时区的日期和时间,可以使用它来进行日期和时间的计算和操作。 abstract void add(int field, int amount) 根据日历的规则,将指定的时间量添加或减去给定的日历字段(即用于对日期和时间进行增加或减少操作。它可以根据指定的时间字段(field)和增量值(amount)对 Calendar 对象中的日期或时间进行调整。)field
:表示 要调整的时间字段,可以是 Calendar 类中定义的常量,例如 Calendar.YEAR
、Calendar.MONTH
、Calendar.DAY_OF_MONTH
等。通过指定不同的字段,可以对年、月、日、时、分、秒等时间单位进行调整。amount
:表示 要增加或减少的时间量。正值表示增加,负值表示减少。具体增加或减少多少取决于该值的绝对值大小。 int get(int field) 返回给定日历字段的值。(即用于获取指定时间字段的值。它可以返回 Calendar 对象中某个时间字段的具体数值,如年、月、日、时、分、秒等。)参数 field
是一个表示时间字段的常量,定义在 Calendar 类中。常用的时间字段包括:Calendar.YEAR
:年份;Calendar.MONTH
:月份(注意:月份是从 0 开始的,所以要加 1);Calendar.DAY_OF_MONTH
:月份中的天数;Calendar.HOUR_OF_DAY
:24 小时制的小时;Calendar.MINUTE
:分钟;Calendar.SECOND
:秒 Date getTime() 返回Date对象并将当前系统的时间保存到该对象中
JDK1.8之后的日期处理
本地日期时间:LocalDate
类、LocalTime
类、LocalDateTime
类,三个类具有统一API,如图所示
方法 描述 now() / now(ZoneId zone) 静态方法,根据当前时间创建对象/指定时区的对象,该对象包含了日期和时间 of() 静态方法,根据指定日期/时间创建对象 getDayOfMonth()/getDayOfYear() 获得月份天数(1-31) /获得年份天数(1-366) getDayOfWeek() 获得星期几(返回一个 DayOfWeek 枚举值) getMonth() 获得月份, 返回一个 Month 枚举值名 getMonthValue() / getYear() 获得月份(1-12) /获得年份 getHours()/getMinute()/getSecond() 获得当前对象对应的小时、分钟、秒 withDayOfMonth()/withDayOfYear()/withMonth()/withYear() 将月份天数、年份天数、月份、年份修改为指定的值并返回新的对象 with(TemporalAdjuster t) 将当前日期时间设置为校对器指定的日期时间 plusDays(), plusWeeks(), plusMonths(), plusYears(),plusHours() 向当前对象添加几天、几周、几个月、几年、几小时 minusMonths() / minusWeeks()/minusDays()/minusYears()/minusHours() 从当前对象减去几月、几周、几天、几年、几小时 plus(TemporalAmount t)/minus(TemporalAmount t) 添加或减少一个 Duration 或 Period isBefore()/isAfter() 比较两个 LocalDate isLeapYear() 判断是否是闰年(在LocalDate类中声明) format(DateTimeFormatter t) 格式化本地日期、时间,返回一个字符串 parse(Charsequence text) 将指定格式的字符串解析为日期、时间
注意: 以上三个类均不能new对象(java中越牛逼的类一般都不能new对象)
三个类的说明 (1)LocalDate
类------只有年月日没有时分秒(即只有日期没有时间) (2)LocalTime
类------只有时间没有日期 (3)LocalDateTime
类------既有日期又有时间
和系统相关的类
java.lang包下的System类
out属于System类的静态引用属性,引用属性可以调方法,所以就有了System.out.println()
方法 解释 static long currentTimeMillis() 返回当前系统时间距离1970-1-1 0:0:0的毫秒值 static void exit(int status) 退出当前系统 static void gc() 运行垃圾回收器 static String getProperty(String key) 获取系统属性的值 static void arraycopy((Object src, int srcPos, Object dest, int destPos, int length)) 将一个数组的部分或全部元素复制到另一个数组中,还可用于一个数组中的元素新增
String key参数 解释 java.version Java运行时环境的版本号 java.home Java安装目录的路径 os.name 操作系统的名称 os.version 获取操作系统的版本信息 user.home 用户主目录的路径 file.separator 文件分隔符(在Windows上是反斜杠\,在Unix-like系统上是正斜杠/) line.separator 行分隔符(在Windows上是回车换行\r\n,在Unix-like系统上是换行\n
arraycopy()方法参数 解释 src 源数组,表示要复制元素的原始数组 srcPos 源数组的起始位置,表示从源数组的哪个索引开始复制元素 dest 目标数组,表示要将元素复制到的目标数组 destPos 目标数组的起始位置,表示从目标数组的哪个索引开始粘贴元素 length 要复制的元素数量,表示要复制的元素个数