Date类(重点)
类 Date 表示特定的瞬间,精确到毫秒,它是在util包下的
构造方法:
1)public Date()表示分配它的时间(精确到毫秒)。
2)public Date(long date):创建一个日期对象,指定毫秒值 (需要将long 时间毫秒值转换成Date对象)
例如:
package TextDome; import java.util.Date; public class DateDome { public static void main(String[] args) { Date d=new Date(); System.out.println(d);//Date类的日期格式:Wed May 02 19:16:27 CST 2018 //Date类文本格式:2018-05-02 Date dd=new Date(1000);//这里的1000是指1000毫秒,也就是1秒 System.out.println(dd); } } 运行结果: Wed May 02 19:16:27 CST 2018 Thu Jan 01 08:00:01 CST 1970
上面的构造方法2)是将long时间毫秒值转变成Date类型值,接下来是将Date类型值转换成long毫秒值
**public long getTime():将Date--->long的毫秒值
package TextDome; import java.util.Date; public class DateDome2 { public static void main(String[] args) { Date d=new Date(); long time=d.getTime(); System.out.println("time1:"+time); //getTime()与currentTimeMillis()的毫秒值对比 System.out.println("--------------------"); System.out.println("time2:"+System.currentTimeMillis()); } } 运行结果: time1:1525260440592 -------------------- time2:1525260440592
可以看出,它们俩几乎是没有差别的
当Date中,文本格式和日期格式相互转化时需要运用到一个中间类DateFormat,并且DateFormat是一个抽象类,抽象意味着不能实例化,所以应该考虑用它的子类:
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
Format方法是将对象格式化为指定模式的字符串,它是一个抽象类,不能创建对象
Parseobject方法用于将字符串重新解析为对象
Dateformate是format的直接子类,也是一个抽象类,不能直接创建对象,通过simpleDateFormat这个具体类来传入格式模式
例如:
package TextDome; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateFormatDome { public static void main(String[] args) throws ParseException { //Date-->String(格式化) //创建一个日期类对象 Date d=new Date(); System.out.println("日期格式:"+d); //创建SimpleDateFormat类对象 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String s=sdf.format(d); System.out.println("日期格式转变成文本格式后:"+s); System.out.println("----------------------------"); //String-->Date(解析) //定义一个文本类型的日期 String str="2018-05-02"; SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd"); //当解析时需要在main方法中加入public static void main(String[] args) throws ParseException ,否则就会报错 //public Date parse(String source):解析 Date date=sdf2.parse(str); System.out.println("文本格式转变成日期格式后:"+date); } } 运行结果: 日期格式:Wed May 02 20:42:45 CST 2018 日期格式转变成文本格式后:2018-05-02 08:42:45 ---------------------------- 文本格式转变成日期格式后:Wed May 02 00:00:00 CST 2018
还有另外一种改进方式可以进行日期格式与文本格式的互换:
写一个工具类来进行互换
package TextDome; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateUtil { private DateUtil() { //对该类无参构造进行私有化 } public static String DateToString(String format,Date d) { // SimpleDateFormat sdf=new SimpleDateFormat(format); // String s=sdf.format(d); // return s; // 也可以直接用链接式 return new SimpleDateFormat(format).format(d); } public static Date StringToDate(String format,String str2) throws ParseException { // SimpleDateFormat sdf2=new SimpleDateFormat(format); // Date dd=sdf2.parse(format); // return dd; // 也可以直接用链接式 return new SimpleDateFormat(format).parse(str2);//运用parse方法时需要抛异常: throws ParseException } } 再写一个测试类对它进行测试: package TextDome; import java.text.ParseException; import java.util.Date; public class DateUtilText { public static void main(String[] args) throws ParseException { //Date-->String Date d1=new Date(); String str=DateUtil.DateToString("yyyy-MM-dd", d1); System.out.println(str); System.out.println("-------------------------"); //String-->Date String str2="2018-05-02"; Date d2=DateUtil.StringToDate("yyyy-MM-dd", str2); System.out.println(d2); } } 运行结果: 2018-05-02 ------------------------- Wed May 02 00:00:00 CST 2018
Math类的一些简单方法
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
public static int abs(int a):绝对值
public static double ceil(double a):向上取整
public static double floor(double a):向下取整
public static int max(int a,int b):求最大值
public static int min(int a,int b):求最小值
public static double pow(double a,double b):a的b次幂
public static double random()返回带正号的 double 值,该值大于等于 0.0 且小于 1.0
public static int round(float a):四射五入
public static double sqrt(double a):一个数的正平方根
例如:
package com.Math; public class MathDome { public static void main(String[] args) { //求绝对值 abs() System.out.println("绝对值是:"+Math.abs(-3)); System.out.println("绝对值是:"+Math.abs(7)); System.out.println("---------------------"); //向上取整 ceil(),返回的是Double类型 System.out.println("向上取整:"+Math.ceil(12.01)); System.out.println("向上取整:"+Math.ceil(12.56)); //向下取整 floor(),返回的也是Double类型 System.out.println("向下取整:"+Math.floor(12.99)); System.out.println("向下取整:"+Math.floor(12.23)); System.out.println("---------------------------"); //最大值max(),返回的是int类型 System.out.println("最大值:"+Math.max(15, 23)); //还可以进行嵌套 System.out.println("嵌套后的最大值:"+Math.max(Math.max(45, 25), 66)); System.out.println("----------------------------"); //次数幂pow(),返回的是double值 System.out.println("次数幂:"+Math.pow(3, 3)); //随机获取数字,返回的是double类型,>=0.0&&<1.0 System.out.println("随机获取的数为:"+Math.random()); int x=(int)(Math.random()*100+1);//将double类型的数强制转换成int类型的值 System.out.println("随机获取100以内的数是:"+x); System.out.println("---------------------------"); System.out.println("13.45四舍五入后的数:"+Math.round(13.45)); System.out.println("13.55四舍五入后的值:"+Math.round(13.55)); System.out.println("-----------------------------"); //求一个数的平方根sqrt(),返回的是double类型的值 System.out.println("平方根的值:"+Math.sqrt(9)); } } 运行结果: 绝对值是:3 绝对值是:7 --------------------- 向上取整:13.0 向上取整:13.0 向下取整:12.0 向下取整:12.0 --------------------------- 最大值:23 嵌套后的最大值:66 ---------------------------- 次数幂:27.0 随机获取的数为:0.14643613564055058 随机获取100以内的数是:24 --------------------------- 13.45四舍五入后的数:13 13.55四舍五入后的值:14 ----------------------------- 平方根的值:3.0
面试题:
当你想把两个数进行互换时,应该采用什么方法?位^(异或)就出现了
位^的特点是:当一个数被另一个数进行两次位^,最后的值就是它本身
例如:
package com.Math; public class MathDome2 { public static void main(String[] args) { int x=12; int y=23; int z=x^y^y; int a=x^y^x; System.out.println(z);//运行结果:12 System.out.println(a);//运行结果:23 } }
Random类的简单理解
Random:是一个可以获取随机数的类
public Random():无参构造方法
public Random(long seed) :指定long类型的数据进行构造随机数类对象
public int nextInt():获取随机数,它的范围是在int类型范围之内
public int nextInt(int n):获取随机数,它的范围是在[0,n)之间
例如:
package com.Math; import java.util.Random; public class RandomDome { public static void main(String[] args) { Random r=new Random(); for(int i=0;i<5;i++) { int x=r.nextInt(10); System.out.print(x+" "); } } } 运行结果: 0 1 9 1 7