Math类
两个常量
- 两个常量
- E:自然对数的底数,2.718
- PI:圆周率
- 常用方法
- abs(数字类型):返回该参数的绝对值
- cbrt(double d ):返回d的开立方根
- sqrt(double d):返回d的正平方根
- ceil(double d):返回d的向上取整
- floor(double d):返回d的向下取整
- max(int a,int b):返回a、b的较大值
- min(int a,int b):返回a、b的较小值
- random():返回0.000~0.999的随机数
- round(double d):返回d四舍五入后的结果
public static void main(String[] args) {
System.out.println(Math.E);
System.out.println(Math.PI);
System.out.println(Math.abs(-1.0));
System.out.println(Math.abs(1));
System.out.println(Math.cbrt(8));//立方根
System.out.println(Math.cbrt(-8));
System.out.println(Math.sqrt(4));//平方根
System.out.println(Math.sqrt(-4));
System.out.println(Math.ceil(100.3));//向上取整
System.out.println(Math.floor(100.9));//向下取整
System.out.println(Math.max(10, 20));//较大值
System.out.println(Math.min(10, 20));//较小值
System.out.println(Math.random()*30+30);//(0-1)随机数
System.out.println(Math.round(100.5));//四舍五入
System.err.println("111");//错误输出
}
System类
用于描述系统资源的类型,该类不用创建对象,直接使用讲台变量和静态方法即可。
常用字段
- System.in:标准的输入流,默认关联到键盘上
- System.out:标准的输出流,默认关联到控制台
- System.err:标准的错误输出流,默认关联到控制台,用于打印错误信息,在eclipse中,使用该流打印的字体是红色。
常用方法
- gc():强制垃圾或手气回收内存中的垃圾。
- exit(int status):结束虚拟机
- currentTimeMillis():返回当前时间的毫秒值,表示的是从1970年1月1日0时0分0秒开始到现在经历的毫秒值。1s = 1000ms
作用:
- 可以通过某些手段,将数字转换成时间对象、指定格式的字符串;
- 可以通过计算两次的差值,来获取某段代码的运行时间。
import java.util.Scanner;
public class Demo_System {
/*static {
System.exit(0);
}*/
//终止java虚拟机
public static void main(String[] args) {
/*System.out.println("nanase");
System.err.println("nanase");*/
//long start = System.currentTimeMillis();
// concatString();//123
//concatStringBuilder();//2
//long end = System.currentTimeMillis();
//System.out.println(end-start);
test_out_err();
}
public static void concatString() {
String str = "";
for (int i = 0; i < 9999; i++) {
str += "1";
}
}
public static void concatStringBuilder() {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 9999; i++) {
sb.append(i);
}
}
public static void test_out_err() {
Scanner sc = new Scanner(System.in);
while(true) {
String line = sc.nextLine();
System.out.println(line);
System.err.println("呵呵,我变颜色了");
}
}
}
Date
该类对象用于表示一个特定的瞬间,根据构造方法使用的不同,表示 不同的瞬间。
使用时需要导包 java.util.Date 不要导错包
构造方法:
大部分的构造方法都已经过时(可以使用,但是不建议使用,eclipse当中有横线)
- Date():表示当前时间
- Date(long time):表示一个时间对象,表示的是从1970年1月1日00:00:00时间经历过time毫秒之后的时刻。
成员方法
- after(Date d):比较调用者是否在参数d之后
- before(Date d):比较调用者是否在参数d之前。
- getTime():获取当前date对象描述的时间毫秒值。
- setTime(long time):将指定的毫秒值给当前的Date对象进行设置。
import java.util.Date;
public class Demo_Date {
public static void main(String[] args) {
Date nd = new Date();
Date od = new Date(0);
System.out.println(nd.after(od));//调用的时间在不在参数之后
System.out.println(nd.before(od));//调用的时间在不在参数之前
}
public static void test_Date() {
Date date = new Date();
System.out.println(date);
Date date2 = new Date(0);
System.out.println(date2);
}
}
DateFormat
直接打印Date对象全是英文,不好阅读,需要有一个格式对象,将date对象的内容以制定的格式输出出来。
DateFormat类.是一个抽象类,不能创建对象,需要使用子类创建对象,有一个一直的子类simpleDateFormat类型。
DateFormat类型在text包中,在使用的时候需要导包
构造方法DateFormat():用于给子类去访问。
重要的成员方法
- String format(Date date):将参数对象d,格式化为一个字符串。
- Date parse(String str):将数字字符串str,解析成一个Date类型的对象。(parse:解析)
DateFormat是抽象类,无法创建对象,所以只能使用其子类来创建对象,并调用方法
所以可以使用DateFormat的子类SimpleDateFormat类型
就可以使用DateFormat中的方法。
SimpleDateFormat
构造方法
- SimpleDateFormat():使用默认的格式创建对象
- SimpleDateFormat(String pattern):使用给定的模式创建格式对象。
一般用来表示年月日时分秒的用"yyyy-MM-dd-HH-mm-ss"
表示年月日用 "yyyy-MM-dd"
注意:HH是24小时计时,hh是12小时计时
public static void test_dateFormat() throws ParseException {
Date date = new Date();
Date date2 = new Date();
System.out.println("Date默认格式:"+date);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
// 无参构造 默认格式
String bString = simpleDateFormat.format(date2);
System.out.println("SimpleDateFormat默认格式:"+bString);
SimpleDateFormat simple = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
// 有参构造 使用给定的格式
String datesf = simple.format(date);
System.out.println("给定格式:"+datesf);
Date date3 = simple.parse(datesf);
System.out.println("parse方法转换回date格式:"+date3);
}
Calendar
概述
- 表示一个精确的时间瞬间,是一个包含了很多字段值的对象。
- Calendar是一个抽象类,无法直接创建对象
- 只能使用子类来创建对象
- 使用父类中的某个方法,来获取一个对象。
- Calendar获取对象的方式
- Calendar.getInstance():可以获取当前时间的Calendar对象,就已经把各个日历字段都初始化完成。
- 常用方法
- get、set方法用于获取和设置对象的时间。
- add方法可以为对象的某个字段增加值
- getTime():返回一个当前时间的date类型
- getTimeInmillis():获取对象描述的毫秒值。Calendar转毫秒
Calendar的set方法
get方法用于给定的一个字段获取字段的值,set方法根据给定的字段,修改Calendar类型的对象。
- setTimeInMillis(long millis) 从给定的长值设置此日历的当前时间。毫秒转Caledar
- Void set(int feild,int value)将指定的字段,设定为制定的值 如果写了不正确的时间值,会自动的进位。
- Void set(int year,int month,int date)给指定的Calendar对象设定年月日
- Void set(int year,int month,int date,int hourOfDay,int minute)给指定的日历对象设置年月日时分
- Void set(int year,int month,int date,int hourOfDay,int minute,int second)给当前的日历对象设置年月日时分秒
Calendar的Add方法
- 方法功能:在某个字段的基础上,进行偏移(参数描述的是变化,而不是变化的结果)
- Void add(int field,int offset)
- 在feild的基础上,增加offset偏移量
public static void test_set(Calendar c) {
System.out.println(c.DAY_OF_MONTH);
System.out.println(c.get(c.DAY_OF_MONTH));
c.set(c.DAY_OF_MONTH, 32);
System.out.println(c.DAY_OF_MONTH);
System.out.println(c.get(c.DAY_OF_MONTH));
c.set(c.YEAR, 2000);
System.out.println(c.get(c.YEAR));
}
public static void test_get() {
Calendar c = Calendar.getInstance();
System.out.println(c.get(c.YEAR));
System.out.println(c.get(c.MONTH));
System.out.println(c.get(c.DAY_OF_MONTH));
System.out.println(c.getTime());
System.out.println(c.get(c.DAY_OF_WEEK));
System.out.println(c.get(1));
System.out.println(c.get(2)+1);
System.out.println(c.YEAR);// 1
System.out.println(c.get(c.YEAR));// 2019
System.out.println(c.get(c.MONTH)+1);
}
毫秒值,Date类型和Calendar类型的相互转换
- 毫秒值和Date类型相互转换
- 毫秒值转成Date对象:Date的构造方法,Date(long time);
- Date对象转换成毫秒值:Date的getTime()方法
- 毫秒和Calendar类型的相互转换
- 毫秒值转为Calendar类型:setTimeInmillis(long time)
- Calendar类型转为毫秒值:getTimeInMillis()
- Date类型和Calendar类型的相互转换
- Calendar类型转为Date对象:getTime()
- Date类型转为Calendar对象:setTime(Date date)
也就是说用SimpleDateFormat类来格式化Date类对象,SimpleDateFormat就是一个指定日期格式的构造器
要获取一个日期,先创建Date对象,然后要将Date对象转为SimpleDateFormat指定的格式
创建SimpleDateFormat对象,调用里面的format(Date date)方法即可,注意的是返回一个指定格式的字符串
当获取一个有日期格式的字符串时,转为Date类型,用SimpleDateFormat继承的parse(String str)方法
直接用parse方法转为有格式的Date对象,想要转为Calendar类就创建Calendar对象,用里面的setTime方法转为Calendar类