有一些类虽然不像集合、多线程、网络编程中的类那样属于Java中的核心类,但是它们在开发过程中给我们带来很多便利,这里就对它们做下简要的介绍和演示。

一、System类

System类中的构造方法是私有的,System类中的属性和方法都是静态的。

常用方法: long currentTimeMills():返回以毫秒值为单位的当前时间。

System 类包含一些有用的类字段和方法。下面的演示就获取了本地系统的信息,并把它们打印出来。

 package www.wsw.otherApi;
import java.util.Properties;
import java.util.Set; public class SystemTest {
/**
* 跨平台的分隔符,在什么平台上运行,就调用那个平台的换行符
* 另外。可以把系统的常用信息定义成静态字段,方便使用。
*/
public static String line_speparator=System.getProperty("line.separator"); public static void main(String[] args) {
//常用方法: long currentTimeMills()
long l1=System.currentTimeMillis();//返回以毫秒值为单位的当前时间
System.out.println(l1);//
demo_1();
} public static void demo_1() {
/**
* 获取系统信息的键和值,并存储到Properties集合中
* Properties是HashTable的子类,它的键和值都是String类型的
* 最好使用Properties自己的方法来完成元素的存储和取出操作
*/
Properties properties=System.getProperties();
// Set<String> stringPropertyNames() 返回此属性列表中的键集
Set<String> nameSet=properties.stringPropertyNames();
for(String name:nameSet){
String value=properties.getProperty(name);
System.out.println(name+"::"+value);
}
} }

二、 Runtime类

每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime 方法获取当前运行时。

应用程序不能创建自己的 Runtime 类实例。

有exec方法和destroy方法,参见演示。

 package www.wsw.otherApi;
import java.io.IOException; public class RuntimeDemo { public static void main(String[] args) throws IOException, InterruptedException {
/**
* Runtime没有构造方法摘要,说明该类不能够创建对象,
* 又该类有非静态方法,则Runtime类有能返回该类实例的静态方法,
* 发现这样的方法只有一个,则Runtime类使用了单例设计模式
*/
Runtime r=Runtime.getRuntime();
//execute 执行 exe
Process p=r.exec("notepad.exe D:\\abc\\MapDemo.java");//打开记事本,并用它解析D盘目录下的一个文件
//Process是一个抽象类
Thread.sleep(2000);
p.destroy();//杀掉子进程 } }

三、Math类

* Math类中都是做数学运算的静态方法
* 常用方法:
* ceil():返回大于等于参数的最小整数
* floor():返回小于等于参数的最大整数
* round():返回参数四舍五入得到的整数
* pow(a,b):返回a的b次方
*
* random():返回[0,1)范围内的伪随机数

 package www.wsw.otherApi;

 public class MathDemo {

     public static void main(String[] args) {

         double d1=Math.ceil(-7.67);//-7.0
double d2=Math.floor(-7.67);//-8.0
double d3=Math.round(-7.67);//-8.0
sop("d1="+d1);
sop("d2="+d2);
sop("d3="+d3); sop(Math.pow(10,2)+"");//100.0 //获取10个1-6之间的随机数
for (int i = 0; i < 10; i++) {
//double d= (int)(Math.random()*6)+1;
double d=Math.ceil(Math.random()*6);
/**
* 也可以写为:
* Random r=new Random();//Random位于Java.util包中,把随机数封装成了对象
* 提供更多的方法
* int d=r.nextInt(6)+1;
*/ sop(d+"");
} }
//方便输出
public static void sop(String str) {
System.out.println(str);
} }

四、Date类和DateFormat类

Date类属于java.util包,类 Date 表示特定的瞬间,精确到毫秒。

它允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和解析日期字符串。不过,这些函数的 API 不易于实现国际化。

从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和解析日期字符串。Date 中的相应方法已废弃。

DateFormat 属于java.text包,是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。

 把毫秒值转化为Date对象
* 1.Date的构造方法
* 2.通过setTime方法
* 作用:可以使用Date类中的方法对Date对象的字段(年月日等)进行操作
*
* 把Date对象转化为毫秒值
* 1.getTime方法
* 作用:可以对毫秒值进行运算,算出时间差等
*
* 其他方法
* boolean before(Date when):判断此日期是否在指定日期之前
* boolean after():判断此日期是否在指定日期之后
* boolean equals():判断此日期和指定日期是否相等
* int compareTo():返回正负零

下面的演示中还涉及到两个转化,把日期字符串转为为Date对象和把Date对象转化为按某种格式的日期字符串,

分别使用了DateFormat类中的parse方法和format方法。

 package www.wsw.otherApi;

 import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date; public class DateDemo { public static void main(String[] args) throws ParseException { methodDemo_3();
}
/**
* 将日期字符串-->日期对象
* @throws ParseException 日期转换异常
*/
public static void methodDemo_3() throws ParseException {
String str="2017--03--29";
DateFormat dateFormat=new SimpleDateFormat("yyyy--MM--dd");
/**
* String str="2017年3月1日";
* DateFormat dateFormat=DateFormat.getDateInstance(DateFormat.LONG);
*/
Date date=dateFormat.parse(str);
System.out.println(date);//Wed Mar 29 00:00:00 CST 2017 }
/**
* 将日期对象进行格式化
* 将日期对象-->日期格式的字符串
* 使用的是DateFormat中的format方法
*/
public static void methodDemo_2() {
Date date=new Date();
//获取日期格式器对象,并为默认的风格 可以指定Long full风格等
DateFormat dateFormat1=DateFormat.getDateInstance(DateFormat.FULL);
//获取日期/时间格式器对象
DateFormat dateFormat2=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG); //如果,想要使用自定义的格式呢?
DateFormat dateFormat3=new SimpleDateFormat("MM月~dd日--yyyy年");
String str1=dateFormat1.format(date);
String str2=dateFormat2.format(date);
String str3=dateFormat3.format(date);
System.out.println(str1);//2017年3月22日 星期三
System.out.println(str2);//2017年3月22日 下午02时14分06秒
System.out.println(str3);//03月~22日--2017年
} public static void methodDemo_1() {
long l=System.currentTimeMillis();
Date d=new Date();//把当前时间封装为Date对象
Date d2=new Date(1490023019659l);//把毫秒值转化为Date对象
System.out.println(d);//Mon Mar 20 23:18:58 CST 2017
System.out.println(d2);//Mon Mar 20 23:16:59 CST 2017
} }

Date类练习

练习:计算“2017年6月1日”和“2017年3月22日”之间相差多少天?
* 思路:
* 1.把日期字符串转化为Date对象
* 2.把Date对象转化为相应的毫秒值,然后相减
* 3.把毫秒值转化为天

 package www.wsw.otherApi;

 import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date; public class DateTest { public static void main(String[] args) throws ParseException {
int day=subDate("2017年5月1日","2017年3月22日");
System.out.println(day);
} public static int subDate(String str1, String str2) throws ParseException {
DateFormat dateFormat=DateFormat.getDateInstance(DateFormat.LONG);
Date date1=dateFormat.parse(str1);
Date date2=dateFormat.parse(str2); long time1=date1.getTime();
long time2=date2.getTime();
long time =time1-time2;
int day=getDay(time);
return day;
}
/**
* 把毫秒值转化为天数
* @param time 毫秒值
* @return 天数
*/
public static int getDay(long time) {
int day=(int) (time/1000/60/60/24);
return day;
} }

五、Calendar类

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEARMONTHDAY_OF_MONTHHOUR日历字段之间的转换提供了一些方法,

并为操作日历字段(例如获得下星期的日期)提供了一些方法。

 package www.wsw.otherApi;
import java.util.Calendar; public class CalendarDemo { public static void main(String[] args) {
Calendar c=Calendar.getInstance(); //使用Calendar类中的方法获取某年的2月有多少天
showDays(2016);//2016年2月29日星期一
} public static void showDays(int year) {
Calendar c=Calendar.getInstance();
c.set(year, 2, 1);//把日期设置为某年的三月一号
c.add(Calendar.DAY_OF_MONTH, -1);//把日期向前偏移一天
showDate(c);
} //获取日历字段,得到符合中国人习惯的日期显示
public static void showDate(Calendar c) {
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH)+1;//0代表1月
int day=c.get(Calendar.DAY_OF_MONTH);
int week=c.get(Calendar.DAY_OF_WEEK);//1代表星期天,7代表星期六 System.out.println(year+"年"+month+"月"+day+"日"+getWeek(week));//2017年3月22日星期三
} public static String getWeek(int week) {
String[] weeks={"","星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
return weeks[week];
} }

Java其他API介绍的更多相关文章

  1. JavaEE Tutorials (8) - Java持久化API介绍

    8.1实体96 8.1.1实体类的需求97 8.1.2实体类中的持久化字段和属性97 8.1.3实体的主键101 8.1.4实体关系中的多重性103 8.1.5实体关系中的方向103 8.1.6实体中 ...

  2. Java阻塞队列四组API介绍

    Java阻塞队列四组API介绍 通过前面几篇文章的学习,我们已经知道了Java中的队列分为阻塞队列和非阻塞队列以及常用的七个阻塞队列.如下图: 本文来源:凯哥Java(kaigejava)讲解Java ...

  3. java Future 接口介绍

    (转自:http://blog.csdn.net/yangyan19870319/article/details/6093481) 在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java ...

  4. JAVA基本类库介绍

    我们曾经讲过,Java已经为编程者编制了许多类,这些类已经经过测试,基本上不存在错误,这些类都是我们编程的基础.如果不利用这些已存在的类,我们的 编程工作将变得异常复杂,所以我们应尽可能多的掌握Jav ...

  5. Servlet基础(一) Servlet简介 关键API介绍及结合源码讲解

    Servlet基础(一) Servlet基础和关键的API介绍 Servlet简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中. Servlet容器负责Servl ...

  6. Java垃圾回收介绍(译)

    在Java中,对象内存空间的分配与回收是由JVM中的垃圾回收进程自动完成的.与C语言不同的是,在Java中开发者不需要专门为垃圾回收写代码.这是使Java流行的众多特征之一,也帮助了程序员写出了更好的 ...

  7. Java Web开发介绍

    转自:http://www.cnblogs.com/pythontesting/p/4963021.html Java Web开发介绍 简介 Java很好地支持web开发,在桌面上Eclipse RC ...

  8. 关于 Java Collections API 您不知道的 5 件事--转

    第 1 部分 http://www.ibm.com/developerworks/cn/java/j-5things2.html 对于很多 Java 开发人员来说,Java Collections A ...

  9. [译]Java 垃圾回收介绍

    说明:这篇文章来翻译来自于Javapapers 的Java Garbage Collection Introduction 在Java中,对象内存空间的分配与回收是由JVM中的垃圾回收进程自动完成的. ...

随机推荐

  1. 2017中国大学生程序设计竞赛-哈尔滨站 Solution

    A - Palindrome 题意:给出一个字符串,找出其中有多少个子串满足one-half-palindromic 的定义 思路:其实就是找一个i, j  使得 以i为中轴的回文串长度和以j为中轴的 ...

  2. 【android】开发中遇到的一些问题

    1:华为输入法,输入框为ACTION_DONE模式,ActionId是 UNSPECIFIED EditText对象.setImeOptions(EditorInfo.IME_ACTION_DONE) ...

  3. 日志处理(二) 日志组件logback的介绍及配置使用方法(转)

    本文转自:http://www.cnblogs.com/yuanermen/archive/2012/02/13/2348942.html http://www.cnblogs.com/yuanerm ...

  4. iframe 跨域问题解决方案 利用window.name+iframe跨域获取数据详解

    详解 前文提到用jsonp的方式来跨域获取数据,本文为大家介绍下如何利用window.name+iframe跨域获取数据. 首先我们要简单了解下window.name和iframe的相关知识.ifra ...

  5. HDU1160FatMouse's Speed

    #include<stdio.h> #include<string.h> #include<algorithm> #include<set> #incl ...

  6. RESTful源码笔记之RESTful Framework的Mixins小结

    0x00 引言 本篇对drf中的mixins进行简要的分析总结.Mixins在drf中主要配合viewset共同使用,实现http方法与mixins的相关类与方法进行关联. from rest_fra ...

  7. CentOS下 Nginx1.13.5 + PHP7.1.10 + MySQL5.7.19 源码编译安装

    一.安装Nginx ①安装依赖扩展 # yum -y install wget openssl* gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng l ...

  8. EL表达式判断条件要写在${}内

    由于老没开发框架了,今天提取公共省市县三级联动组件时,使用jsp传参搞了半天才弄出来. 组件代码 $(function(){console.log("${param.init}") ...

  9. 一个PE文件的逆向分析

    一个PE文件的逆向分析 idf-ctf上有个题,是PE文件的逆向,反正对我来说做出来就是有意思的题,做不出来就没劲.言归正传,下面看一下吧 大家想玩可以去这个地方去拿题http://pan.baidu ...

  10. 《EMCAScript6入门》读书笔记——14.Promise对象