关于JAVA System常见类的一些总结
一、JAVA System类概述
1.概述:
System 类是一个抽象类,所有的字段和方法都是静态的,即不能被实例化。其中包含一些有用的类字段和方法,它不能被实例化。在 System 类提供的设施中,有三个静态的变量in、out、err,分别对应标准输入、标准输出和错误输出流;有对外部定义的属性和环境变量的访问的方法;加载文件和库的方法;还有快速复制数组的一部分的实用方法。因此,System.in、System.out、System.err实际上表示三个对象,这也就是为什么可以用System.out.println("Hello World!")的原因。
2.API预览
arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
clearProperty(String key) 移除指定键指示的系统属性。
currentTimeMillis() 返回以毫秒为单位的当前时间。
exit(int status) 终止当前正在运行的 Java 虚拟机。
gc() 运行垃圾回收器。
getenv() 返回一个不能修改的当前系统环境的字符串映射视图。
getenv(String name) 获得指定的环境变量值。
getProperties() 确定当前的系统属性。
getProperty(String key) 获得指定键指示的系统属性。
getProperty(String key, String def) 获得用指定键描述的系统属性。
getSecurityManager() 获得系统安全接口。
identityHashCode(Object x) 返回给定对象的哈希码,该代码与默认的方法
hashCode() 返回的代码一样,无论给定对象的类是否重写 hashCode()。
inheritedChannel() 返回从创建此 Java 虚拟机的实体中继承的信道。
load(String filename) 从作为动态库的本地文件系统中以指定的文件名加载代码文件。
loadLibrary(String libname) 加载由 libname 参数指定的系统库。
mapLibraryName(String libname) 将一个库名称映射到特定于平台的、表示本机库的字符串中。
nanoTime() 返回最准确的可用系统计时器的当前值,以毫微秒为单位。
runFinalization() 运行处于挂起终止状态的所有对象的终止方法。
runFinalizersOnExit(boolean value) 已过时。 该方法具有固有的不安全性。它可能对正在使用的对象调用终结方法,而其他线程同时正在操作这些对象,从而导致不正确的行为或死锁。
setErr(PrintStream err) 重新分配“标准”错误输出流。
setIn(InputStream in) 重新分配“标准”输入流。
setOut(PrintStream out) 重新分配“标准”输出流。
setProperties(Properties props) 将系统属性设置为 Properties 参数。
static String setProperty(String key, String value) 设置指定键指示的系统属性。
setSecurityManager(SecurityManager s) 设置系统安全性。
3.一些常见应用
1、使用currentTimeMillis()纪录程序执行的时间。
2、arraycopy()复制数组。
3、使用getProperties() 确定当前的系统属性。
4、getenv() 获取系统环境变量。
5、exit()终止当前正在运行的 Java 虚拟机。
6、gc()运行垃圾回收器。
二 、JAVA Runtime类
Runtime类封装了运行时的环境。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接,该类也不能被实例化。 一般不能实例化一个Runtime对象,它的大多数方法属性都是非静态的,但有一个静态的方法返回本类型的对象,该方法是static Runtime getRuntime()。这种设计模式称为单例模式,以保证该对象在内存中的唯一性。一旦得到了一个当前的Runtime对象的引用,就可以调用Runtime对象的方法去控制Java虚拟机的状态和行为。
当Applet和其他不被信任的代码调用任何Runtime方法时,常常会引起SecurityException异常。
1.概述
Runtime类封装了运行时的环境。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。 一般不能实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类实例,但可以通过 getRuntime 方法获取当前Runtime运行时对象的引用。一旦得到了一个当前的Runtime对象的引用,就可以调用Runtime对象的方法去控制Java虚拟机的状态和行为。
2.API预览
addShutdownHook(Thread hook) 注册新的虚拟机来关闭挂钩。
availableProcessors() 向 Java 虚拟机返回可用处理器的数目。
exec(String command) 在单独的进程中执行指定的字符串命令。
exec(String[] cmdarray) 在单独的进程中执行指定命令和变量。
exec(String[] cmdarray, String[] envp) 在指定环境的独立进程中执行指定命令和变量。
exec(String[] cmdarray, String[] envp, File dir) 在指定环境和工作目录的独立进程中执行指定的命令和变量。
exec(String command, String[] envp) 在指定环境的单独进程中执行指定的字符串命令。
exec(String command, String[] envp, File dir) 在有指定环境和工作目录的独立进程中执行指定的字符串命令。
exit(int status) 通过启动虚拟机的关闭序列,终止当前正在运行的 Java 虚拟机。
freeMemory() 返回 Java 虚拟机中的空闲内存量。
gc() 运行垃圾回收器。
InputStream getLocalizedInputStream(InputStream in) 已过时。 从 JDK 1.1 开始,将本地编码字节流转换为 Unicode 字符流的首选方法是使用 InputStreamReader 和 BufferedReader 类。
OutputStream getLocalizedOutputStream(OutputStream out) 已过时。 从 JDK 1.1 开始,将 Unicode 字符流转换为本地编码字节流的首选方法是使用 OutputStreamWriter、BufferedWriter 和 PrintWriter 类。
getRuntime() 返回与当前 Java 应用程序相关的运行时对象。
halt(int status) 强行终止目前正在运行的 Java 虚拟机。
load(String filename) 加载作为动态库的指定文件名。
loadLibrary(String libname) 加载具有指定库名的动态库。
maxMemory() 返回 Java 虚拟机试图使用的最大内存量。
removeShutdownHook(Thread hook) 取消注册某个先前已注册的虚拟机关闭挂钩。
runFinalization() 运行挂起 finalization 的所有对象的终止方法。
runFinalizersOnExit(value) 已过时。 此方法本身具有不安全性。它可能对正在使用的对象调用终结方法,而其他线程正在操作这些对象,从而导致不正确的行为或死锁。
totalMemory() 返回 Java 虚拟机中的内存总量。
traceInstructions(on) 启用/禁用指令跟踪。
traceMethodCalls(on) 启用/禁用方法调用跟踪。
3.常见的应用
(1)、内存管理:
Java提供了无用单元自动收集机制。通过totalMemory()和freeMemory()方法可以知道对象的堆内存有多大,还剩多少。
Java会周期性的回收垃圾对象(未使用的对象),以便释放内存空间。
但是如果想先于收集器的下一次指定周期来收集废弃的对象,可以通过调用gc()方法来根据需要运行无用单元收集器。
一个很好的试验方法是先调用gc()方法,然后调用freeMemory()方法来查看基本的内存使用情况,接着执行代码,然后再次调用freeMemory()方法看看分配了多少内存。
下面的程序演示了这个构想。
class MemoryDemo{ public static void main(String args[]){ Runtime r = Runtime.getRuntime(); long mem1,mem2; Integer someints[] = new Integer[1000]; System.out.println("Total memory is :" + r.totalMemory()); mem1 = r.freeMemory(); System.out.println("Initial free is : " + mem1); r.gc(); mem1 = r.freeMemory(); System.out.println("Free memory after garbage collection : " + mem1);//allocate integers for(int i=0; i<1000; i++) someints[i] = new Integer(i); mem2 = r.freeMemory(); System.out.println("Free memory after allocation : " + mem2); System.out.println("Memory used by allocation : " +(mem1-mem2));//discard Intergers for(int i=0; i<1000; i++) someints[i] = null; r.gc(); //request garbage collection mem2 = r.freeMemory(); System.out.println("Free memory after collecting " + "discarded integers : " + mem2); } }
(2)、执行其他程序
在安全的环境中,可以在多任务操作系统中使用Java去执行其他特别大的进程(也就是程序)。ecec()方法有几种形式命名想要运行的程序和它的输入参数。ecec()方法返回一个Process对象,可以使用这个对象控制Java程序与新运行的进程进行交互。ecec()方法本质是依赖于环境。
三 、JAVA Date、DateFormat日期 Calender日历类
具体类(和抽象类相对)java.util.Date
抽象类java.text.DateFormat 和它的一个具体子类,ava.text.SimpleDateFormat
抽象类java.util.Calendar 和它的一个具体子类,java.util.GregorianCalendar
具体类可以被实例化, 但是抽象类却不能. 你首先必须实现抽象类的一个具体子类。
Date类:
Date类实际上只是一个包裹类, 它包含的是一个长整型数据, 表示的是从GMT(格林尼治标准时间)1970年, 1月1日00:00:00这一刻之前或者是之后经历的毫秒数。
Date类常用的两个构造函数:
Date()无参数的构造函数创建的对象可以获取本地当前时间。
Date(long time)使用一个从GMT(格林尼治标准时间)1970年, 1月1日00:00:00这一刻之前或者是之后经历的毫秒数创建一个Date对象。
Date示例:
Date date = new Date(); System.out.println(date.getTime()); //1228061164796 System.out.println(date.toString()); //Mon Dec 01 00:06:04 CST 2008 日期数据的定制格式:
(DateFormat类、SimpleDateFormat类) 为了定制日期数据的输出格式,我们可以使用DateFormat的子类SimpleDateFormat。
SimpleDateFormat有个常用构造方法: public SimpleDateFormat(String pattern) //pattern指定输出格式
pattern中可以有如下格式符:
y,yy:用2位数字表示的"年"替换。
yyyy:用4位数字表示的"年"替换。
M,MM:用2位数字表示的"月"替换。
MMM:用汉字表示的"月"替换。
d,dd:用2位数字表示的"日"替换。
H,HH:用2位数字表示的"时"替换。
m,mm:用2位数字表示的"分"替换。
s,ss:用2位数字表示的"秒"替换。
E:用"星期"替换 pattern中的普通ASCII字符,必须用单引号“'”字符括起来,
如: pattern="'time':yyyy-MM-dd";
用SimpleDateFormat对象调用如下方法可以定制某时间输出格式:
public String format(Date date)
Calendar类:
使用Date类可以创建日期/时间对象,使用DateFormat类,SimpleDateFormat类可以对Date对象进行格式化。
使用Calendar类可以设置和获取日期/时间数据的特定部分。
Calendar类是抽象类不能实例化对象,但是可以使用Calendar类的static方法getInstance(),可以初始化一个日历对象。
如:Calendar calendar = Calendar.getInstance();
然后可以使用该calendar对象可以调用方法,如:(当year取负数时表示公元前)
public final void set(int year, int month, int date)
public final void set(int year, int month, int date, int hourOfDay, int minute)
public final void set(int year, int month, int date, int hourOfDay, int minute, int second)
Calendar类对象调用如下方法可以获取有关年份,月份,小时,星期等信息,参数field的有效值由Calendar的静态常量指定
public int get(int field)
实例:
calendar.get(Calendar.MONTH); //返回一个整数,如果该整数是0表示一月,11表示12月 Calendar对象调用如下方法可以把时间表示为毫秒:
public long getTimeInMillis() Calendar使用实例:
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
String 年 = String.valueOf(calendar.get(YEAR)),
月 = String.valueOf(calendar.get(MONTH)+1),
日 = String.valueOf(calendar.get(DAY_OF_MONTH)),
星期 = String.valueOf(calendar.get(DAY_OF_WEEK)-1);
int hour = calendar.get(HOUR_OF_DAY),
minute = calendar.get(MINUTE),
second = calendar.get(SECOND);
System.out.println("现在的时间是:");
System.out.println(年+"年"+月+"月"+日+"日"+"星期"+星期);
System.out.println(hour+"时"+minute+"分"+second+"秒");
calendar.set(2004,7,8); //将日历翻到2004年8月8日,注意7表示八月
long time2004 = calendar.getTimeInMillis();
calendar.set(2008,7,8); //将日历翻到2008年8月8日
long time2008 = calendar.getTimeInMillis();
long 相隔天数 = (time2008-time2004)/(1000*60*60*24);
System.out.println("2008年8月8日和2004年8月8日相隔"+相隔天数+"天");
输出结果:
现在的时间是: 2008年12月1日星期1 14时41分45秒 2008年8月8日和2004年8月8日相隔1461天
四 JAVA Math类
常用值与函数:
Math.PI 记录的圆周率
Math.E 记录e的常量
Math中还有一些类似的常量,都是一些工程数学常用量。
Math.abs 求绝对值
Math.sin 正弦函数 Math.asin 反正弦函数
Math.cos 余弦函数 Math.acos 反余弦函数
Math.tan 正切函数 Math.atan 反正切函数 Math.atan2 商的反正切函数
Math.toDegrees 弧度转化为角度 Math.toRadians 角度转化为弧度
Math.ceil 得到不小于某数的最大整数
Math.floor 得到不大于某数的最大整数
Math.IEEEremainder 求余
Math.max 求两数中最大
Math.min 求两数中最小
Math.sqrt 求开方
Math.pow 求某数的任意次方, 抛出ArithmeticException处理溢出异常
Math.exp 求e的任意次方
Math.log10 以10为底的对数
Math.log 自然对数
Math.rint 求距离某数最近的整数(可能比某数大,也可能比它小)
Math.round 同上,返回int型或者long型(上一个函数返回double型)
Math.random 返回0,1之间的一个随机数
用法实例:
double s=Math.sqrt(7);
double x=Math.pow(2,3) //计算2的3次方
下面是一个生成0-99不重复的100个随机数的例子:
package com.ItHeima.WeekAct; import java.util.ArrayList; /**
* 生成0-99的100个随机数,要求不重复
* @author 支胜勇
*
*/
public class GenerateRandomDemo { /***
* 生成随机数
*/
public static void generateRandom(){ //定义一个用来存放随机数的泛型数组
ArrayList<String> randomArr=new ArrayList<String>(); while(randomArr.size()<100){//判断已生成的随机数是否已有100个,如果没有则继续生成 int intRandom=(int)(Math.random()*100);//生成100以内的一个随机数 if(randomArr.contains(intRandom+";")){//判断生成的随机数是否重复,如果重复,则继续下一次循环
continue;
}else{//如果不重复,随即数组中
randomArr.add(intRandom+";");
System.out.print(intRandom+";");
}
}
} public static void main(String args[]){ //调用生成随机数的方法
generateRandom();
} }
关于JAVA System常见类的一些总结的更多相关文章
- Java 中常见的 final 类
Java 中常见的 final 类 java.lang 包 public final class Boolean extends Object implements Serializable, Com ...
- Java 学习笔记(4)——java 常见类
上次提前说了java中的面向对象,主要是为了使用这些常见类做打算,毕竟Java中一切都是对象,要使用一些系统提供的功能必须得通过类对象调用方法.其实Java相比于C来说强大的另一个原因是Java中提供 ...
- JAVA中常见异常类
1. java.lang.nullpointerexception 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对 ...
- java开发中的常见类和对象-建议阅读时间3分钟
1.Dao 数据访问对象 此对象用于访问数据库.实现类一般用于用于操作数据库! 一般操作修改,添加,删除数据库操作的步骤很相似,就写了一个公共类DAO类 ,修改,添加,删除数据库操作时 直接调用公共类 ...
- 浅析Java.lang.ProcessBuilder类
最近由于工作需要把用户配置的Hive命令在Linux环境下执行,专门做了一个用户管理界面特地研究了这个不经常用得ProcessBuilder类.所以把自己的学习的资料总结一下. 一.概述 P ...
- 浅析Java.lang.Runtime类
一.概述 Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接. 一般不能实例化一个Runtime对象, ...
- Java基础常见英语词汇
Java基础常见英语词汇(共70个) ['ɔbdʒekt] ['ɔ:rientid]导向的 ['prəʊɡræmɪŋ]编程 OO: object ...
- 深入研究java.lang.Runtime类【转】
转自:http://blog.csdn.net/lastsweetop/article/details/3961911 目录(?)[-] javalang 类 Runtime getRuntime e ...
- Java的Properties类和读取.properties文件
一..properties文件的作用 Properties属性文件在JAVA应用程序中是经常可以看得见的,也是特别重要的一类文件.它用来配置应用程序的一些信息,不过这些信息一般都是比较少的数据,没有必 ...
随机推荐
- jeewx的使用_02 解析微信服务器post过来的数据
如果在微信公众号接入了第三方的URL,那么用户微信服务器的请求将会被推送到第三方的URL上面,那么该如何解析数据呢?下面来分析 找到MessageUtil.java 这个类中有一个parseXml的静 ...
- java 分页
ListAction.java package com.sy.action; import java.util.List; import com.opensymphony.xwork2.ActionS ...
- hibernateTemplate HibernateDaoSupport不建议在Spring与Hibernate整合中使用
HibernateTemplate类属于spring框架中的类 :org.springframework.orm.hibernate3.HibernateTemplate HibernateTempl ...
- 使用Github遇到的问题及解决办法
问题一: 当push代码上去仓库时,出现 ! [rejected] master -> master (fetch first) error: failed to push som ...
- JHipster的安装
JHipster GitHub地址:https://jhipster.github.io/ 刚开始接触JHipster,理解还不深,此次随笔只是把自己对JHipster的所学记录一下,也算是一种知识的 ...
- oracle安装界面中文乱码解决
在安装oracle时如果我们用的是英文安装没有任何问题,但是我要安装中文的,结果中文界面就出现了乱码了,后来网上找了原因是要安装中文包才可以,下面我来介绍一下. 在Linux的X window里安装o ...
- 【Android应用开发】 OpenGL ES -- 透视投影 和 正交投影
博客地址 : http://blog.csdn.net/shulianghan/article/details/46680803 源代码下载 : http://download.csdn.net/de ...
- Codeforces Round #172 (Div. 2) C. Rectangle Puzzle 数学题几何
C. Rectangle Puzzle Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/281/p ...
- c# 路径空格---ProcessStartInfo参数问题
今天在整合程序的时候,要从一个程序转到另一个程序 当然要使用: ProcessStartInfo startInfo = new ProcessStartInfo("\\Program ...
- openstack 创建虚拟机
http://blog.csdn.net/tantexian/article/details/44595885#comments