常用类
一.Math类
java的Math类包含了用于执行基本数学运算的属性和方法。Math类的方法和属性都被定义为static形式,可以通过类名来调用。
- 成员变量
成员变量 | 说明 |
---|---|
public static final double E | 比任何其他值都更接近 e的 double 值 |
public static final double PI | 比任何其他值都更接近 pi的 double 值 |
- 常用成员方法
成员方法 | 示例 | 说明 |
---|---|---|
abs() | public static int abs(int a) | 返回参数的绝对值 |
ceil() | public static double ceil(double a) | 向上取整 |
floor() | public static double floor(double a) | 向下取整 |
pow() | public static double pow(double a, double b) | 返回第一个参数的第二个参数次方 |
random() | public static double random() | 产生随机数 |
rand() | public static long round(float) | 四舍五入 |
sqrt() | public static double sqrt(double a) | 正平方根 |
示例1:
public static void main(String[] args)
{
//public static final double E
System.out.println(Math.E);
//public static final double PI
System.out.println(Math.PI);
//public static int abs(int a):绝对值
System.out.println(Math.abs(-10));
//public static double ceil(double a):向上取整
System.out.println(Math.ceil(2.3455566777));
//public static double floor(double a):向下取整
System.out.println(Math.floor(1.23456));
//public static int max(int a, int b):求最大值
System.out.println(Math.max(1,2));
//public static double pow(double a, double b):a的b次幂
System.out.println(Math.pow(2.3,4.5));
// public static double random():产生随机数
System.out.println(Math.random());
//public static long round(float):四舍五入
System.out.println(Math.round(0.3421f));
System.out.println(Math.round(12.56f));
// public static double sqrt(double a):正平方根
System.out.println(Math.sqrt(9));
}
运行结果:
2.718281828459045
3.141592653589793
10
3.0
1.0
2
42.43998894277659
0.848480498556304
0
13
3.0
示例2:设计一个方法,可以实现任意范围内的随机数
分析:
- A:键盘录入两个数据:int start,int end
- B:获取Start到end之间的随机数
- C:输出这个随机数
public class MathDemo
{
public static void main(String[] args)
{
//键盘录入数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入开始数:");
int start = sc.nextInt();
System.out.println("请输入结束数:");
int end = sc.nextInt();
for(int x=0;x<100;x++)
{
//调用功能
int num = getRandom(start,end);
//输出结果
System.out.println(num);
}
}
/*
* 写一个功能:
* 两个明确:
* 返回值类型:Int
* 参数列表:int start,int end
*/
public static int getRandom(int start,int end)
{
//1-100之间的随机数
//int number = (int)(Math.random() * 100 + 1);
//int number = (int)(Math.random()*end+start);
int number = (int)(Math.random()*(end-start+1)+start);
return(number);
}
}
二.Random类
此类用于差生随机数
- 成员变量:无
- 构造方法
构造方法 | 说明 |
---|---|
public Random() | 没有给种子,用的是默认种子,是当前时间的毫秒值 |
public void setSeed(long seed) | 给出指定的种子 |
- 成员方法
成员方法 | 举例 | 说明 |
---|---|---|
nextXXX() | public int nextInt() | 返回int范围内的随机数 |
nextInt(n) | public int nextInt(int n) | 返回的是[0,n)范围内的随机数,注意:不包括n |
public static void main(String[] args)
{
//通过构造方法创建一个Random对象
//Random r = new Random();每次产生的数不同
Random r = new Random(4);//给定种子后,每次产生的数相同
for(int x=0;x<10;x++)
{
//int num = r.nextInt();
int num = r.nextInt(100)+1;//0-100间随机数
System.out.println(num);
}
}
三. System类
System 类包含一些有用的类字段和方法,它不能被实例化。该类的构造方法时私有的,所以无法创建该类的对象,也就是无法实例化。
- 成员变量
成员变量 | 成员方法 |
---|---|
in | 标准输入流 |
out | 标准输出流 |
err | 标准错误输出流 |
- 成员方法
成员方法 | 举例 | 说明 |
---|---|---|
exit() | public static void exit(int status) | 终止当前正在运行的 Java 虚拟机 |
currentTimeMillis() | public static long currentTimeMillis() | 返回以毫秒为单位的当前时间 |
arraycopy() | public static void arraycopy() | 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。 |
public static void main(String[] args)
{
//public static void exit(int status)
/*
System.out.println("我们喜欢杨洋");
System.exit(0);
System.out.println("我们喜欢林志颖");
*/
//public static long currentTimeMillis()
System.out.println(System.currentTimeMillis());
//
long start = System.currentTimeMillis();
for(int x=0;x<100000;x++)
{
System.out.println(x);
}
long end = System.currentTimeMillis();
System.out.println(end-start);
}
public static void main(String[] args)
{
//定义一个数组
int[] arr = {11,22,33,44,55};
int[] arr2 = {6,7,8,9,10};
//从arr的索引1开始复制两个数,到arr2中,从索引2开始粘贴两个数
System.arraycopy(arr, 1, arr2, 2, 2);
System.out.println(Arrays.toString(arr));//[11, 22, 33, 44, 55]
System.out.println(Arrays.toString(arr2));//[6, 7, 22, 33, 10]
}
四. BigInteger类
大数处理类
- 构造方法:
构造方法 | 说明 |
---|---|
public BigInteger(String val) | 将 BigInteger 的十进制字符串表示形式转换为 BigInteger |
public static void main(String[] args)
{
/*
Integer i = new Integer(100);
System.out.println(i);
//System.out.println(Integer.MAX_VALUE);
Integer ii = new Integer("2147483647");
System.out.println("ii");
//出现错误NumberFormatException
Integer iii = new Integer("2147483648");
System.out.println("iii");
*/
//通过大整数来创建对象
BigInteger bi = new BigInteger("2147483648");
System.out.println("bi:"+bi);
}
- 成员方法
成员方法 | 举例 | 说明 |
---|---|---|
add() | public BigInteger add(BigInteger val) | 加 |
subtract() | public BigInteger subtract(BigInteger val) | 减 |
multiply() | public BigInteger multiply(BigInteger val) | 乘 |
divide() | public BigInteger divide(BigInteger val) | 除 |
divideAndRemainder() | public BigInteger[] divideAndRemainder(BigInteger val) | 返回商和余数的数组 |
public static void main(String[] args)
{
BigInteger bi1 = new BigInteger("100");
BigInteger bi2 = new BigInteger("50");
// public BigInteger add(BigInteger val):加
System.out.println(bi1.add(bi2));
//public BigInteger subtract(BigInteger val):减
System.out.println(bi1.subtract(bi2));
//public BigInteger multiply(BigInteger val):乘
System.out.println(bi1.multiply(bi2));
//public BigInteger divide(BigInteger val):除
System.out.println(bi1.divide(bi2));
//public BigInteger[] divideAndRemainder(BigInteger val):返回商和余数的数组
BigInteger[] bis = bi1.divideAndRemainder(bi2);
System.out.println("商:"+bis[0]);
System.out.println("余数:"+bis[1]);
}
五. BigDecimal类
小数处理类,由于float和double类型的数据很容易丢失精度,所以为了能精确地表示,计算浮点数,java提供了 BigDecimal
public static void main(String[] args)
{
//丢失精度
System.out.println(0.09+0.01);//0.09999999999999999
System.out.println(1.0-0.32);//0.6799999999999999
System.out.println(1.0-0.12);//0.88
}
- 构造方法
构造方法 | 说明 |
---|---|
public BigDecimal(String val) | BigDecimal 的字符串表示形式转换为 BigDecima |
- 成员方法
成员方法 | 举例 | 说明 |
---|---|---|
add() | public BigDecimal add(BigDecimal augend) | 加 |
subtract() | public BigDecimal subtract(BigDecimal subtrahend) | 减 |
multiply() | public BigDecimal multiply(BigDecimal multiplicand) | 乘 |
divide() | public BigDecimal divide(BigDecimal divisor) | 除 |
divide(BigDecimal divisor,int scale,int roundingMode) | public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode) | 商,几位小数,如何舍取 |
public static void main(String[] args)
{
BigDecimal bd1 = new BigDecimal("0.09");
BigDecimal bd2 = new BigDecimal("0.01");
//public BigDecimal add(BigDecimal augend)
System.out.println(bd1.add(bd2));
//public BigDecimal subtract(BigDecimal subtrahend)
System.out.println(bd1.subtract(bd2));
//public BigDecimal multiply(BigDecimal multiplicand)
System.out.println(bd1.multiply(bd2));
//public BigDecimal divide(BigDecimal divisor)
System.out.println(bd1.divide(bd2));
//public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)
BigDecimal bd3 = new BigDecimal("0.1301");
BigDecimal bd4 = new BigDecimal("100");
System.out.println(bd3.divide(bd4));
System.out.println(bd3.divide(bd4, 3,BigDecimal.ROUND_HALF_DOWN ));//小数点后留3位
}
六. Date类
- 构造方法
构造方法 | 说明 |
---|---|
public Date() | 根据当前的默认毫秒值创建日期对象 |
public Date(long date) | 根据的给定的毫秒值创建日期对象 |
public static void main(String[] args)
{
//创建对象
Date d = new Date();
System.out.println("d:"+d);//d:Wed Feb 27 18:02:34 CST 2019
//创建对象
long time = System.currentTimeMillis();
Date d1 = new Date(time);
System.out.println("d1:"+d1);//d1:Wed Feb 27 18:02:34 CST 2019
}
- 成员方法
成员方法 | 举例 | 说明 |
---|---|---|
getTime() | public long getTime() | 获取时间,以毫秒为单位 |
setTime() | public void setTime(long time) | 设置时间 |
从Date得到一个毫秒值:getTime()
从一个毫秒值得到Date:构造方法
public static void main(String[] args)
{
//创建对象
Date d = new Date();
//获取时间
long time = d.getTime();
System.out.println(time);//1551262055672
System.out.println(System.currentTimeMillis());//1551262055672
System.out.println(d);//Wed Feb 27 18:07:35 CST 2019
//设置时间
d.setTime(10000);//10000就是一个小时
System.out.println(d);//Thu Jan 01 08:00:10 CST 1970
}
七. DateFormate类:
- DateFormate是一个抽象类,可以进行日期和字符串的格式化和解析,一般使用其具体子类SimpleDateFormat.
Date--》String:
使用SimpleDateFormat类的format()方法
String format(Date date):将Date格式化为日期/时间的字符串String--》Date:
使用SimpleDateFormat类的parse()方法
Date parse(String source)将符合格式的指定字符串转换为日期。
- SimpleDateFormat的构造方法:
SimpleDateFormate():按照默认模式创建格式化对象
public SimpleDateFormat(String pattern):按照给定的模式创建格式化对象
- 日期和时间模式:
模式字符串 | 说明 |
---|---|
yyyy | 年 |
MM | 月 |
dd | 日 |
hh | 1~12小时制(1-12) |
HH | 24小时制(0-23) |
mm | 分 |
ss | 秒 |
S | 毫秒 |
public static void main(String[] args) throws ParseException
{
//Date---String
//创建日期对象
Date d = new Date();
//创建格式化对象
//用默认模式
//SimpleDateFormat sdf = new SimpleDateFormat();
//public final String format(Date date)将一个 Date 格式化为日期/时间字符串。
//用给定模式
//public SimpleDateFormat(String pattern)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
String s = sdf.format(d);
System.out.println(s);
//String---Date
String str = "2008-08-08 12:12:12";
//在把一个字符串解析为日期时,请注意格式必须和给定的字符串格式匹配。
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
//public Date parse(String source)从给定字符串的开始解析文本,以生成一个日期。
Date dd = sdf1.parse(str);
System.out.println(dd);
}
计算你来到这个世界的天数:
public static void main(String[] args) throws ParseException
{
//键盘录入你的出生年月日
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的出生年月日:");
String s = sc.nextLine();
//把该字符串转换为一个日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
//public Date parse(String source)从给定字符串的开始解析文本,以生成一个日期
Date d = sdf.parse(s);
//通过该日期得到一个毫秒值
long mytime = d.getTime();
//获取当前时间的毫秒值
long nowTime = System.currentTimeMillis();
//用D-C得到一个毫秒值
long time = nowTime-mytime;
//把E的毫秒值转换为年
long day = time/1000/60/60/24;
System.out.println("你来到这个世界的天数:"+day);
}
八. Calendar类
Calendar类是一个抽象类,在实际使用时实现特定的子类的对象。且Calendar类的构造方法是protected的,所以无法使用Calendar类的构造方法来创建对象,但可以通过Calendar中的getInstance()方法来获取通用对象。
- public static Calendar getInstance():获取通用对象。
- public int get(int field):返回给定日历字段的值。
public static void main(String[] args)
{
//其日历字段已由当前日期和时间初始化
Calendar rightNow = Calendar.getInstance(); //子类对象
//获取年
int year = rightNow.get(Calendar.YEAR);
//获取月
int month = rightNow.get(Calendar.MONTH);
//获取日
int day = rightNow.get(Calendar.DATE);
System.out.println(year+"年:"+month+"月:"+day+"日");
}
- public abstract void add(int field,int amount):
根据日历的规则,为给定的日历字段添加或减去指定的时间量。 - public void set(int year,int date,int day):设置年月日
public static void main(String[] args)
{
//获取当前的日历时间
Calendar c = Calendar.getInstance();
//获取年
int year = c.get(Calendar.YEAR);
//获取月
int month = c.get(Calendar.MONTH);
//获取日
int day = c.get(Calendar.DATE);
System.out.println(year+"年:"+month+"月:"+day+"日");
//获取三年前的今天
c.add(Calendar.YEAR, -3);
//获取年
year = c.get(Calendar.YEAR);
//获取月
month = c.get(Calendar.MONTH);
//获取日
day = c.get(Calendar.DATE);
System.out.println(year+"年:"+month+"月:"+day+"日");
//获取五年后的十天前
c.add(Calendar.YEAR, +5);
c.add(Calendar.DATE, -10);
//获取年
year = c.get(Calendar.YEAR);
//获取月
month = c.get(Calendar.MONTH);
//获取日
day = c.get(Calendar.DATE);
System.out.println(year+"年:"+month+"月:"+day+"日");
//设置年月日
c.set(2011, 11,11);
//获取年
year = c.get(Calendar.YEAR);
//获取月
month = c.get(Calendar.MONTH);
//获取日
day = c.get(Calendar.DATE);
System.out.println(year+"年:"+month+"月:"+day+"日");
}