1 日期时间、Math、枚举

1.1 日期时间

计算机如何表示时间?

GMT时间指格林尼治所在地的标准时间,也称为时间协调时(UTC),其他地区的时间都是相对于GMT时间的偏移。

北京位于东八区 = UTC + 8

时间戳(timestamp):距离特定时间经过的毫秒数,这个特定的时间计算机规定了是1970年01月01日 00:00:00:000,这个特定时间成为历元。

计算机时间2018.12.22 11:41:23:000 就是2018.12.22 11:41:23:000距离历元经历的毫秒数,用long类型存储。

1.2 Date

java中表示日期时间的类,位于java.util包中。

public static void main(String[] args) {

// 根据当前系统当前时区构造一个Date对象表示当前时间。

Date date = new Date();

// Tue Apr 02 14:25:06 CST(China Standard Time) 2019

System.out.println(date);

Date date2 = new Date(1000);

// Thu Jan 01 08:00:00 CST 1970

System.out.println(date2);

// 需求:创建一个时间表示1天之后的现在

long ts1 = 24 * 60 * 60 * 1000;

Date now = new Date();

long ts2 = now.getTime() + ts1;

Date date3 = new Date(ts2);

System.out.println(date3);

}

Date 本质上是一个包装类,内部封装了一个long 类型的timestamp,表示距离历元所经历 的毫秒数。可以通过getTime() 其内部存储的时间戳。

1.2.1 时间的比较

public static void main(String[] args) {

Date date1 = new Date();

long ts1 = 24 * 60 * 60 * 1000;

Date date2 = new Date(date1.getTime() + ts1);

// before/after

System.out.println(date1.before(date2));

System.out.println(date1.after(date2));

// Comparable接口

System.out.println(date1.compareTo(date2));

// equals

System.out.println(date1.equals(date2));

}

1.3 日期时间格式化

1.3.1 [1] Date -> 字符串

public static void main(String[] args) {

Date now = new Date();

// System.out.println(now.toString());

// 格式化成友好的时间

// 按照默认的模式和默认的语言环境创建格式化对象

SimpleDateFormat df = new SimpleDateFormat();

// 19-4-2 下午2:51

String nowStr = df.format(now);

System.out.println(nowStr);

// 需求:按照    年-月-日 时:分:秒 格式格式化时间

/*

SimpleDateFormat df2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");

String nowStr2 = df2.format(now);

System.out.println(nowStr2);

*/

// applyPattern

SimpleDateFormat df3 = new SimpleDateFormat();

df3.applyPattern("yyyy年MM月dd日");

String nowStr3 = df3.format(now);

System.out.println(nowStr3);

df3.applyPattern("HH:mm:ss");

String nowStr4 = df3.format(now);

System.out.println(nowStr4);

}

1.3.2 [2] 字符串 -> Date

public class Test04 {

public static void main(String[] args) {

String str1 = "2019年04月02日 15:34:12";

SimpleDateFormat df = new SimpleDateFormat();

df.applyPattern("yyyy年MM月dd日 HH:mm:ss");

Date date = null;

try {

date = df.parse(str1);

} catch (ParseException e) {

e.printStackTrace();

}

System.out.println(date);

}

}

注意:parse方法会产生ParseExcepion 检查时异常。

1.4 日历Calendar

日历本质上封装了一个long类型的time,表示距离历元的毫秒数。

Calendar内部提供了很多方法用于计算这个时间戳表示的一些信息。这些信息用字段(YEAR、MONTH)标记,可以通过get()方法获取,计算好的字段信息放到数组中,通过字段(索引)到数组中取值而已。

通常通过getInstance()工厂方法获取日历对象。

1.4.1 获取日历中的基本信息

public static void main(String[] args) {

// 更加当前语言环境、当前时区创建一个日历对象

Calendar cal = Calendar.getInstance();

System.out.println(cal);

// 获取日历中的年(YEAR)

int year = cal.get(Calendar.YEAR);

// 获取月份(0-11),月份从0开始

int month = cal.get(Calendar.MONTH);

// 获取一个月中的第几天,从1开始

int day = cal.get(Calendar.DAY_OF_MONTH);

// 获取一天的第几个小时(0-23)

int hour = cal.get(Calendar.HOUR_OF_DAY);

int min = cal.get(Calendar.MINUTE);

int second = cal.get(Calendar.SECOND);

int millSecond = cal.get(Calendar.MILLISECOND);

// 获取星期,从周日开始

int week = cal.get(Calendar.DAY_OF_WEEK);

System.out.println(week);

// 获取一个月有多少天?

int maxDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);

int minDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);

}

需求:控制台输入本月日历

package cn.sxt03.calender;

import java.util.Calendar;

public class Test03 {

public static void main(String[] args) {

Calendar cal = Calendar.getInstance();

cal.set(Calendar.MONTH, 5);

// 记录今天的日期

int today = cal.get(Calendar.DATE);

// 修改日历到本月1号

cal.set(Calendar.DATE, 1);

// 本月1号是星期几

int weekOfFirstDay = cal.get(Calendar.DAY_OF_WEEK);

System.out.println(weekOfFirstDay);

int oneDayInMonth = cal.getActualMinimum(Calendar.DAY_OF_MONTH);

int lastDayInMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH);

// 修改日历到本月今天

cal.set(Calendar.DATE, today);

System.out.println("日\t一\t二\t三\t四\t五\t六");

// 输出本月1号前的空格

for(int i=1;i<weekOfFirstDay;i++) {

System.out.print("\t");

}

// 排列1-最大天数

for(int i=oneDayInMonth;i<=lastDayInMonth;i++) {

// 修改日历到指定的天

cal.set(Calendar.DATE, i);

if(i == today) {

System.out.print(i+"*\t");

}else {

System.out.print(i+"\t");

}

if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {

System.out.println();

}

}

}

}

1.5 Math类

Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。

public static void main(String[] args) {

// 属性

System.out.println(Math.PI);

// 【1】求绝对值

System.out.println(Math.abs(-1));

// 【2】ceil/floor

// ceil(x) 返回比x大的最小整数 => 向上取整

double a = 10.1;

System.out.println(Math.ceil(a));

// floor(x) 返回比x小的最大整数 => 向下取整

System.out.println(Math.floor(a));

// 【3】求两个数的最大值、最小值

System.out.println(Math.max(10, 20));

System.out.println(Math.min(10, 20));

// 【4】pow(x,y) 求x的y次幂

System.out.println(Math.pow(2, 3));

// 【5】random()

// 【6】round 四舍五入

System.out.println(Math.round(10.5));

// sqrt() 开方

System.out.println(Math.sqrt(4));

// 【7】角度->弧度

System.out.println(Math.toRadians(180));

// 弧度->角度

System.out.println(Math.toDegrees(Math.PI/3));

// 【8】sin/cos/tan(c) 参数是弧度

System.out.println(Math.sin(Math.PI/6));

// 需求:求两点之间的距离(x1,y1)-(x2,y2)

// Math.sqrt(Math.pow((x1-x2), 2)+Math.pow((y1-y2), 2))

}

1.6 枚举

1.6.1 枚举概念

枚举(enum)是一组固定常量的组成的类型,它是一种自定义数据类型。

[修饰符] enum 枚举名称{

常量1,

常量2,

常量n[;]

}

注意:

[1]枚举中的常量是有限的。

[2] 枚举值不需要任何修饰符,默认static final 类型

需求:声明一个性别的枚举

public enum Gender{

男,

女,

保密

}

声明了一个枚举,它是一种数据类型,可以声明变量。

public class Test01 {

public static void main(String[] args) {

// 声明了一个Gender类型的变量

Gender gender = Gender.女;

System.out.println(gender);

}

}

总结:

[1]枚举类型是除基本数据类型、引用数类型外的另外一种自定义数据类型。一般可以把有限的、可列举的常量值定义成枚举类型。

[2] 通过Gender枚举声明的变量取值一定是Gender中声明的枚举值,不能取其他值。

1.6.2 enum 本质(C)

enum 本质上是继承于Enum类。enum实际上也是类。

public enum Gender{

// 枚举值本质上是Gender类型的一个实例

男,

女,

保密;

private Gender() {

System.out.println("gender");

}

public void showInfo() {

System.out.println("showinfo");

}

}

1.6.3 枚举和String的转换

public class Test02 {

public static void main(String[] args) {

// 【1】枚举值->String

Gender gender = Gender.女;

System.out.println(gender.toString());

// 【2】String->枚举值

String str = "女";

// 可能会IllegalArgumentException

Gender gender2 = Enum.valueOf(Gender.class, str);

System.out.println(gender2);

}

}

其他方法

public class Test03 {

public static void main(String[] args) {

// name() 获取枚举值的名称

// equals() 比较两个枚举值是否相等

Gender gender = Gender.保密;

System.out.println(gender.ordinal());

}

}

1.6.4 枚举和switch

public static void main(String[] args) {

Action action = Action.DEL;

switch (action) {

case ADD:{

System.out.println("add");

break;

}

case VIEW:{

System.out.println("view");

break;

}

case DEL:{

System.out.println("del");

break;

}

case EXIT:{

System.out.println("exit");

break;

}

}

}

1.7 File 类

java中文件或者目录都可以通过File类来表示。

public static void main(String[] args) {

// 路径分隔符。

/**

* win=>;

* mac|linux|unix=>:

*/

System.out.println(File.pathSeparator);

// 路径名称分隔符

/**

* win=> \

* mac|linux|unix => /

*/

System.out.println(File.separator);

}

作业

java常用类介绍的更多相关文章

  1. Java基础 —— Java常用类

    Java常用类: java.lang包: java.lang.Object类: hashcode()方法:返回一段整型的哈希码,代表地址. toString()方法:返回父类名+"@&quo ...

  2. Java常用类之要点总结

    Java常用类之要点总结

  3. 使用Photon引擎进行unity网络游戏开发(二)——Photon常用类介绍

    使用Photon引擎进行unity网络游戏开发(二)——Photon常用类介绍 Photon PUN Unity 网络游戏开发 Photon常用类介绍: IPunCallback PUNGIPunCa ...

  4. Java常用类:包装类,String,日期类,Math,File,枚举类

    Java常用类:包装类,String,日期类,Math,File,枚举类

  5. Java常用类学习笔记总结

    Java常用类 java.lang.String类的使用 1.概述 String:字符串,使用一对""引起来表示. 1.String声明为final的,不可被继承 2.String ...

  6. Java 常用类总结(SE基础)

    本篇博客对java常用类相关知识进行了归纳总结,比较详细,适用于学习和复习. 1. 字符串相关的类 1.1 String String是一个final类,代表不可变的字符序列.不可被继承. Strin ...

  7. Java常用类的使用

    Java常用类 1. Optional 在我们的开发中,NullPointerException可谓是随时随处可见,为了避免空指针异常,我们常常需要进行 一 些防御式的检查,所以在代码中常常可见if( ...

  8. Java常用类(二) Scanner类和大数类

    二.Scanner类 有C系语言基础的可能都比较熟悉scanf("%d",&a);和cin>>a;这种代码,也打开了程序交互的第一道门.因此,这些程序员开始学J ...

  9. Java常用类,这一次帮你总结好!

    常用类 常用类概述: 内部类 Object类 包装类 数学类 时间类 字符串 String Builder和StringBuffer DecimalFormat 一.内部类 概念:在一个类内部再定义一 ...

随机推荐

  1. ES6 数组

    数组创建 Array.of() 将参数中所有值作为元素形成数组. console.log(Array.of(1, 2, 3, 4)); // [1, 2, 3, 4] // 参数值可为不同类型 con ...

  2. jstl 与 el表达式

    jar下载地址参考:https://blog.csdn.net/qq_30062589/article/details/80224080 <%@ page language="java ...

  3. 洛谷P2743 乐曲主题Musical Themes [USACO5.1] SA

    正解:SA 解题报告: 传送门 这题三个条件嘛,那就一个个考虑下都解决了就把这题解决了嘛QwQ 那就直接分别针对三个条件写下各个击破就欧克辣? 1)长度大于等于5:求出答案之后和5比大小 2)不能有公 ...

  4. 初步了解Fork/Join框架

    框架介绍 Fork/Join框架是Java 7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个子任务,最终汇总每个子任务的执行结果以得到大任务结果的框架.Fork/Join框架要完成两件事 ...

  5. https证书随记

    下载证书之后: 1:域名跳转操作 <system.webServer>         <rewrite>             <rules>          ...

  6. 认识拨号计划-dialplan

    拨号计划是 FreeSWITCH 中至关重要的一部分.它的主要作用就是对电话进行路由(从这一点上来说,相当于一个路由表).说的简明一点,就是当一个用户拨号时,对用户所拨的号码进行分析,进而决定下一步该 ...

  7. iOS开发笔记错误集

    错误类型列举 错误类型A:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) 错误类型B:EXC_BREAKPOINT (code=EXC_A ...

  8. Java作业(一)

    再此次的Java考试中发现自己的不足,无法套用HTML模板进行编程,说实话拿到的第一刻自己有些懵,不知道怎么去操作, 后来通过查询操作了一些,但是整个人还是懵懵的,不知道下一步怎么办,怎么去连接后台和 ...

  9. 邮件发送 utils

    package cn.itcast.bos.utils;   import java.util.Properties;   import javax.mail.Message; import java ...

  10. 213. House Robber II(动态规划)

    You are a professional robber planning to rob houses along a street. Each house has a certain amount ...