Math类
Math类 是一个工具类,没有构造方法所以不能new对象,它提供的都是静态属性和方法,直接用类名访问.包含基本数学运算的方法,如初等指数、对数、平方根和三角函数。在java.lang包下,所以不用导包.
Math类中静态常量属性:
E: 自然对象底数: 2.718
PI: 圆周率: 3.14
Math类常用静态方法:
abs(int a): 返回参数的绝对值
cbrt(double d): 返回参数的立方根
sqrt(double d): 返回参数正平方根
ceil(double d): 对参数进行向上取整
floor(double d): 对参数向下取整
log10(double d): 求参数以10为底的对数
max(int a, int b): 求两个参数最大值
min(int a, int b): 求两个参数最小值
pow(int a, int b): 求参数a的b次幂的结果
random(): 返回[0.0 1.0)之间随机小数
round(double d): 四舍五入
public class Math类 {
public static void main(String[] args) {
// 属性
System.out.println(Math.E);
System.out.println(Math.PI);
// 方法
// 1
int i = Math.abs(-100);
System.out.println(i);
// 2
double d = Math.cbrt(8);
System.out.println(d);
// 3
double e = Math.sqrt(9);
System.out.println(e);
// 4
double f = Math.ceil(4.0001);
System.out.println(f);
// 5
double g = Math.floor(5.9);
System.out.println(g);
// 6
double h = Math.log10(1000);
System.out.println(h);
// 7
int max = Math.max(10, 20);
System.out.println(max);
// 8
int min = Math.min(5, 18);
System.out.println(min);
// 9
double r = Math.pow(2, 4);
System.out.println(r);
// 10
double j = Math.random();
System.out.println(j);
// [a, b]随机数: (int)(Math.random()*(b-a+1))+a;
int r2 = (int)(Math.random()*(50-30+1))+ 30;
System.out.println(r2);
// 11
long l = Math.round(3.1);
System.out.println(l);
long m = Math.round(3.5);
System.out.println(m);
}
}
System类
System 类包含一些有用的类字段和方法。它不能被实例化。属于一个系统资源类, 能访问操作系统资源: 键盘, 控制台.
System中方法都必须使用类名访问. 属于java.lang包;
常用静态属性:
err: 标准错误输出流, 使用该流在eclipse打印内容,显示的结果是红色的字体. 所以程序出异常了,报红了, 就是这个流打印的.
in: 标准输入流, 默认关键的是输入设备是键盘.
out: 标准输出流, 默认关联的是控制台.Console
System的常用方法:
exit(int n): 传入实参0, 结束虚拟机
gc(): 手动调用垃圾回收机制
currentTimeMillis(): 获取代码执行到该方法所在行的当前时间, 返回的是一个毫秒值, 1s = 1000ms.
使用该方法去测试一个功能模块的效率
测试的步骤:
1.在功能开始之前取个时间
2.再在功能模块结束之后取个时间
3.两者的差值就是执行效率
long l = System.currentTimeMillis();
System.out.println(l);
String s = "";
for(int i = 1; i < 10000; i++) {
s = s.concat(i+"");
}
long l2 = System.currentTimeMillis();
System.out.println(l2);
System.out.println(l2-l);
Date类
- Date属于java.util包下, 使用时需要导包.
- Date对象是相对于1970.1.1 00:00:00获取的一个毫秒值.生成的一个时间.
Date相关方法
Date();创建当前时间的对象. Date(long millis); 相对1970.1.1 00:00:00换算得到一个时间对象.
after(Date d): 调用者时间对象与参数对象比较, 如果在参数对象之后,返回true,否则返回false before(Date
d): 调用者时间对象与参数对象比较, 如果在参数对象之前,返回true,否则返回false long getTime():
获取当前时间对象的毫秒值,相对于1970.1.1 00:00:00得到的 setTime(long millis):
设置时间对象的毫秒值,相当于修改时间
public class Date的对象方法 {
public static void main(String[] args) {
// 当前时间
Date d1 = new Date();
// 相当于1970.1.1 0:0:0 过了两天时间对象
// 2*24*60*60*1000
Date d2 = new Date(2*24*60*60*1000);
boolean b1 = d1.after(d2);
System.out.println(b1);
boolean b2 = d2.before(d1);
System.out.println(b2);
// 3
long l = d2.getTime();
System.out.println(l);
// 4 修改时间
System.out.println(d1);
d1.setTime(1000);
System.out.println(d1);
}
}
DateFormat类
- DateFormat在java.text包下,使用时需要导包
- DateFormat是一个抽象类,所以不能创建对象,但是他有一个子类:SimpleDateFormat,可以用这个子类创建对象.
- 常用方法:
String format(Date d); 把日期对象转为字符串.
Date parse(String str); 把字符串对象转为时间对象.
- SimpleDateFormat的方法:
SimpleDateFormat(); 以默认格式创建一个对象. SimpleDateFormat(String
pattern); 以指定格式(pattern)创建一个对象.
使用技巧:
1 创建一个Date对象d(当前时间)
2 创建一个SimpleDateFormat对象sdf并给予想要的格式.
3 sdf.format(d); 就是当前时间想要的格式(字符串形式).
package com.ujiuye.dateformat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormat类 {
public static void main(String[] args) throws ParseException {
Date d = new Date();
System.out.println(d);
// Thu Nov 07 14:02:43 CST 2019
SimpleDateFormat sdf = new SimpleDateFormat();
// 时间对象转字符串
String ds = sdf.format(d);
System.out.println(ds);
// 19-11-7 下午2:04 默认的转换格式: 年年-月-日 上下午 小时:分钟
// 时间字符串转时间对象
String time = "20-10-1 上午 10:20";
Date d2 = sdf.parse(time);
System.out.println(d2);
// 创建一个日期格式化对象
// 2019年11月7号 14时14分20秒
// yyyy年MM月dd号 kk时mm分ss秒
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd号 kk时mm分ss秒");
String s2 = sdf2.format(d);
System.out.println(s2);
String time2 = "1970年1月1号 0时0分0秒";
Date d3 = sdf2.parse(time2);
System.out.println(d3);
// 把时间转为这样格式的字符串: 2019-11-7 14:20:15
// yyyy-MM-dd hh:mm:ss
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String s3 = sdf3.format(d);
System.out.println(s3);
}
}
Calendar类
日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。
Calendar类为抽象类,由于语言敏感性,它在创建对象的时候并非直接创建,而是通过静态方法创建 : Calendar c = Calendar.getInstance(); ,返回当前时间但是格式看不懂!
Calendar的get方法
package com.youjiuye.practice;
import java.util.Calendar;
public class Calendar_get {
public static void main(String[] args) {
//创建Calendar对象
Calendar c = Calendar.getInstance();
//获取当前年
int year = c.get(Calendar.YEAR);
System.out.println(year);
//获取当前月
int month = c.get(Calendar.MONTH);
System.out.println(month + 1);
//获取当前日
int day = c.get(Calendar.DAY_OF_MONTH);
System.out.println(day);
//获取当前时
int hour = c.get(Calendar.HOUR_OF_DAY);
System.out.println(hour);
//获取当前分
int min = c.get(Calendar.MINUTE);
System.out.println(min);
//获取当前秒
int s = c.get(Calendar.SECOND);
System.out.println(s);
//获取当前星期
int x = c.get(Calendar.DAY_OF_WEEK);
System.out.println("这是外国的星期数,每周的第一天是星期日:" + x);
String[] arr = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
System.out.println(arr[x]);
}
}
Calendar的set方法
修改日历时间.
public class Calendar的set方法03 {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
// 1
c.set(Calendar.YEAR, 2020);
c.set(Calendar.MONTH, -1);
System.out.println(c);
System.out.println(c.get(Calendar.MONTH));
System.out.println(c.get(Calendar.YEAR));
// 2
Calendar c2 = Calendar.getInstance();
c2.set(2020, 8, 11); //三个值只能修改年月日
System.out.println(c2);
// 3
Calendar c3 = Calendar.getInstance();
c3.set(2000, 0, 1, 12, 12); //五个值只能修改年月日时分
System.out.println(c3);
// 4
Calendar c4 = Calendar.getInstance();
c4.set(1969, 1, 1, 0, 0, 0); //六个值只能修改年月日时分秒
System.out.println(c4);
}
}
Calendar的add方法
add(int field, int amount):方法功能: 在某个字段值基础上, 进行偏移, 既可以向前偏移(过去),也可以向后偏移(未来).
public class Calendar的add方法 {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.YEAR, 2);
cal.add(Calendar.MONTH, -1);
System.out.println(cal);
}
}
毫秒值, Date类型及Calendar的互转
1.毫秒值和Date互转 毫秒转Date: 使用Date的构造方法: Date(long millis) Date转毫秒值: 使用Date的getTime()
2.毫秒值和Calendar的互转 毫秒转Calendar: setTimeInMillis(long time) Calendar转毫秒值: getTimeInMillis()
3.Date和Calendar的互转 Calendar转Date: 调用Calendar的getTime()方法 Date转Calendar: 调用Calendar的setTime(Date d)方法
package com.ujiuye.calendar;
import java.util.Calendar;
import java.util.Date;
public class 毫秒值_Date类型及Calendar的互转05 {
public static void main(String[] args) {
// 毫秒值转date
long m = 1000;
Date d = new Date(m);
System.out.println(d);
// Date转毫秒值
long l = d.getTime();
System.out.println(l);
// 毫秒值和Calendar互转
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(2000);
System.out.println(cal);
long n = cal.getTimeInMillis();
System.out.println(n);
// Date和Calendar的互转
Date d2 = new Date(1000);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(d2);
System.out.println(cal2);
Date d3 = cal2.getTime();
System.out.println(d3);
// 时间戳: 就是相对1970.1.1 0:0:0的一个毫秒值
}
}
练习题
1.输出当前的时间的年,月,日,时,分,秒 星期几
例如: 2019年8月1日 14时54分30秒 星期四
2.键盘录入一个年份, 判断是闰年还是平年,使用日历对象完
3.计算出生多少天