Date类(重点)、Math类以及Random类的简单的理解

Date类(重点)

Date 表示特定的瞬间,精确到毫秒,它是在util包下的

构造方法:

  1public Date()表示分配它的时间(精确到毫秒)。

   2public 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方法用于将字符串重新解析为对象

Dateformateformat的直接子类,也是一个抽象类,不能直接创建对象,通过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 

猜你喜欢

转载自blog.csdn.net/j_better/article/details/80199815