Java 常用API (第二部分)
常用api第二部分
Date 类
import java.util.Date;
时间原点: 1970-01-01 00:00:00(英国格林威治)
中国属于东八区, 会把时间增加 8 个小时: 1970-01-01 08:00:00
unix 时间戳是指离时间原点的毫秒值
使用 Date 类获取当前 unix 时间戳:
// 获取当前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); //
}
}
把时间戳转换为日期时间:
// 把时间戳转换为日期时间
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.DateFormat;
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("\n"); // 使用换行来判断用户输入完成
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)); //
}
}
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
它提供了很多的静态方法, 使用类名直接调用
- 返回当前时间的unix时间戳 (可用于统计程序运行耗时)
- 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); //
}
}
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 ~
Java 常用API (第二部分)的更多相关文章
- Java 常用API(一)
目录 Java 常用API(一) 1. Scanner类 引用类型的一般使用步骤 Scanner的使用步骤 例题 2. 匿名对象 概述 匿名对象作为方法的参数 匿名对象作为方法的返回值 3. Rand ...
- Java 常用API(二)
目录 Java 常用API(二) 1. Object类 2. Date类 概述 构造方法和成员方法 3. DateFormat类 概述 SimpleDateFormat类 练习 4. Calendar ...
- Java常用API(Math类)
Java常用API(Math类) Math类的作用 java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函数.类似这样的工具 类,其所有方法均为静态方法,并且 ...
- Java常用API(Arrays类)
Java常用API(Arrays类) 什么是Arrays类? java.util.Arrays 此类包含用来操作数组的各种方法,比如排序和搜索等.其所有方法均为静态方法,调用起来 非常简单. 这里我们 ...
- Java常用API(String类)
Java常用API(String类) 概述: java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例 1. ...
- Java常用API(ArrayList类)
Java常用API(ArrayList类) 我们为什么要使用ArrayList类? 为了更加方便的储存对象,因为使用普通的数组来存储对象太过麻烦了,因为数组的一个很大的弱点就是长度从一开始就固定了,所 ...
- Java常用API(Random类)
Java常用API(Random类) Random:是一个用于生成随机数的类 构造方法 public Random() :创建一个新的随机数生成器. 返回随机数的方法 public int nextI ...
- Java常用API(Scanner类)
Java常用API( Scanner类)1 1.Scanner类 首先给大家介绍一下什么是JavaAPI API(Application Programming Interface),应用程序编程接口 ...
- java基础3.0:Java常用API
本篇介绍Java基础中常用API使用,当然只是简单介绍,围绕重要知识点引入,巩固开发知识,深入了解每个API的使用,查看JavaAPI文档是必不可少的. 一.java.lang包下的API Java常 ...
随机推荐
- Linux 踢掉其他终端用户
输入W查看信息 root@HAN:~# w 09:02:36 up 8 days, 20:10, 1 user, load average: 0.00, 0.00, 0.00 USER TTY FRO ...
- hdu5438 Ponds[DFS,STL vector二维数组]
目录 题目地址 题干 代码和解释 参考 题目地址 hdu5438 题干 代码和解释 解答本题时参考了一篇代码较短的博客,比较有意思,使用了STL vector二维数组. 可以结合下面的示例代码理解: ...
- 共线性图 | Alluvial Diagrams | Parallel plot | Parallel Coordinates Plot
最近有个需求需要画如下的图: 这些图的核心意思是一样的,就是connection,把不同的数据连到一起. 文章里把这图叫做共线性图,是按功能命名的,Google里搜不到. 搜到类似的,这个图叫 Par ...
- Plupload的几个demo
Plupload有以下功能和特点: 1.拥有多种上传方式:HTML5.flash.silverlight以及传统的<input type=”file” />.Plupload会自动侦测当前 ...
- c++ 字符串时间格式转换为时间 判断有效期
转载:https://www.cnblogs.com/maphc/p/3462952.html #include <iostream> #include <time.h> us ...
- BDD介绍
TDD: TDD(Test-Drivern Development)测试驱动开发,是敏捷开发中的一项核心实践和技术,也是一种设计方法论.TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代 ...
- 【嵌入式硬件Esp32】安装MQTT服务器(Windows) 并连接测试
对于不知道MQTT的肯定会问MQTT是干什么的....... 现在我有一个项目需求, 看到这个项目第一想法肯定需要一个服务器,所有的wifi设备和手机都去连接这个服务器,然后服务器进行信息的中转,类似 ...
- Tracking-Learning-Detection (TLD算法总结)
一.TLD算法简介 TLD(Tracking-Learning-Detection)是英国萨里大学的一个捷克籍博士生ZdenekKalal在2012年7月提出的一种新的单目标长时间跟踪算法.该算法与传 ...
- javascript获取地址栏参数的方法
javascript获取地址栏参数的方法<pre>function GetQueryString(name){ var reg = new RegExp("(^|&)&q ...
- FDD与TDD的区别
LTE通常分为FDD LTE和TDD LTEFDD,频分双工(Frequency Division Duplexing)我和你通信,像广播一样,只能我说你听,是单工:像对讲机一样,同一时间只能一方说, ...