1.4 数字和日期处理
Math类
-
静态常量
- E和PI
-
静态常用方法
- 绝对值:static 基本数据类型 abs(基本数据类型 a)
- 最大值:static 基本数据类型 max(基本数据类型 a,基本数据类型 b)
- 最小值:static 基本数据类型 min(基本数据类型 a,基本数据类型 b)
- 求整:
- double ceil:向上取整
- double floor:向下取整
- double rint(a):返回最接近a的整数,如果两个同样接近的数,取其中的偶数
- int/float round(a):四舍五入
- 三角函数
方法 说明 static double sin(double a) 返回角的三角正弦值,参数以孤度为单位 static double cos(double a) 返回角的三角余弦值,参数以孤度为单位 static double asin(double a) 返回一个值的反正弦值,参数域在 [-1,1],值域在 [-PI/2,PI/2] static double acos(double a) 返回一个值的反余弦值,参数域在 [-1,1],值域在 [0.0,PI] static double tan(double a) 返回角的三角正切值,参数以弧度为单位 static double atan(double a) 返回一个值的反正切值,值域在 [-PI/2,PI/2] static double toDegrees(double angrad) 将用孤度表示的角转换为近似相等的用角度表示的角 staticdouble toRadians(double angdeg) 将用角度表示的角转换为近似相等的用弧度表示的角 - 指数运算
方法 说明 static double exp(double a) 返回 e 的 a 次幂 static double pow(double a,double b) 返回以 a 为底数,以 b 为指数的幂值 static double sqrt(double a) 返回 a 的平方根 static double cbrt(double a) 返回 a 的立方根 static double log(double a) 返回 a 的自然对数,即 lna 的值 static double log10(double a) 返回以 10 为底 a 的对数
random和random类
-
Math.random生成随即类,但只能产生0~1的随机数
-
Random类位于java.util包中
- 构造方法:
- Random():使用一个和当前系统时间对应的数字作为种子数,然后构造Random对象
- Random(seed):使用单个long型参数生成Random对象
- 方法:
方法 说明 boolean nextBoolean() 生成一个随机的 boolean 值,生成 true 和 false 的值概率相等 double nextDouble() 生成一个随机的 double 值,数值介于 [0,1.0),含 0 而不包含 1.0 int nextlnt() 生成一个随机的 int 值,该值介于 int 的区间,也就是 -231~231-1。如果需要生成指定区间的 int 值,则需要进行一定的数学变换 int nextlnt(int n) 生成一个随机的 int 值,该值介于 [0,n),包含 0 而不包含 n。如果想生成指定区间的 int 值,也需要进行一定的数学变换 void setSeed(long seed) 重新设置 Random 对象中的种子数。设置完种子数以后的 Random 对象和相同种子数使用 new 关键字创建出的 Random 对象相同 long nextLong() 返回一个随机长整型数字 boolean nextBoolean() 返回一个随机布尔型值 float nextFloat() 返回一个随机浮点型数字 double nextDouble() 返回一个随机双精度值 - 构造方法:
数字格式化
-
使用DecimalFormat类对结果进行格式化处理
- 是NumberFormat的一个子类,包含一个模式和一组符号
符号 说明 0 显示数字,如果位数不够则补 0 # 显示数字,如果位数不够不发生变化 . 小数分隔符 - 减号 , 组分隔符 E 分隔科学记数法中的尾数和小数 % 前缀或后缀,乘以 100 后作为百分比显示 ? 乘以 1000 后作为千进制货币符显示。用货币符号代替。如果双写,用国际货币符号代替;如果出现在一个模式中,用货币十进制分隔符代替十进制分隔符 - 使用
import java.text.DecimalFormat { DecimalFormat d1 = new DecimalFormat("0.0"); d1.format(data); }
大数字运算
-
BigInteger类
-
创建BigInteger对象:BigInteger(String val)
-
常用方法:
方法名称 说明 add(BigInteger val) 做加法运算 subtract(BigInteger val) 做减法运算 multiply(BigInteger val) 做乘法运算 divide(BigInteger val) 做除法运算 remainder(BigInteger val) 做取余数运算 divideAndRemainder(BigInteger val) 做除法运算,返回数组的第一个值为商,第二个值为余数 pow(int exponent) 做参数的 exponent 次方运算 negate() 取相反数 shiftLeft(int n) 将数字左移 n 位,如果 n 为负数,则做右移操作 shiftRight(int n) 将数字右移 n 位,如果 n 为负数,则做左移操作 and(BigInteger val) 做与运算 or(BigInteger val) 做或运算 compareTo(BigInteger val) 做数字的比较运算 equals(Object obj) 当参数 obj 是 Biglnteger 类型的数字并且数值相等时返回 true, 其他返回 false min(BigInteger val) 返回较小的数值 max(BigInteger val) 返回较大的数值
-
-
BidDecimal类
- 支持任意精度浮点数
- add(BigDecimal a):加法
- substract(a):减法
- multiply(a):乘法
- divide(a,int scale,int roundingMode):除法,小数点后保留scale位
模式名称 说明 BigDecimal.ROUND_UP 商的最后一位如果大于 0,则向前进位,正负数都如此 BigDecimal.ROUND_DOWN 商的最后一位无论是什么数字都省略 BigDecimal.ROUND_CEILING 商如果是正数,按照 ROUND_UP 模式处理;如果是负数,按照 ROUND_DOWN模式处理 BigDecimal.ROUND_FLOOR 与 ROUND_CELING 模式相反,商如果是正数,按照 ROUND_DOWN 模式处理;如果是负数,按照 ROUND_UP 模式处理 BigDecimal.ROUND_HALF_ DOWN 对商进行五舍六入操作。如果商最后一位小于等于 5,则做舍弃操作,否则对最后一位进行进位操作 BigDecimal.ROUND_HALF_UP 对商进行四舍五入操作。如果商最后一位小于 5,则做舍弃操作,否则对最后一位进行进位操作 BigDecimal.ROUND_HALF_EVEN 如果商的倒数第二位是奇数,则按照 ROUND_HALF_UP 处理;如果是偶数,则按照 ROUND_HALF_DOWN 处理
Java Date类、Valendar类
-
Date类
- 构造方法:
- Date():获取系统当前时间
- Date(long date):date表示自1970年1月1日0时0分0秒开始经过date毫秒
- 常用方法:
方法 描述 boolean after(Date when) 判断此日期是否在指定日期之后 boolean before(Date when) 判断此日期是否在指定日期之前 int compareTo(Date anotherDate) 比较两个日期的顺序 boolean equals(Object obj) 比较两个日期的相等性 long getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来,此 Date 对象表示的毫秒数 String toString() 把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy。其中 dow 是一周中的某一天(Sun、Mon、Tue、Wed、Thu、Fri 及 Sat) - 构造方法:
-
Calendar类
- 创建calendar类不能使用new,因为calendar类是抽象类
- 使用getInstance()获取Calendar类:Calendar c = Calendar.getInstance()
方法 描述 void add(int field, int amount) 根据日历的规则,为给定的日历字段 field 添加或减去指定的时间量 amount boolean after(Object when) 判断此 Calendar 表示的时间是否在指定时间 when 之后,并返回判断结果 boolean before(Object when) 判断此 Calendar 表示的时间是否在指定时间 when 之前,并返回判断结果 void clear() 清空 Calendar 中的日期时间值 int compareTo(Calendar anotherCalendar) 比较两个 Calendar 对象表示的时间值(从格林威治时间 1970 年 01 月 01 日00 时 00 分 00 秒至现在的毫秒偏移量),大则返回 1,小则返回 -1,相等返回 0 int get(int field) 返回指定日历字段的值 int getActualMaximum(int field) 返回指定日历字段可能拥有的最大值 int getActualMinimum(int field) 返回指定日历字段可能拥有的最小值 int getFirstDayOfWeek() 获取一星期的第一天。根据不同的国家地区,返回不同的值 static Calendar getInstance() 使用默认时区和语言坏境获得一个日历 static Calendar getInstance(TimeZone zone) 使用指定时区和默认语言环境获得一个日历 static Calendar getInstance(TimeZone zone,Locale aLocale) 使用指定时区和语言环境获得一个日历 Date getTime() 返回一个表示此 Calendar 时间值(从格林威治时间 1970 年 01 月 01 日 00 时00 分 00 秒至现在的毫秒偏移量)的 Date 对象 long getTimeInMillis() 返回此 Calendar 的时间值,以毫秒为单位 void set(int field, int value) 为指定的日历字段设置给定值 void set(int year, int month, int date) 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值 void set(int year, int month, int date, int hourOfDay,int minute, int second) 设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、 MINUTE 和 SECOND 的值 void setFirstDayOfWeek(int value) 设置一星期的第一天是哪一天 void setTimeInMillis(long millis) 用给定的 long 值设置此 Calendar 的当前时间值 - Calendar常量:
- Calendar.YEAR:年份。
- Calendar.MONTH:月份
- Calendar.DATE:日期。
- Calendar.DAY_OF_MONTH:日期,和DATE意义完全相同
- Calendar.HOUR:12小时制的小时
- Calendar.HOUR_OF_DAY:24 小时制的小时
- Calendar.MINUTE:分钟
- Calendar.SECOND:秒
- Calendar.DAY_OF_WEEK:星期几
日期格式化
-
DateFormat类
- 使用getDateInstance获取DateFormat对象,不能使用new
- 方法
方法 描述 String format(Date date) 将 Date 格式化日期/时间字符串 Calendar getCalendar() 获取与此日期/时间格式相关联的日历 static DateFormat getDateInstance() 获取具有默认格式化风格和默认语言环境的日期格式 static DateFormat getDateInstance(int style) 获取具有指定格式化风格和默认语言环境的日期格式 static DateFormat getDateInstance(int style, Locale locale) 获取具有指定格式化风格和指定语言环境的日期格式 static DateFormat getDateTimeInstance() 获取具有默认格式化风格和默认语言环境的日期/时间格式 static DateFormat getDateTimeInstance(int dateStyle,int timeStyle) 获 取具有指定日期/时间格式化风格和默认语言环境的日期/时间格式 static DateFormat getDateTimeInstance(int dateStyle,int timeStyle,Locale locale) 获取具有指定日期/时间格式化风格和指定语言环境的日期/时间格式 static DateFormat getTimeInstance() 获取具有默认格式化风格和默认语言环境的时间格式 static DateFormat getTimeInstance(int style) 获取具有指定格式化风格和默认语言环境的时间格式 static DateFormat getTimeInstance(int style,Locale locale) 获取具有指定格式化风格和指定语言环境的时间格式 void setCalendar(Calendar newCalendar) 为此格式设置日历 Date parse(String source) 将给定的字符串解析成日期/时间 -
SimpleDateFormat类
- 构造方法:
- SimpleDateFormat():用默认的格式和默认的语言环境
- SimpleDateFormat(String pattern):用指定的格式和默认的语言环境
- SimpleDateFormat(String pattern,Locale locale)
- 自定义字母和含义
字母 含义 示例 y 年份。一般用 yy 表示两位年份,yyyy 表示 4 位年份 使用 yy 表示的年扮,如 11;使用 yyyy 表示的年份,如 2011 M 月份。一般用 MM 表示月份,如果使用 MMM,则会根据语言环境显示不同语言的月份 使用 MM 表示的月份,如 05;使用 MMM 表示月份,在 Locale.CHINA语言环境下,如“十月”;在Locale.US语言环境下,如 Oct d 月份中的天数。一般用 dd 表示天数 使用 dd 表示的天数,如 10 D 年份中的天数。表示当天是当年的第几天, 用 D 表示 使用 D 表示的年份中的天数,如 295 E 星期几。用 E 表示,会根据语言环境的不同, 显示不同语言的星期几 使用 E 表示星期几,在 Locale.CHINA 语言环境下,如“星期四”;在 Locale.US 语言环境下,如 Thu H 一天中的小时数(0~23)。一般用 HH 表示小时数 使用 HH 表示的小时数,如 18 h 一天中的小时数(1~12)。一般使用 hh 表示小时数 使用 hh 表示的小时数,如 10 (注意 10 有可能是 10 点,也可能是 22 点) m 分钟数。一般使用 mm 表示分钟数 使用 mm 表示的分钟数,如 29 s 秒数。一般使用 ss 表示秒数 使用 ss 表示的秒数,如 38 S 毫秒数。一般使用 SSS 表示毫秒数 使用 SSS 表示的毫秒数,如 156 - 构造方法: