常用api第二部分
Date 类
import java.util.Date;
// 获取当前unix时间戳 import java.util.Date; public class Main { public static void main(String[] args){ Date d = new Date(); long i = d.getTime(); System.out.println(i); // 1571926743797 } }
把时间戳转换为日期时间:
// 把时间戳转换为日期时间 import java.util.Date; public class Main { public static void main(String[] args){ Date d = new Date(1571926743797L); System.out.println(d); // Thu Oct 24 22:19:03 CST 2019 } }
DateFormat 类
import java.text.SimpleDateFormat;
SimpleDateFormat 是实现的非抽象子类
将 Date 类型格式化为指定模式的字符串:
import java.text.SimpleDateFormat; import java.util.Date; public class Main { public static void main(String[] args) { SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateStr = sd.format(new Date()); System.out.println(dateStr); // 2019-10-24 22:37:28 } }
将字符串解析为 Date 类型:
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Main { public static void main(String[] args) throws ParseException { // 解析可能会发生异常 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date d = sdf.parse("2019-10-24 22:37:28"); System.out.println(d); // Thu Oct 24 22:37:28 CST 2019 } }
小练习: 计算一个人活了多少天 ?
步骤:
- 使用 Scanner 获取出生日期
- 使用 SimpleDateFormat 解析成 Date 类型
- 转化为毫秒值
- 使用当前 Date 毫秒值减去出生日期毫秒值
- 把毫秒值转换为单位: 天
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; public class Main { public static void main(String[] args) throws ParseException { // 获取出生日期字符串 Scanner s = new Scanner(System.in); s.useDelimiter(" "); // 使用换行来判断用户输入完成 String birthday = s.next(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 求毫秒差 long currentTimestamp = new Date().getTime(); long birthdayTimestamp = sdf.parse(birthday).getTime(); long difference = currentTimestamp - birthdayTimestamp; // 转换为天 int ret = (int) (difference / 1000 / 60 / 60 / 24); System.out.println(String.format("你活了多少天呢? %d", ret)); // 8842 } }
Calendar 类
import java.util.Calendar;
Calendar 是抽象类
-
返回当前的日期时间的Date对象
-
public Date getTime()
-
-
将给定的日期时间字段设置为给定值
-
public void set(int field, int value)
-
-
根据日历的规则, 为给定的日历字段添加或者减去指定的时间量(例如获取前N天的时间, 前N秒的日期时间, 非常方便) (正数为加, 负数为减)
-
public abstract void add(int field, int amount)
-
-
获取日历字段的值
-
public int get(int field)
-
demo:
import java.util.Calendar; import java.util.Date; public class Main { public static void main(String[] args) { Calendar c = Calendar.getInstance(); // 直接获取对象, 多态写法 // 获取当前时间 Date currentTime = c.getTime(); // 设置年份 c.set(Calendar.YEAR, 9999); // 获取年份 int year = c.get(Calendar.YEAR); System.out.println(year); // 9999 // 更改月份 c.add(Calendar.MONTH, 2); // 查看更改的月份 System.out.println(c.get(Calendar.MONTH)); // 西方月份是 0-11, 中国是 1-12 } }
System 类
java.lang.System
它提供了很多的静态方法, 使用类名直接调用
- arraycopy
public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
统计程序耗时:
public class Main { public static void main(String[] args) throws InterruptedException { long startTime = System.currentTimeMillis(); Thread.sleep(1000); long endTime = System.currentTimeMillis(); System.out.println(endTime - startTime); // 1001 } }
arraycopy:
import java.util.Arrays; public class Main { public static void main(String[] args) { int[] src = {1,2,3,4}; int[] dest = {5,6,7,8}; System.arraycopy(src, 0, dest,0, 3); // 替换3个, 元素少于3个报错 System.out.println(Arrays.toString(dest)); // [1, 2, 3, 8] } }
StringBuilder 类
java.lang.StringBuilder
StringBuilder 是一个字符串缓冲区; 在内存里边始终是一个 byte[] 数组, 占用空间少, 操作效率高
StringBuilder 是可变对象, 用来高效拼接字符串
StringBuilder 可以支持链式操作, 实现链式操作的关键是返回实例本身
常用成员方法:
- append (可添加任意类型数据的字符串形式)
- toString (StringBuilder 和 String 可以互相转换)
字符串的高效拼接
public class Main { public static void main(String[] args) { StringBuilder bu = new StringBuilder(); // 链式调用 bu.append("abc") .append(123) .append(true) .append(0.999) .append('a'); System.out.println(bu.toString(); } }
StringBuilder 和 String 之间的相互转换
// StringBuilder 和 String 之间的相互转换 public class Main { public static void main(String[] args) { StringBuilder bu = new StringBuilder("abc"); // 使用不同的构造方法 System.out.println(bu.getClass()); // class java.lang.StringBuilder // String str = bu.toString(); System.out.println(str.getClass()); // class java.lang.String } }
包装类
用类来包装基本类型, 方便操作基本类型数据
对应的包装类(java.lang) | |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
-
valueOf() 装箱
-
intValue() 拆箱
demo:
public class Main { public static void main(String[] args) { // 装箱 // Integer ig = new Integer("123456"); Integer ig = Integer.valueOf("123456"); // 拆箱 int i = ig.intValue(); System.out.println(i); // 123456 // 自动装箱, 拆箱 Integer ig2 = 123456; int i2 = ig2; } }
ending ~