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常 ...
随机推荐
- 移动端点击事件兼容问题,在pc端可以点,在手机上不可以点
ms-click="showCodeExplain()" onClick="javascript:;" 在点击事件后面加上onClick="javas ...
- Kali linux 2018 安装 Fluxion
本人是在VMware 12下安装 Kali linux 2018.2版本 安装完成后 用命令行运行更新 apt-get update apt-get full-upgrade 更新所有组件. ...
- msyql8.0编译安装
1.安装依赖 yum -y install wget cmake gcc gcc-c++ncurses ncurses-devel libaio-devel openssl openssl-d ...
- jq select change下拉框选项变化判断选中值,添加(attr)或移除(removeAttr)一个或多个属性
select change下拉框选项变化判断选中值,添加(attr)或移除(removeAttr)一个或多个属性 $("#IsRecommend").change(function ...
- EF Core基本使用
Mysql: nuget 安装 Pomelo.EntityFrameworkCore.MySql Microsoft.EntityFrameworkCore.Design csprj 修改: < ...
- aardio 文档
aardio 文档 根据官方帮助手册制作了一份文档,添加了一些特性. 支持手机阅读 不用电脑也可以学习 aau 了,不受屏幕大小限制,你的小清新还是你的小清新~ 简单的搜索功能 快捷复制示例代码 基于 ...
- Node.js+Express框架+Mongo学习(一)第一个node.js实例
1.在桌面新建一个空的文件夹,比如叫node,当然也可以在其它地方新建. 2.命令行进入到所新建的文件夹的目录,下载Express框架,再在这个文件夹里新建一个叫final的项目 3.在项目(fina ...
- [图片问答]LODOP打印的行间距字间距
LODOP可以打印纯文本,也可以是超文本,关于哪些打印项是纯文本,哪些打印项是超文本,之前有博文相关介绍:LODOP中的纯文本和超文本打印项. 之前的关于纯文本的行间距字间距介绍:Lodop设置文本项 ...
- Redis哨兵(Sentinel)模式
Redis哨兵(Sentinel)模式 主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用.这不是一种推荐的方式 ...
- Kubernetes 健康状态检查(九)
强大的自愈能力是 Kubernetes 这类容器编排引擎的一个重要特性.自愈的默认实现方式是自动重启发生故障的容器.除此之外,用户还可以利用 Liveness 和 Readiness 探测机制设置更精 ...