java常用类介绍
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常用类介绍的更多相关文章
- Java基础 —— Java常用类
Java常用类: java.lang包: java.lang.Object类: hashcode()方法:返回一段整型的哈希码,代表地址. toString()方法:返回父类名+"@&quo ...
- Java常用类之要点总结
Java常用类之要点总结
- 使用Photon引擎进行unity网络游戏开发(二)——Photon常用类介绍
使用Photon引擎进行unity网络游戏开发(二)——Photon常用类介绍 Photon PUN Unity 网络游戏开发 Photon常用类介绍: IPunCallback PUNGIPunCa ...
- Java常用类:包装类,String,日期类,Math,File,枚举类
Java常用类:包装类,String,日期类,Math,File,枚举类
- Java常用类学习笔记总结
Java常用类 java.lang.String类的使用 1.概述 String:字符串,使用一对""引起来表示. 1.String声明为final的,不可被继承 2.String ...
- Java 常用类总结(SE基础)
本篇博客对java常用类相关知识进行了归纳总结,比较详细,适用于学习和复习. 1. 字符串相关的类 1.1 String String是一个final类,代表不可变的字符序列.不可被继承. Strin ...
- Java常用类的使用
Java常用类 1. Optional 在我们的开发中,NullPointerException可谓是随时随处可见,为了避免空指针异常,我们常常需要进行 一 些防御式的检查,所以在代码中常常可见if( ...
- Java常用类(二) Scanner类和大数类
二.Scanner类 有C系语言基础的可能都比较熟悉scanf("%d",&a);和cin>>a;这种代码,也打开了程序交互的第一道门.因此,这些程序员开始学J ...
- Java常用类,这一次帮你总结好!
常用类 常用类概述: 内部类 Object类 包装类 数学类 时间类 字符串 String Builder和StringBuffer DecimalFormat 一.内部类 概念:在一个类内部再定义一 ...
随机推荐
- ES6 数值
数值的表示 二进制表示法新写法: 前缀 0b 或 0B . console.log(0b11 === 3); // true console.log(0B11 === 3); // true 八进制表 ...
- svn 目录
svn介绍 SVN与Git的区别 SVN服务的模式和多种访问方式 多种访问原理图解与优缺点 SVN安装部署 svn 部署 配置 配置svn用户及密码 配置svn用户及权限 svn 启动命令讲解 svn ...
- python爬取网易云音乐歌曲评论信息
网易云音乐是广大网友喜闻乐见的音乐平台,区别于别的音乐平台的最大特点,除了“它比我还懂我的音乐喜好”.“小清新的界面设计”就是它独有的评论区了——————各种故事汇,各种金句频出.我们可以透过歌曲的评 ...
- 关于table的td和ul元素li隔行变色的功能实现
table元素的td和ul元素li隔行变色的功能实现 利用css控制二者的样式轻松实现隔行换色: 例如:table的css样式控制: table tr td{ background-color:颜 ...
- elasticsearch 安装 windows linux macOS
导读 在上一章节我们介绍Elasticsearch基本概念,今天我们继续进行本章内容,Elasticsearch在各种环境下安装,下面将逐一讲解在各种操作系统或不同安装在不同环境中注意事项. 安装 E ...
- Class_fourh_异常总结
使用try,catch,finally.检查指点检查点是否错误: try里填入监测的内容 catch 小括号里放类型错误 判断try里出现的错误是哪一类错误 中括号里放 输出内容 在控制台上输出错误 ...
- Linux系统查看本机ip地址
1. 使用ifconfig命令查看inet对应的ip地址就是 2. 如果不能使用ifconfig命令,需要安装net-tools工具,使用yum install net-tools安装即可.
- DelayQueue源码解析
DelayQueue是一个支持延时获取元素的无界阻塞队列.里面的元素全部都是“可延期”的元素,列头的元素是最先“到期”的元素,如果队列里面没有元素到期,是不能从列头获取元素的,哪怕有元素也不行.也就是 ...
- numpy 数组对象
numpy 数组对象NumPy中的ndarray是一个多维数组对象,该对象由两部分组成:实际的数据,描述这些数据的元数据# eg_v1 import numpy as np a = np.arange ...
- json-server基本使用
**一.前后端并行开发的痛点** 前端需要等待后端开发完接口以后 再根据接口来完成前端的业务逻辑 **二.解决方法** 在本地模拟后端接口用来测试前端效果 这种做法称之为构建前端Mock **三.js ...