math,Random, System,BigInteger,BigDecimal,Data,simpleDateForma,Calendert类的概述和方法使用

Math类的概述和方法使用
package com.heima.Math;

public class Demo1_Math {
/*
 * Math类包含执行数学运算的基本方法,如初等指数,对数,平方根和三角函数
 * 成员方法:
 * 		public static int abs(int a)
 * 		public static double ceil(double a)
 * 		public static double floor(double a)
 * 		public static double pow(double a,double b)
 * 		public static int max(int a,int b)
 * 		public static double random()
 * 		public static int round(float a),参数为double的自学
 * 		public static double sqrt(double a)
 * */
	public static void main(String[] args) {
		System.out.println(Math.PI);
		System.out.println(Math.abs(-10));//取绝对值
		
		System.out.println(Math.ceil(12.99));//结果都是13.0
		System.out.println(Math.ceil(12.3));//ceil是 天花板的意思,同意,floor是地板的意思
		System.out.println(Math.floor(12.3));//结果是12.0
		
		System.out.println(Math.max(20, 30));//返回最大值
		
		System.out.println(Math.pow(2, 4));//前面的数是底数,后面的数是指数,2^4
		
		System.out.println(Math.random());//生成[0.0,1.0)之间的随机小数
		System.out.println(Math.round(2.651));//四舍五入
		
		System.out.println(Math.sqrt(8.0));//开平方,取根号
	}

}

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

Random类

package com.heima.Math;

import java.util.Random;

public class Demo2_Random {

	public static void main(String[] args) {
		Random r=new Random();
		int x=r.nextInt();//在int范围之内随机生成一个数
		System.out.println(x);
		System.out.println(r.nextInt(100));//需要掌握,随机生成一个[0,100)之间的数字
		
		Random r2=new Random(1000);//传一个1000的种子
		int a=r2.nextInt();
		int b=r2.nextInt();
		System.out.println(a+"  "+b);//-1244746321  1060493871,根据种子算出的结果不会变
	}

}

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

System类

package com.heima.Math;

public class Demo3_System {
/*
 * A:System类的概述	
 * 		system类包含一些有用的类字段和方法,它不能被实例化
 * B:成员方法
 * 		public static void gc()  运行垃圾回收器
 * 		public statci void exit(int status)
 * 		public static long currentTimeMillis()返回:
										当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差(以毫秒为单位测量)。
 * 		public static void arraycopy(Object src,int srcPos,Object dest,int destPOse,int length)
 * */
	public static void main(String[] args) {
		  //demo1();
		//demo2();  推出Java虚拟机
		//demo3();	获取当前时间的毫秒值
		int[] src={11,22,33,44,55};
		int[] dest=new int[8];
		System.arraycopy(src, 0, dest, 0, src.length);//将数组内容拷贝
		for(int i=0;i<dest.length;i++){
		System.out.print(Integer.toString(dest[i])+" ");
	}
	}

private static void demo3() {
	long start=System.currentTimeMillis();
	for(long i=0;i<1000;i++){
		System.out.println("d");
	}
	long end=System.currentTimeMillis();
	System.out.println(end-start);//可以这样算出程序运行的时间,运行27毫秒
}

private static void demo2() {
	System.exit(0);//非0状态是异常终止,推出jvm
	System.out.println("000000");//没有打印出这句话,因为Java虚拟机已经退出了
}

	private static void demo1() {
		for(int i=0;i<100;i++){
			  new Demo();/*垃圾回收器要回收对象的时候,首先要调用这个类的finalize方法(你可以 写程序验证这个结论),
							  一般的纯Java编写的Class不需要重新覆盖这个方法,因为Object已经实现了一个默认的,
							  除非我们要实现特殊的功能
							  (这 里面涉及到很多东西,比如对象空间树等内容)。*/
			  System.gc();//垃圾回收器,相当于保洁阿姨
		  }
	}

}
class Demo{//在一个源文件中不允许两个用public定义的类,但是在开发中不用担心,因为写在不同源文件中
	public void finalize(){
		System.out.println("垃圾被清扫了");
	}
	
}

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

BigInteger类放很大的整数

package com.heima.Math;

import java.math.BigInteger;

public class Demo4_BigInteger {
/*
 * A:BigInterger的概述
 * 		可以让超过integer范围的数进行运算
 * B:构造方法
 * 		public BigInteger(String val)
 * C:成员方法
 * 		public BinInteger add(BigInteger val)
 * 		public BigInteger substact(BigInteger val)
 * 		public BigInteger multiply(BigInteger val)
 * 		public BigInteger divide(BigInteger val)
 * 		public BigInteger[] divideAndRemainder(BigInteger val)
 * */
	public static void main(String[] args) {
		//int和long都有长度限制
		BigInteger bi1=new BigInteger("1000");
		BigInteger bi2=new BigInteger("2");
		System.out.println(bi1.add(bi2));//加
		System.out.println(bi1.subtract(bi2));//减
		System.out.println(bi1.multiply(bi2));//乘法
		System.out.println(bi1.divide(bi2));//除法
		BigInteger[] arr=bi1.divideAndRemainder(bi2);//取除数和余数
		for(int i=0;i<arr.length;i++){
			System.out.println(arr[i]);
		}
	}

}

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

BigDecimal类

package com.heima.Math;

import java.math.BigDecimal;

public class Demo_BifDEcilmal {
//计算机内二进制表示小数时有时候会出现精度的损失,所以BigDecimal可以用来做高精度的小数运算
	public static void main(String[] args) {
		/*BigDecimal bi1=new BigDecimal(2.0);
		BigDecimal bi2=new BigDecimal(1.1);//这种方式在开发中不推荐,因为不够jingque
		System.out.println(bi1.subtract(bi2));*/
		BigDecimal bi1=new BigDecimal("2.0");
		BigDecimal bi2=new BigDecimal("1.1");//通过构造中传入字符串的方式,开发时推荐
		System.out.println(bi1.subtract(bi2));
	}

}

。。。。。。。。。。。。。。。。。。。。。。。。。

Data类

package com.heima.Math;

import java.sql.DatabaseMetaData;
import java.util.Date;


public class Demo_Data {
/*
 * Data类概述:
 * 		data类,表示特定的瞬间,精确到毫秒
 * B:构造方法:
 * 		public Data()
 * 		public Data(long data)
 * C:成员方法
 * 		public long getTime()
 * 		public void setTime(long time)
 *  * */
	public static void main(String[] args) {
		//demo1();
		Date d1=new Date();
		d1.setTime(1000);
		System.out.println(d1);
	}

private static void demo1() {
	Date d1=new Date();
	System.out.println(d1);//Wed May 30 21:00:17 CST 2018
	
	Date d2=new Date(0);
	System.out.println(d2);//Thu Jan 01 08:00:00 CST 1970,打印出来时间时八点而非0点,其实系统时间依然是0
	//点,但是我的电脑属于东八区,所以是八点。构造方法中参数传0代表的是1970年,如果没有传参数,代表的是当前时间
	System.out.println(d1.getTime());//返回的是当前时间的毫秒值,通过时间对象获取毫秒值
	System.out.println(System.currentTimeMillis());//通过系统类方法获取毫秒值
}

}

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

simpleDateFormat类

package com.heima.Math;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo5_simpleDateFormat {
/*
 * DateFormat类的概述
 * 		DateFormat是日期/时间格式化子类的抽象类,它以与语言无关的格式化方式解析出日期或者时间,是抽象类,所以使用其子类即可
 * SimpleDateFormat构造方法
 * 		public SimpleDateFormat()
 *		public SimpleDateFormat(String pattern)
 *成员方法
 *		public final String format(Date date)
 *		public Date parse(String source)
 * */
	public static void main(String[] args) throws ParseException {
		//demo1();
		//demo2();//空参构造
		//demo3();//有参构造
		
		//将时间字符串转换成日期对象
		String str="2018年08月08日08时08分08秒";
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
		Date d=sdf.parse(str);//将时间字符串转换成日期对象
		System.out.println(d);
	}

private static void demo3() {
	Date d=new Date();
	SimpleDateFormat sdf=new SimpleDateFormat("yyyy年mm月dd日 HH:mm:ss");//将日期以固定格式显示
	System.out.println(sdf.format(d));//2018年44月31日 09:44:04
}

private static void demo2() {
	Date d=new Date();
	SimpleDateFormat sdf=new SimpleDateFormat();
	System.out.println(sdf.format(d));//18-5-31 上午9:39
}

	private static void demo1() {
		//DateFormat df=new DateFormat();//这是一个抽象类不能实例化
		DateFormat df=DateFormat.getDateInstance();//相当于父类引用指向子类对象
	}

}

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

来到世界多少年demo

package com.heima.Test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Teat2 {
//你来到这个世界多少天
/*
 * 将生日字符串和今天字符串存储在STring类型的变量中
 * 定义日期格式化对象
 * 将日期字符串转换成日期对象
 * 通过日期对象后计算时间毫秒值
 * 将两个时间毫秒值相减除以1000,在除以60,再除以60,再除以24得到天
 * */
	public static void main(String[] args) throws ParseException {
		String birthday="1995年12月25日";
		String today="2018年5月31日";
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");
		Date d1=sdf.parse(birthday);
		Date d2=sdf.parse(today);
		//求出毫秒值
		long time=d2.getTime()-d1.getTime();
		System.out.println(time/1000/60/60/24/365);
	}

}

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

calend类

package com.heima.Math;

import java.util.Calendar;
import java.util.concurrent.CancellationException;

public class Demo9_Calendar {
/*
 * Calendar类的概述	
 * 		Canlendar类是一个抽象类,蹦年直接new对象,它为特定瞬间与一组诸如YEAR,MONTH,DAY,HOUR等日历字段之间的转换
 * 成员方法	、
 * 		public static Calendar getInstance()
 * 		public int get(int field)
 * */
	public static void main(String[] args) {
		Calendar c=Calendar.getInstance();//父类引用指向子类对象
		System.out.println(c);
		System.out.println(c.get(Calendar.YEAR));//通过字段获取年
		System.out.println(c.get(Calendar.MONTH)+1);//通过字段获取月,但是是从0开始编号的 
		System.out.println(c.get(Calendar.DAY_OF_MONTH));//月中第几天
		System.out.println(c.get(Calendar.DAY_OF_WEEK));//周日是第一天,周六是最后一天
		
		System.out.println(c.get(Calendar.YEAR)+"nian"+change((c.get(Calendar.MONTH)+1))+"月"
				+change(c.get(c.DAY_OF_MONTH))+"日"+getweek(c.get(Calendar.DAY_OF_WEEK)));
	}
	
	/*
	 * 将星期存储表中进行查表
	 * 1.返回值类型String
	 * 2.参数列表int week
	 * */
public static String getweek(int week){
	String[] arr={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
	
	return arr[week];
}
/*如果是个位数字前面补0
 * */
public static String change(int num){
	if(num>9){
		return ""+num;
	}else{
		return "0"+num;
	}
}
}

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

Calendar类的add和set方法

package com.heima.Math;

import java.util.Calendar;
import java.util.Date;
import java.util.concurrent.CancellationException;

public class Demo10_Calendar {
/*
 * Calendar类的get()和set()方法
 * 		public void add(int field,int amount)
 * 		public final void set(int year,int month,int date)
 * */
	public static void main(String[] args) {
		Calendar c=Calendar.getInstance();
		c.add(Calendar.YEAR, 1);//比系统年数加一,可以对指定字段进行向前加或者向后减操作
		c.set(Calendar.YEAR, 2000);//修改指定字段
		c.set(2010, Calendar.MONTH, Calendar.DATE);//set是重载方法
		System.out.println(c.get(Calendar.YEAR));
	}

}

.................。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

判断是否是闰年

package com.heima.Test;

import java.util.Calendar;
import java.util.Scanner;

public class Test {
/*
 * 判断任意年份是平年还是闰年
 * Calendar c =new Calendar.getInstance()
 * 1.键盘录入年Scanner
 * 2.创建Calendar对象、
 * 3.通过set方法设置为那一年的三月1日
 * 4.将日向前减去1
 * 5.判断日是多少天,如果是29天返回true否则返回false
 * */
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入年份,判断该年份是否是润年");
		//int year=sc.nextInt();
		String line=sc.nextLine();
		int year=Integer.parseInt(line);
		boolean b=getYear(year);
		System.out.println(b);
	}

public static boolean getYear(int year) {
	Calendar c=Calendar.getInstance();
	c.set(year, 3, 1);
	c.add(Calendar.DAY_OF_MONTH, 1);
	//判断是否是29天
	
	return c.get(Calendar.DAY_OF_MONTH)==29;
}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值