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常 ...
随机推荐
- JavaScript中的内存溢出与内存泄漏
内存溢出 是一种程序运行出现的错误: 当程序运行需要的内存超过了剩余的内存时, 就出抛出内存溢出的错误 var obj = {} for (var i = 0; i < 100000; i++) ...
- rust数据类型
fn main() { //char支持4个字节,支持emoji let jp = "ゆ"; let emoji = "✨"; let ch = "囧 ...
- Java 动态调试技术原理及实践 【基本功】Java动态追踪技术探究
https://mp.weixin.qq.com/s/ZlNcvwJ_swspifWTLHA92Q https://mp.weixin.qq.com/s/_hSaI5yMvPTWxvFgl-UItA
- MySQL实现按天分组统计,提供完整日期列表,无数据自动补0
业务需求最近要在系统中加个统计功能,要求是按指定日期范围里按天分组统计数据量,并且要能够查看该时间段内每天的数据量. 解决思路直接按数据表日期字段group by统计,发现如果某天没数据,该日期是不出 ...
- linux进程守护脚本
为了防止进程异常挂掉,为了避免影响业务,编写一个守护进程,定时检查某个进程是否存在,如果不存在则自动启动该进程.编写脚本文件daemon.sh文件 while true; do server=`ps ...
- ASP.NET MVC下如何返回图片
方式一: 首先,我们应当从控制器入手,控制器一般不都是return View的吗?那怎么返回图片? 当然,Controller类也没有return Image 的,上次我们的例子是返回JSON,其实我 ...
- C# Newtonsoft.Json解析json字符串处理(最清晰易懂的方法)
需求: 假设有如下json字符串: { ", "employees": [ { "firstName": "Bill", &quo ...
- SDN实验---使用git安装Mininet
0:补充Ubuntu截屏 截全屏 printscreen 截取当前窗口 alt + printscreen 截取任意矩形 shift + printscreen 截取全屏到剪切板 ctrl + pri ...
- [转自baidu]修正古人五行,《七行说》之提出
一.论原五行相生.相克关系不妥之处: 祖国医学原“五行说”即金.木.水.火.土.在五行学说中说相生规律为:金生水:水生木:木生火:火生土:土生金.相克规律为:火克金:金克木:木克土:土克水:水克火.这 ...
- (二)主板BIOS设置与硬盘分区、调整
1.主板BIOS设置 前提,你得有一台电脑,台式机或笔记本电脑都行. BIOS负责开机时对系统中各个硬件进行初始化设置和测试,以确保系统能正常工作,是电脑硬件与软件程序之间的一座桥梁. 电脑在开机启动 ...