Java其他API介绍
有一些类虽然不像集合、多线程、网络编程中的类那样属于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 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,
并为操作日历字段(例如获得下星期的日期)提供了一些方法。
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介绍的更多相关文章
- 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实体中 ...
- Java阻塞队列四组API介绍
Java阻塞队列四组API介绍 通过前面几篇文章的学习,我们已经知道了Java中的队列分为阻塞队列和非阻塞队列以及常用的七个阻塞队列.如下图: 本文来源:凯哥Java(kaigejava)讲解Java ...
- java Future 接口介绍
(转自:http://blog.csdn.net/yangyan19870319/article/details/6093481) 在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java ...
- JAVA基本类库介绍
我们曾经讲过,Java已经为编程者编制了许多类,这些类已经经过测试,基本上不存在错误,这些类都是我们编程的基础.如果不利用这些已存在的类,我们的 编程工作将变得异常复杂,所以我们应尽可能多的掌握Jav ...
- Servlet基础(一) Servlet简介 关键API介绍及结合源码讲解
Servlet基础(一) Servlet基础和关键的API介绍 Servlet简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中. Servlet容器负责Servl ...
- Java垃圾回收介绍(译)
在Java中,对象内存空间的分配与回收是由JVM中的垃圾回收进程自动完成的.与C语言不同的是,在Java中开发者不需要专门为垃圾回收写代码.这是使Java流行的众多特征之一,也帮助了程序员写出了更好的 ...
- Java Web开发介绍
转自:http://www.cnblogs.com/pythontesting/p/4963021.html Java Web开发介绍 简介 Java很好地支持web开发,在桌面上Eclipse RC ...
- 关于 Java Collections API 您不知道的 5 件事--转
第 1 部分 http://www.ibm.com/developerworks/cn/java/j-5things2.html 对于很多 Java 开发人员来说,Java Collections A ...
- [译]Java 垃圾回收介绍
说明:这篇文章来翻译来自于Javapapers 的Java Garbage Collection Introduction 在Java中,对象内存空间的分配与回收是由JVM中的垃圾回收进程自动完成的. ...
随机推荐
- monkey基础学习
原文地址https://blog.csdn.net/beyond_f/article/details/78543070 一.Monkey测试简介 Monkey测试是Android平台自动化测试的一种手 ...
- 程序员:统治世界or修复bug?
程序员:统治世界or修复bug? 时至今日,我们依然生活在一个市场和技术受到高度崇拜的世界里,但是历史演化的规律提醒着我们:当一个东西开始成为社会崇拜的对象时,其中暗藏的不利因素将悄然的进行着.有人认 ...
- 142. Linked List Cycle II(找出链表相交的节点)
Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Note ...
- IIS应用程序池自动停止,报503错误解决方法
前两天遇见一个问题,部署网站之后,浏览时总是报503,找了半天才发现是用户权限问题,现在记录一下,方便以后遇到的大伙快速解决问题,以至于不会浪费太多时间 解决方法: 应 用程序-特定 权限设置未将 C ...
- openwrt编译系统生成ubi镜像的各变量解析
1.MKUBIFS_OPTS的作用 传递参数给mkfs.ubifs 2.MKUBIFS_OPTS传递了哪些参数? 传递了最小输入输出单元大小.逻辑擦除块大小.最大物理擦除块的个数,分别由选项-m.-e ...
- linux下如何退出tmux和重新进入tmux
1.退出(detach)当前tmux ctrl+d 2.重新进入tmux tmux attach -t <target-session> 如:当前有很多session,那么选择哪一个呢? ...
- 根据Bootstrap的Modal开发的提示框
代码: (function ($) { $(function () { var Modal = function () { var htmlContent = "<div id=\&q ...
- Kubernetes证书相关(CFSSL)
CFSSL是CloudFlare开源的一款PKI/TLS工具. CFSSL 包含一个命令行工具 和一个用于 签名,验证并且捆绑TLS证书的 HTTP API 服务. 使用Go语言编写. Github ...
- 解决 docker: Error response from daemon: ... : net/http: TLS handshake timeout.
参考:解决 Docker pull 出现的net/http: TLS handshake timeout 的一个办法 问题: 执行 $ sudo docker run hello-world 时出现: ...
- Codeforces Round #307 (Div. 2) D. GukiZ and Binary Operations 矩阵快速幂优化dp
D. GukiZ and Binary Operations time limit per test 1 second memory limit per test 256 megabytes inpu ...