Java中常用类-1

Java中常用类

  • Math
    • 求最大值、最小值和绝对值
    • 求整运算
    • 三角函数运算
    • 指数运算
    • Random
  • Date 类
  • DateFormat 类和SimpleDateFormat 类
    • DateFormat 类
    • SimpleDateFormat 类

Math

在 Java 中 Math 类封装了常用的数学运算,提供了基本的数学操作,如指数、对数、平方根和三角函数等。

Math 类中包含 E 和 PI 两个静态常量,其中 E 用于记录 e 的常量,而 PI 用于记录圆周率的值。

// E 常量的值:2.718281828459045
// PI 常量的值:3.141592653589793

求最大值、最小值和绝对值

方法名称 作用
static int abs(int a) 返回 a 的绝对值
static long abs(long a) 返回 a 的绝对值
static float abs(float a) 返回 a 的绝对值
static double abs(double a) 返回 a 的绝对值
static int max(int x,int y) 返回 x 和 y 中的最大值
static double max(double x,double y) 返回 x 和 y 中的最大值
static long max(long x,long y) 返回 x 和 y 中的最大值
static float max(float x,float y) 返回 x 和 y 中的最大值
static int min(int x,int y) 返回 x 和 y 中的最小值
static long min(long x,long y) 返回 x 和 y 中的最小值
static double min(double x,double y) 返回 x 和 y 中的最小值
static float min(float x,float y) 返回 x 和 y 中的最小值

举例

public static void main(String[] args) {
    System.out.println("1 和 2 的较大值:" + Math.max(1, 2));
    System.out.println("1.6 和 1 的较小值:" + Math.min(1.6,1));
    System.out.println("-12.1 的绝对值:" + Math.abs(-12.1));
}

求整运算

四舍五入,做买卖让钱,油桶等问题时都需要舍去或者进位得到一个整数,在java中同样提供求整运算。

方法名称 作用
static double ceil(double a) 返回大于或等于 a 的最小整数
static double floor(double a) 返回小于或等于 a 的最大整数
static double rint(double a) 返回最接近 a 的整数值,如果有两个同样接近的整数,则结果取偶数
static int round(float a) 将参数加上 1/2 后返回参数最近的整数floot()函数值
static long round(double a) 将参数加上 1/2 后返回与参数最近的整数,然后强制转换为长整型

举例说明:

public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        System.outprintln("请输入一个数字:");
        double num=input.nextDouble();
        System.out.println("大于或等于 "+num+" 的最小整数:" + Math.ceil(num));
        System.out.println("小于或等于 "+num+" 的最大整数:" + Math.floor(num));
        System.out.println("将 "+num+" 加上 0.5 之后最接近的整数:" + Math.round(num));
        System.out.println("最接近 "+num+" 的整数:" + Math.rint(num));
    }

结果如下:

请输入一个数字:
99.01 大于或等于 99.01 的最小整数:100.0 小于或等于 99.01 的最大整数:99.0 将 99.01 加上 0.5 之后最接近的整数:100 最接近 99.01 的整数:99.0

三角函数运算

java中如果不是在算法方面研究,三角函数用的并不是很多。

方法名称 作用
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) 将用孤度表示的角转换为近似相等的用角度表示的角
static double 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 的对数

例子:

public static void main(String[] args) {
    System.out.println("4 的立方值:" + Math.pow(4, 3));
    System.out.println("16 的平方根:" + Math.sqrt(16));
    System.out.println("10 为底 2 的对数:" + Math.log1O(2));
}

该程序的运行结果如下:

4 的立方值:64.0
16 的平方根:4.0
10 为底 2 的对数:0.3010299956639812

Random

在 java 中要生成一个指定范围之内的随机数字有两种方法:一种是调用 Math 类的 random() 方法,一种是使用 Random 类。

Random 类提供了丰富的随机数生成方法,可以产生 boolean、int、long、float, byte 数组以及 double 类型的随机数,这是它与 random() 方法最大的不同之处。random() 方法只能产生 double 类型的 0~1 的随机数。

Random 类位于 java.util 包中,该类常用的有如下两个构造方法。
Random():该构造方法使用一个和当前系统时间对应的数字作为种子数,然后使用这个种子数构造 Random 对象。
Random(long 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() 返回一个随机双精度值

下面编写一个 Java 程序,演示如何使用 Random 类提供的方法来生成随机数。具体代码如下:

public static void main(String[] args) {
    Random r = new Random();
    double d1 = r.nextDouble();    //生成[0,1.0]区间的小数
    double d2 = r.nextDouble()*7;    //生成[0,7.0]区间的小数
    int i1 = r.nextInt(10);    //生成[0,10]区间的整数
    int i2 = r.nextInt(18)-3;    //生成[-3,15]区间的整数
    long l1 = r.nextLong();    //生成一个随机长整型值
    boolean b1 = r.nextBoolean();    //生成一个随机布尔型值
    float f1 = r.nextFloat{);    //生成一个随机浮点型值
    System.out.println("生成的[0,1.0]区间的小数是:" + d1);
    System.out.println("生成的[0,7.0]区间的小数是:" + d2);
    System.out.println("生成的[0,10]区间的整数是:" + il);
    System.out.println("生成的[-3,15]区间的整数是:" + i2);
    System.out.println("生成一个随机长整型值:" + l1);
    System.out.println("生成一个随机布尔型值:" + b1);
    System.out.println("生成一个随机浮点型值:"+ fl);
   
}

本实例每次运行时结果都不相同,这就实现了随机产生数据的功能。该程序的运行结果如下:

生成的[0,1.0]区间的小数是:0.8471314908854594
生成的[0,7.0]区间的小数是:3.376288548243103
生成的[0,10]区间的整数是:8
生成的[-3,15]区间的整数是:3
生成一个随机长整型值:-6309801943074175174
生成一个随机布尔型值:true
生成一个随机浮点型值:0.40940058

Math 类的 random() 方法没有参数,它默认会返回大于等于 0.0、小于 1.0 的 double 类型随机数,即 0<=随机数<1.0。对 random() 方法返回的数字稍加处理,即可实现产生任意范围随机数的功能。

下面使用 random() 方法实现随机生成一个 2~100 偶数的功能。具体代码如下:

public static void main(String[] args) {
    int min = 2;    //定义随机数的最小值
    int max = 100;    //定义随机数的最大值
    //产生一个2~100的数
    int s = (int) min + (int) (Math.random() * (max - min));
    if(s % 2 == 0)    //如果是偶数就输出
        System.out.println("随机数是:" + s);
    else    //如果是奇数就加1后输出
        System.out.println("随机数是:" + ( s + 1));
}

由于 m+(int)(Math.random()*n) 语句可以获取 m~m+n 的随机数,所以 2+(int)(Math. random()*(102-2)) 表达式可以求出 2~100 的随机数。在产生这个区间的随机数后还需要判断是否为偶数,这里使用了对 2 取余数,如果余数不是零,说明随机数是奇数,此时将随机数加 1 后再输出。

该程序的运行结果如下:

随机数是:20

Date 类

Date 类表示系统特定的时间戳,可以精确到毫秒。Date 对象表示时间的默认顺序是星期、月、日、小时、分、秒、年。

Date 类有如下两个构造方法。

  • Date():此种形式表示分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒),使用该构造方法创建的对象可以获取本地的当前时间。
  • Date(long date):此种形式表示从 GMT 时间(格林尼治时间)1970 年 1 月 1 日 0 时 0 分 0 秒开始经过参数 date指定的毫秒数。

这两个构造方法的使用示例如下:

Date date1 = new Date();    //调用无参数构造函数
System.out.println(date1.toString());    //输出:Wed May 18 21:24:40 CST 2016
Date date2 = new Date(60000);    //调用含有一个long类型参数的构造函数
System.out.println(date2);    //输出:Thu Jan 0108:01:00 CST 1970

Date 类的无参数构造方法获取的是系统当前的时间,显示的顺序为星期、月、日、小时、分、秒、年。

提示:Date 类带 long 类型参数的构造方法获取的是距离 GMT 指定毫秒数的时间,60000 毫秒是一分钟,而 GMT(格林尼治标准时间)与 CST(中央标准时间)相差 8 小时,也就是说 1970 年 1 月 1 日 00:00:00 GMT 与 1970 年 1 月 1 日 08:00:00 CST 表示的是同一时间。 因此距离 1970 年 1 月 1 日 00:00:00 CST 一分钟的时间为 1970 年 1 月 1 日 00:01:00 CST,即使用 Date 对象表示为 Thu Jan 01 08:01:00 CST 1970。

方法名称 作用
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)

DateFormat 类和SimpleDateFormat 类

格式化日期表示将日期/时间格式转换为预先定义的日期/时间格式。例如将日期“Fri May 18 15:46:24 CST2016” 格式转换为 “2016-5-18 15:46:24 星期五”的格式。

在 Java 中,可以使用 DateFormat 类和 SimpleDateFormat 类来格式化日期,下面详细介绍这两个格式化日期类的使用。

DateFormat 类

DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。

在创建 DateFormat 对象时不能使用 new 关键字,而应该使用 DateFormat 类中的静态方法,在创建了一个 DateFormat 对象后,可以调用该对象中的方法来对日期/时间进行格式化。
DateFormat 类中常用方法如表所示:

方法名称 作用
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 类

如果使用 DateFormat 类格式化日期/时间并不能满足要求,那么就需要使用 DateFormat 类的子类——SimpleDateFormat。

SimpleDateFormat 类主要有如下 3 种构造方法。

  • SimpleDateFormat():用默认的格式和默认的语言环境构造 SimpleDateFormat。
  • SimpleDateFormat(String pattern):用指定的格式和默认的语言环境构造 SimpleDateFormat。
  • SimpleDateFormat(String pattern,Locale locale):用指定的格式和指定的语言环境构造 SimpleDateFormat。
    SimpleDateFormat 自定义格式中常用的字母及含义如表所示。
字母 含义 示例
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 表示的年份中的天数,如 265
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

举例,编写 Java 程序,使用 SimpleDateFormat 类格式化当前日期并打印,日期格式为“xxxx 年 xx 月 xx 日星期 xxx 点 xx 分 xx 秒”,具体的实现代码如下:

import java.text.SimpleDateFormat;
import java.util.Date;
public class Test13
{
    public static void main(String[] args)
    {
        Date now=new Date();    //创建一个Date对象,获取当前时间
        //指定格式化格式
        SimpleDateFormat f=new SimpleDateFormat("今天是 "+"yyyy 年 MM 月 dd 日 E HH 点 mm 分 ss 秒");
        System.out.pnntln(f.format(now));    //将当前时间袼式化为指定的格式
    }
}

该程序的运行结果如下:

今天是 2018 年 10 月 15 日 星期一 09 点 26 分 23 秒

你可能感兴趣的:(Java中常用类-1)