常用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
}
}

小练习: 计算一个人活了多少天 ?

步骤:

  1. 使用 Scanner 获取出生日期
  2. 使用 SimpleDateFormat 解析成 Date 类型
  3. 转化为毫秒值
  4. 使用当前 Date 毫秒值减去出生日期毫秒值
  5. 把毫秒值转换为单位: 天
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 是抽象类

常用成员方法:

  1. 返回当前的日期时间的Date对象

    • public Date getTime()

  2. 将给定的日期时间字段设置为给定值

    • public void set(int field, int value)

  3. 根据日历的规则, 为给定的日历字段添加或者减去指定的时间量(例如获取前N天的时间, 前N秒的日期时间, 非常方便) (正数为加, 负数为减)

    • public abstract void add(int field, int amount)

  4. 获取日历字段的值

    • 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

它提供了很多的静态方法, 使用类名直接调用

  1. 返回当前时间的unix时间戳 (可用于统计程序运行耗时)
  2. 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 可以支持链式操作, 实现链式操作的关键是返回实例本身

常用成员方法:

  1. append (可添加任意类型数据的字符串形式)
  2. 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

成员方法:

  1. valueOf() 装箱

  2. 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 (第二部分)的更多相关文章

  1. Java 常用API(一)

    目录 Java 常用API(一) 1. Scanner类 引用类型的一般使用步骤 Scanner的使用步骤 例题 2. 匿名对象 概述 匿名对象作为方法的参数 匿名对象作为方法的返回值 3. Rand ...

  2. Java 常用API(二)

    目录 Java 常用API(二) 1. Object类 2. Date类 概述 构造方法和成员方法 3. DateFormat类 概述 SimpleDateFormat类 练习 4. Calendar ...

  3. Java常用API(Math类)

    Java常用API(Math类) Math类的作用 java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函数.类似这样的工具 类,其所有方法均为静态方法,并且 ...

  4. Java常用API(Arrays类)

    Java常用API(Arrays类) 什么是Arrays类? java.util.Arrays 此类包含用来操作数组的各种方法,比如排序和搜索等.其所有方法均为静态方法,调用起来 非常简单. 这里我们 ...

  5. Java常用API(String类)

    Java常用API(String类) 概述: java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例 1. ...

  6. Java常用API(ArrayList类)

    Java常用API(ArrayList类) 我们为什么要使用ArrayList类? 为了更加方便的储存对象,因为使用普通的数组来存储对象太过麻烦了,因为数组的一个很大的弱点就是长度从一开始就固定了,所 ...

  7. Java常用API(Random类)

    Java常用API(Random类) Random:是一个用于生成随机数的类 构造方法 public Random() :创建一个新的随机数生成器. 返回随机数的方法 public int nextI ...

  8. Java常用API(Scanner类)

    Java常用API( Scanner类)1 1.Scanner类 首先给大家介绍一下什么是JavaAPI API(Application Programming Interface),应用程序编程接口 ...

  9. java基础3.0:Java常用API

    本篇介绍Java基础中常用API使用,当然只是简单介绍,围绕重要知识点引入,巩固开发知识,深入了解每个API的使用,查看JavaAPI文档是必不可少的. 一.java.lang包下的API Java常 ...

随机推荐

  1. element ui 里面的table怎么弹出一个框让表中数据点击出现弹框

    <el-table-column label="团队" prop="name" min-width="120px" align=&qu ...

  2. Compute API 关键概念 详解

    Compute API 是 RESTful HTTP 服务,提供管理虚机的能力. 虚机可能有不同的内存大小,CPU数量,硬盘大小,能够在几分钟之内创建出来.和虚机的交互,可以通过Compute API ...

  3. Protobuf多协议

    上一篇只有Person的message,如果多了一个message,如Dog,这样就会有问题. 解决方法: 定义多协议 一.定义proto文件 syntax = "proto2"; ...

  4. presto 日期函数和操作

    https://prestodb.github.io/docs/current/functions/datetime.html date '2012-08-08' + interval '2' day ...

  5. 最近b站好像把blv格式换成m4s,改成mp4之后没有声音,

    我研究了几个小时,然后知道一个方法,但是必须有电脑.1.m4s 的视频改为mp4可以拖进pr2.m4s的音频不能直接拖进pr(会报错),改为mp3也一样,要先改为mp3,然后在格式工厂里面选择,mp3 ...

  6. chartjs

    chartjs是一个图表控件集合,使用html5的canvas进行绘制. 官网:http://www.chartjs.org/ 文档:https://www.chartjs.org/docs/late ...

  7. 使用draw.io桌面版代替visio制作流程图

    前言 draw.io是一款在github上的开源产品,由于需要构建在线文档,需要插入画图类型, 对比多款开源产品,最终选择了draw.io. draw.io图标资源非常的丰富,方便导入图标资源,基本上 ...

  8. Shell流程控制语句case

    case语法格式: case 变量或表达式 in 变量或表达式1) 命令1 ;; 变量或表达式2) 命令2 ;; ...... *) 默认命令 esac case语句流程控制图:  实例: [root ...

  9. 机动车驾驶(1)--- 禁令标志汇总 by John

    以下是普通标志牌(新车安全)

  10. IDEA下同时使用Git和svn

    使用Git时将文件改成Git,Svn时改成svn 修改项目下.idea目录的vcs.xml配置文件. <?xml version="1.0" encoding="U ...