常用类

常用类
一.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+"日");		
	}