Java:日历类、日期类、数学类、运行时类、随机类、系统类

简介:

一:Calendar类

java.util 抽象类Calendar   1、static Calendar getInstance()使用默认时区和语言环境获得一个日历。

                                   2、 int get(int field) 返回给定日历字段的值。                            

java.lang.Object

  继承者 java.util.Calendar

所有已实现的接口: 

Serializable, Cloneable, Comparable<Calendar> 

直接已知子类: 

GregorianCalendar 

对于日期字段: 

 YEAR + MONTH + DAY_OF_MONTH

 YEAR + MONTH + WEEK_OF_MONTH + DAY_OF_WEEK

 YEAR + MONTH + DAY_OF_WEEK_IN_MONTH + DAY_OF_WEEK

 YEAR + DAY_OF_YEAR

 YEAR + DAY_OF_WEEK + WEEK_OF_YEAR

对于时间字段: 

 HOUR_OF_DAY

 AM_PM + HOUR

//例子1:

复制代码
import java.util.*;
import java.text.*;
class CalendarDemo
{
    public static<T> void sop(T t)
    {
        System.out.print(t);
    }
    public static void main(String[] args)
    {
        Calendar c = Calendar.getInstance();
        
        //查表法
        String[] mons = {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
        String[] weks = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
        
        int index1 = c.get(Calendar.MONTH);
        int index2 = c.get(Calendar.DAY_OF_WEEK)-1;
        
        sop(c.get(Calendar.YEAR)+"年");
        //sop((c.get(Calendar.MONTH)+1)+"月");
        sop(mons[index1]);
        sop(c.get(Calendar.DAY_OF_MONTH)+"日"); 
        sop(c.get(Calendar.HOUR)+"时");
        sop(c.get(Calendar.MINUTE)+"分");
        sop(c.get(Calendar.SECOND)+"秒");
        sop(weks[index2]);
        //sop("星期"+(c.get(Calendar.DAY_OF_WEEK)-1));
        
        
        
        /*
        Date d = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
        String year = sdf.format(d);
        System.out.println("year="+year);  //year=2015
        */
    }
}
复制代码

 void set(int year, int month, int date) 

          设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。 

 void set(int year, int month, int date, int hourOfDay, int minute) 

          设置日历字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值。 

 void set(int year, int month, int date, int hourOfDay, int minute, int second) 

          设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。

 abstract  void add(int field, int amount) 

          根据日历的规则,为给定的日历字段添加或减去指定的时间量。

//例子2:

复制代码
import java.util.*;
class CalendarDemo2
{
    public static<T> void sop(T t)
    {
        System.out.print(t);
    }
    public static void main(String[] args)
    {
        Calendar c = Calendar.getInstance();
        //c.set(2012,2,23);
        //c.add(Calendar.YEAR,4);
        c.add(Calendar.YEAR,-4);
        printCalendar(c);
    }
    public static void printCalendar(Calendar c)
    {
      sop(c.get(Calendar.YEAR)+"年");
      sop((c.get(Calendar.MONTH)+1)+"月");
      sop(c.get(Calendar.DAY_OF_MONTH)+"日"); 
      sop("星期"+(c.get(Calendar.DAY_OF_WEEK)-1));
    }
}
复制代码

 

二、日期类:Date

java.util.Date类:

java.text.Format

       继承者 java.text.DateFormat   设置时间格式方法:String format(Date date) 将一个 Date 格式化为日期/时间字符串       

       继承者 java.text.SimpleDateFormat

1、SimpleDateFormat中的格式名词:  

字母  日期或时间元素  表示  示例  

G  Era 标志符  Text  AD  

y  年  Year  1996; 96  

M  年中的月份  Month  July; Jul; 07  

w  年中的周数  Number  27  

W  月份中的周数  Number  2  

D  年中的天数  Number  189  

d  月份中的天数  Number  10  

F  月份中的星期  Number  2  

E  星期中的天数  Text  Tuesday; Tue  

a  Am/pm 标记  Text  PM  

H  一天中的小时数(0-23)  Number  0  

k  一天中的小时数(1-24)  Number  24  

K  am/pm 中的小时数(0-11)  Number  0  

h  am/pm 中的小时数(1-12)  Number  12  

m  小时中的分钟数  Number  30  

s  分钟中的秒数  Number  55  

S  毫秒数  Number  978  

z  时区  General time zone  Pacific Standard Time; PST; GMT-08:00  

Z  时区  RFC 822 time zone  -0800  

 

2、SimpleDateFormat中的格式举例:

日期和时间模式  结果  

"yyyy.MM.dd G 'at' HH:mm:ss z"  2001.07.04 AD at 12:08:56 PDT  

"EEE, MMM d, ''yy"  Wed, Jul 4, '01  

"h:mm a"  12:08 PM  

"hh 'o''clock' a, zzzz"  12 o'clock PM, Pacific Daylight Time  

"K:mm a, z"  0:08 PM, PDT  

"yyyyy.MMMMM.dd GGG hh:mm aaa"  02001.July.04 AD 12:08 PM  

"EEE, d MMM yyyy HH:mm:ss Z"  Wed, 4 Jul 2001 12:08:56 -0700  

"yyMMddHHmmssZ"  010704120856-0700  

"yyyy-MM-dd'T'HH:mm:ss.SSSZ"  2001-07-04T12:08:56.235-0700 

//例子3:

复制代码
import java.util.*;
import java.text.*;
class DateDemo
{
    public static<T> void sop(T t)
    {
        System.out.println("t="+t);
    }
    public static void main(String[] args)
    {
        Date d = new Date();
        sop(d);  //t=Wed May 27 17:13:42 CST 2015
        
        //将模式封装到SimpleDateFormat对象中。
        //SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd E G 'at' HH:mm:ss z");
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd E G 'at' HH:mm:ss z");
        //调用format方法,将模式格式化指定到Date对象。
        String time = sdf.format(d);
        System.out.println(time);//2015.05.27 星期三 公元 at 17:56:03 CST
    }
}
复制代码

三、数学类:Math

Math类:(它是一个工具类,全是静态的成员)

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

 以下是一些常用的静态常量和静态方法:

       static double E 

          比任何其他值都更接近 e(即自然对数的底数)的 double 值。 

   static double PI 

          比任何其他值都更接近 pi(即圆的周长与直径之比)的 double 值。 

       static double abs(double a)  //double、float、int、long

          返回 double 值的绝对值。

       static double cbrt(double a) 

          返回 double 值的立方根。 

       static double ceil(double a) 

          返回最小的(最接近负无穷大)double 值,该值大于等于参数,并等于某个整数。(即返回大于指定数据的最小整数)

       static double floor(double a) 

          返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。(即返回小于指定数据的最大整数)    

       static double max(double a, double b) //double、float、int、long

          返回两个 double 值中较大的一个。 

       static double min(double a, double b) //double、float、int、long

          返回两个 double 值中较小的一个。 

   static double pow(double a, double b) 

          返回第一个参数的第二个参数次幂的值。 

   static double random() 

          返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。 

       static double sqrt(double a) 

          返回正确舍入的 double 值的正平方根。

       static long round(double a)(四舍五入) 

          返回最接近参数的 long。 

       static int round(float a)(四舍五入) 

          返回最接近参数的 int。 

//例子4:

复制代码
class MathDemo
{
    public static<QQ> void sop(QQ q)
    {
        System.out.println(q);
    }
    public static void main(String[] args)
    {
        //返回大于指定数据的最小整数
        double d = Math.ceil(13.62);//14.0
        //double d = Math.ceil(-13.62);//-13.0
        sop("d="+d);
        
        //返回小于指定数据的最大整数
        double d1 = Math.floor(13.62);//13.0
        //double d1 = Math.floor(-13.62);//-14.0
        sop("d1="+d1);
        
        //四舍五入
        long l = Math.round(13.62);//14
        //long l = Math.round(-13.62);//-14
        sop("l="+l);
        
        //求一个数的多少次幂
        double d2 = Math.pow(2,3);
        sop("d2="+d2);
        
        //返回一个大于等于 0.0 且小于 1.0的随机的double数值
        for(int i=0;i<10;i++)
        {
         double d3 = Math.random();
         //int d3 = (int)(Math.random()*10+1);//返回介于1到10之间的随机整数
         sop("d3="+d3);
        }
    }
}
复制代码

四、运行时类:Runtime

 Runtime类:

  该类中并没有提供构造函数,那么会直接想到该类中的方法都是静态的,可是,发现该类中还有非静态方法。

  说明该类肯定会提供方法获取本类的对象。而且该方法是静态的,并且返回值类型为本类类型,由此可以看出

  该类使用了单例设计模式完成。

 1、static Runtime getRuntime()  返回与当前 Java 应用程序相关的运行时对象。

//例子5: 

复制代码
class RuntimeDemo
{
    public static void sop(Object obj)
    {
        System.out.println("obj="+obj);
    }
    public static void main(String[] args) throws Exception
    {
        Runtime r = Runtime.getRuntime();
        //sop(r.toString());
        
        
        //r.exec("notepad.exe  SystemDemo.java");//开启记事本进程,并打开与之关联的文件(还如:播放器进程 播放的文件)
        
        //r.exec("D:\\Thunder\\program\\Thunder.exe");          //输入命令打开迅雷   
        //Process p = r.exec("D:\\Thunder\\program\\Thunder.exe");//输入命令返回迅雷子进程  
        //Thread.sleep(4000);
        //p.destroy();//开启的迅雷子进程停留4秒后,杀掉即关闭
        
    }
}
复制代码

 

五、随机类:Random

java.util 

Random类:

   构造方法

Random() 

          创建一个新的随机数生成器。 

Random(long seed) 

          使用单个 long 种子创建一个新的随机数生成器。 

  方法摘要 

protected  int next(int bits) 

          生成下一个伪随机数。 

 boolean nextBoolean() 

          返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 boolean 值。 

 void nextBytes(byte[] bytes) 

          生成随机字节并将其置于用户提供的 byte 数组中。 

 double nextDouble() 

          返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 double 值。 

 float nextFloat() 

          返回下一个伪随机数,它是取自此随机数生成器序列的、在 0.0 和 1.0 之间均匀分布的 float 值。 

 double nextGaussian() 

          返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的 double 值,其平均值是 0.0,标准差是 1.0。 

 int nextInt() 

          返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。 

 int nextInt(int n) 

          返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值。 

 long nextLong() 

          返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。 

 void setSeed(long seed) 

          使用单个 long 种子设置此随机数生成器的种子。

//例子6:

复制代码
import java.util.*;
class RandomDemo
{
    public static void sop(Object obj)
    {
        System.out.println("obj="+obj);
    }
    public static void main(String[] args)
    {
        Random r = new Random();
        //返回整型随机数
        for(int i=0;i<10;i++)
           sop(r.nextInt());
        //返回指定界限内的整型随机数(0~10,包括0不包括10)
        for(int i=0;i<10;i++)
         //sop((int)(Math.random()*10+1));
           sop((r.nextInt(10)+1));
    }
}
复制代码

6、系统类:System

System类:描述系统的一些信息。(类中的方法和属性全是静态的)

  out:标准输出  默认的是控制台

  in: 标准输入  默认的是键盘

  1、static Properties getProperties()  确定当前的系统属性。

  2、static String setProperty(String key, String value) 设置指定键指示的系统属性。

//例子7:

复制代码
import java.util.*;
class SystemDemo
{
    public static<T> void sop(T t)
    {
        System.out.println(t);
    }
    public static void main(String[] args)
    {
        Properties prop = System.getProperties();
        //因为Properties是Hashtable的子类,也就是Map集合的一个子类对象,那么可以通过Map的方法取出该集合的元素。
        //该集合中存放的都是字符串,没有泛型定义。
        
        
        //如何中系统中自定义一些特有信息呢?
        System.setProperty("#######","$$$$$$$$");
        
        //获取指定的信息。
        sop(System.getProperty("os.name"));
        
        
       //可不可以在JVM启动时,动态的加载一些信息呢?(在JVM中可以运行时动态实现,即:java -D<名称>=<值> :设置系统属性)
        String s = System.getProperty("haha");
        sop(s);
        
        
        /*
        //获取所有信息。
        for(Object obj:prop.keySet())
        {
            String value = (String)prop.get(obj);
            sop(obj+" "+value);
        }
        */
    }
}
复制代码

 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/4916004.html ,如需转载请自行联系原作者
相关文章
|
1天前
|
JavaScript Java 测试技术
基于Java的社区人员管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的社区人员管理系统的设计与实现(源码+lw+部署文档+讲解等)
14 2
|
1天前
|
JavaScript Java 测试技术
基于Java的公司员工工作日志办公系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的公司员工工作日志办公系统的设计与实现(源码+lw+部署文档+讲解等)
23 3
|
1天前
|
JavaScript Java 测试技术
基于Java的精品课程在线学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的精品课程在线学习系统的设计与实现(源码+lw+部署文档+讲解等)
17 1
|
1天前
|
JavaScript Java 测试技术
基于Java的高校大学生党建系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的高校大学生党建系统的设计与实现(源码+lw+部署文档+讲解等)
16 1
|
1天前
|
JavaScript Java 测试技术
基于Java的学生课堂考勤系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的学生课堂考勤系统的设计与实现(源码+lw+部署文档+讲解等)
16 0
|
1天前
|
JavaScript Java 测试技术
基于Java的中文学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的中文学习系统的设计与实现(源码+lw+部署文档+讲解等)
16 0
|
1天前
|
人工智能 前端开发 Java
Java语言开发的AI智慧导诊系统源码springboot+redis 3D互联网智导诊系统源码
智慧导诊解决盲目就诊问题,减轻分诊工作压力。降低挂错号比例,优化就诊流程,有效提高线上线下医疗机构接诊效率。可通过人体画像选择症状部位,了解对应病症信息和推荐就医科室。
27 10
|
1天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
|
2天前
|
消息中间件 存储 安全
从零开始构建Java消息队列系统
【4月更文挑战第18天】构建一个简单的Java消息队列系统,包括`Message`类、遵循FIFO原则的`MessageQueue`(使用`LinkedList`实现)、`Producer`和`Consumer`类。在多线程环境下,`MessageQueue`的操作通过`synchronized`保证线程安全。测试代码中,生产者发送10条消息,消费者处理这些消息。实际应用中,可能需要考虑持久化、分布式队列和消息确认等高级特性,或者使用成熟的MQ系统如Kafka或RabbitMQ。
|
2天前
|
存储 数据可视化 安全
Java全套智慧校园系统源码springboot+elmentui +Quartz可视化校园管理平台系统源码 建设智慧校园的5大关键技术
智慧校园指的是以物联网为基础的智慧化的校园工作、学习和生活一体化环境,这个一体化环境以各种应用服务系统为载体,将教学、科研、管理和校园生活进行充分融合。无处不在的网络学习、融合创新的网络科研、透明高效的校务治理、丰富多彩的校园文化、方便周到的校园生活。简而言之,“要做一个安全、稳定、环保、节能的校园。
20 6