本文介绍了几种java中常用类的应用,文章喜欢的小伙伴们可以在下方留言,我会一一回复大家的。
一、system类
从api当中我们可以看出,public final class system exends object。system类包含一些有用的字段和方法。这些字段和类都被static修饰了,说明他们都不能被实例化。
在system类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的使用方法。
字段摘要
static printstream err ”标准“输入错误流
static inputstream in ”标准“输入流
static printstream out ”标准“输出流
这里仅介绍几个常用的:
--static long currenttimemillis()
// 返回以毫秒为单位的当前时间。 1970 年 1 月 1 --arraycopy(object src, int srcpos, object dest, int destpos, int length)
--exit(int status)//终止当前正在运行的 java 虚拟机,非 0 的状态码表示异常终止。--gc(); //唤起垃圾回收器--static map<string,string> getenv()
代码实例:
public class test6 {public static void main(string[] args) {long starttime = system.currenttimemillis();// 取得计算开始时的时间@suppresswarnings(unused)int sum = 0;// 声明变量并初始化for (int i = 0; i < 1000000000; i++) { // 进行累加sum+=i;
}long endtime = system.currenttimemillis();// 取得计算结束时间// 计算所花费的时间system.out.println("累加所花费的时间" + (endtime - starttime) + "毫秒");
}
}
除此之外还有很多有用的方法,应用代码如下:
import java.util.properties;import java.util.set;public class test1 {public static void main(string[] args) {
properties p = system.getproperties();//列出系统全部属性set<object> set = p.keyset();for (object key : set) { //利用增强for遍历system.out.println(key + : + p.get(key));
}
system.out.println(=====分割线1=====);
string p2 = system.getproperty(os.name);//查找 system.out.println(p2);
system.out.println(=====分割线2=====);
system.setproperty(mykey, zhouzhou的系统);//自定义系统名称属性system.out.println(mykey);
}
}
打印结果:
java.runtime.name:java(tm) se runtime environment
sun.boot.library.path:c:\program files\java\jdk1.7.0_75\jre\bin
java.vm.version:24.75-b04
java.vm.vendor:oracle corporation
java.vendor.url:http://java.oracle.com/path.separator:;
java.vm.name:java hotspot(tm) client vm
file.encoding.pkg:sun.io
user.country:cn
user.script:
sun.java.launcher:sun_standard
sun.os.patch.level:
java.vm.specification.name:java virtual machine specification
user.dir:e:\classc
java.runtime.version:1.7.0_75-b13
java.awt.graphicsenv:sun.awt.win32graphicsenvironment
java.endorsed.dirs:c:\program files\java\jdk1.7.0_75\jre\lib\endorsed
os.arch:x86
java.io.tmpdir:c:\users\win7\appdata\local\temp\
line.separator:
java.vm.specification.vendor:oracle corporation
user.variant:
os.name:windows 7sun.jnu.encoding:gbk
java.library.path:c:\program files\java\jdk1.7.0_75\bin;c:\windows\sun\java\bin;c:\windows\system32;c:\windows;c:/program files/java/jdk1.7.0_75/bin/../jre/bin/client;c:/program files/java/jdk1.7.0_75/bin/../jre/bin;c:/program files/java/jdk1.7.0_75/bin/../jre/lib/i386;c:\program files\java\jdk1.7.0_75\bin;c:\windows\system32;c:\windows;c:\windows\system32\wbem;c:\windows\system32\windowspowershell\v1.0\;c:\program files\intel\opencl sdk\2.0\bin\x86;c:\program files\nvidia corporation\physx\common;c:\program files\idm computer solutions\ultraedit\;e:\eclipse;;.
java.specification.name:java platform api specification
java.class.version:51.0sun.management.compiler:hotspot client compiler
os.version:6.1user.home:c:\users\win7
user.timezone:
java.awt.printerjob:sun.awt.windows.wprinterjob
file.encoding:gbk
java.specification.version:1.7java.class.path:e:\classc\bin
user.name:win7
java.vm.specification.version:1.7sun.java.command:test1
java.home:c:\program files\java\jdk1.7.0_75\jre
sun.arch.data.model:32user.language:zh
java.specification.vendor:oracle corporation
awt.toolkit:sun.awt.windows.wtoolkit
java.vm.info:mixed mode, sharing
java.version:1.7.0_75
java.ext.dirs:c:\program files\java\jdk1.7.0_75\jre\lib\ext;c:\windows\sun\java\lib\ext
sun.boot.class.path:c:\program files\java\jdk1.7.0_75\jre\lib\resources.jar;c:\program files\java\jdk1.7.0_75\jre\lib\rt.jar;c:\program files\java\jdk1.7.0_75\jre\lib\sunrsasign.jar;c:\program files\java\jdk1.7.0_75\jre\lib\jsse.jar;c:\program files\java\jdk1.7.0_75\jre\lib\jce.jar;c:\program files\java\jdk1.7.0_75\jre\lib\charsets.jar;c:\program files\java\jdk1.7.0_75\jre\lib\jfr.jar;c:\program files\java\jdk1.7.0_75\jre\classes
java.vendor:oracle corporation
file.separator:\
java.vendor.url.bug:http://bugreport.sun.com/bugreport/sun.io.unicode.encoding:unicodelittle
sun.cpu.endian:little
sun.desktop:windows
sun.cpu.isalist:pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86=====分割线1=====windows 7
=====分割线2=====mykey
可以看出,system类本身提供的静态属性都是与io操作有关。比如,gc();
代码实例:
public class test7 {private string name;private int age;public test7(string name, int age) {this.age = age;this.name = name;
}public string tostring() {return 姓名: + this.name + 年龄: + this.age;
}public void finalize() throws throwable { // 释放空间system.out.println(对象被释放== + this);
}
}
测试类及结果:
二、runtime类
每个java应用程序都有一个runtime类的实例,使应用程序能够与其运行环境相连接。不能new,可以通过getruntime方法获取当前运行时。应用程序不能自己创建自己的runtime类实例。
可以说,runtime 封装了java虚拟机进程。
代码演示:
import java.io.ioexception;public class test8 {public static void main(string[] args) throws ioexception,
interruptedexception {// runtime r=new runtime();计划这样得到本类实例是错误的runtime r = runtime.getruntime();// 要这样得到本类实例/* * process的栗子process p = r.exec(notepad.exe c:/add.java);//
* process代表一个被虚拟机启动的进程p.destroy(); */r.exec(calc);// 打开计算器,没有p.destroy();r.exec(mspaint);// 打开画板,没有p.destroy();thread.sleep(5000);// 程序暂停执行5秒 }
}
三、date类和simpledateformat
data类,位于java.util 包下(不同于java.sql.date,有时当你按快捷键输入导包时会遇到这个选项)
data类中有好多方法被废弃了。simpledateformat是java.text包下的。
代码应用例子:
import java.text.simpledateformat;import java.util.date;public class test2 {public static void main(string[] args) {
date d = new date();// 得到当前日期所对应的date对象simpledateformat o = new simpledateformat(yyyy-mm-dd e hh:mm:ss);// 上面括号里的“-”,你可以换成你想要的,比如yyyy/mm/dd e hh:mm:ss。这些日期输出也可以删除//还有很多好玩的方法,去看jdk哈~~string str = o.format(d);
system.out.println(str);// 2017-07-02 星期日 07:04:06 }
}
附加:
//例子date d=new date(); //以当前时间构造 date 对象system.out.println(d);
//例子, date中有一些方法废弃了,不要用new date(1999,2,28); //废弃new date(1990); //废弃//使用 simpledateformat 进行日期格式化public static void main(string[] args) throws ioexception, interruptedexception {
date d=new date(); //以当前时间构造 date 对象system.out.println(d);
//simpledateformat df=new simpledateformat(yyyy/mm/dd hh:mm:ss);
//构造了一个simpledateformat对象//simpledateformat df=new simpledateformat(hh:mm:ss); //simpledateformat df=new simpledateformat(yyyy); //simpledateformat df=new simpledateformat(yyyy/mm/dd e hh:mm:ss);simpledateformat df=new simpledateformat(yyyy年mm月dd日 e hh:mm:ss);
string str= df.format(d); //用format方法格式化一个日期,得到一个string类型system.out.println(str);
}
重点介绍,如何把字符串转换成日期
import java.text.parseexception;import java.text.simpledateformat;import java.util.date;public class test9 {public static void main(string[]args) throws parseexception{
test2();
}static void test2() throws parseexception {
string str = 2017-7-7;
simpledateformat o = new simpledateformat(yyyy-mm-dd);
date d = o.parse(str);//接收一个string类型,转成一个date类型system.out.println(d);//fri jul 07 00:00:00 cst 2017 }
}
四、calendar类
calendar类本身是一个抽象的基类。与其他语言环境敏感类一样,calendar提供了一个类方法 getinstance,以获得此类型的一个通用的对象。calendar的getinstance方法返回一个calendar对象,其日历字段已由当前日期和时间初始化。
calendar c=calendar.getinstance(); //这这样得到它的实例对象-- void set(int field, int value)
-- set(int year, int month, int date)
-- void set(int year, int month, int date, int hourofday, int minute)
代码例子:
import java.util.calendar;public class test3 {public static void main(string[] args) {
calendardemo();// 经常忘记调用 }static void calendardemo() {
calendar o = calendar.getinstance();// 计算距当前日期250天之后的日期// o.add(calendar.day_of_year, 250);/* * 也可以自己設置時間, 下面这个打印结果是2015换行0换行2o.set(2015, 0, 12);// 注意0月指的是1月 */// o.set(calendar.day_of_year,2);//打印:2017换行0换行2o.set(2015, 1, 10000);// 打印:2042換行5換行169 (可以帮你向前推)。// 比如,當你不知道2月的天数的时候,只知道日子的累加,你就不用再去计算了。system.out.println(o.get(calendar.year));
system.out.println(o.get(calendar.month));
system.out.println(o.get(calendar.day_of_year));
}
}
打印结果:
五、math类
math类是我至今接触到的类当中,觉得最好玩的一个类。虽然有些数学计算上的应用暂时用不上,但是听说如果开发游戏会用上他们。突然觉得蛮有趣。
math类包含用于执行基本数学运算的方法,比如指数、对数、平方根、三角函数等。
--pi //常量--e //常量--random() //生成一个double型的随机数 大于等于 0.0 且小于 1.0--abs(基本数据类型) //求绝对值
代码示例:
public class test4 {public static void main(string[] args) {// 此方法输出0-1之间的随机小数,伪随机数,用的时候可以忽略不计。不包含0和1.// double o=math.random();// system.out.println(o);// double o=math.random()*10;//第一次计划把double型默认输出格式x.0.想把.0去掉,没成功system.out.println((float)(math.floor(math.random() * 10))); //第二次计划把double型默认输出格式x.0.想把.0去掉,成功system.out.println((int)(math.floor(math.random() * 10)));
system.out.println(math.ceil(88.99));// 89.0 返回大于指定数的最小整数system.out.println(math.ceil(88.39));// 89.0 接上,没有四舍五入system.out.println((int)(math.ceil(88.39)));// 去掉.0
system.out.println(math.floor(9.65));// 9.0 返回小于指定数的最大整数system.out.println(math.floor(9.25));// 9.0 接上,没有四舍五入system.out.println((int)(math.floor(9.25)));// 去掉.0
system.out.println(math.round(9988.01));// 9988 四舍五入}
}
呃,上面是我看着api兴奋的折腾一会儿,后来发现有一些方法,可以直接实现我上面的操作,用nextint();,下面介绍random类时会应用到。
六、random类
public class random extands object implements serializable。random类的实例用于生成随机数流。后面的api介绍,有些难理解:
代码应用例子:
例一:
import java.util.random;//用java.util.random类返回20个指定范围(1-10)内的随机整数//用这个类要构造random对象//random r=new random(system.currenttimemillis());设置此随机数生成器的样子public class test5 {public static void main(string[] args) {
random o = new random();for (int i = 0; i < 20; i++) {// system.out.println(o.nextint(10)); 竖着打印随// system.out.print(o.nextint(10)+"\t"); 打算让它横着打印,并且还要好看,需要空格// 需求升级,生成90到100之间的数// system.out.println(o.nextint(10)+90);system.out.print(o.nextint(10) + 90 + "\t");// 好看,横着打印,有空格 }
}
}
例二:
import java.util.hashset;import java.util.random;import java.util.set;//从100到题中随机抽取90道public class test10 {public static void main(string[] args) {
set<integer> list = demo();
system.out.println(list.size() + =====);for (integer i : list) {
system.out.println(i);
}
}static set<integer> demo() {
set<integer> set = new hashset<integer>();while (set.size() < 90) {
set.add(new random().nextint(100));
}return set;
}
}
例三:
import java.util.arraylist;//import java.util.collection;import java.util.collections;import java.util.list;//随机生成1-100之间的100个数,排序无序public class test11 {public static void main(string[] args) {
list<integer> list = new arraylist<integer>();for (int i = 0; i < 100; i++) {
list.add(i);
}
collections.shuffle(list);// 之前collections没有写s,导包也导错了for (integer i : list) {
system.out.print(i + \t);
}
}
}
结果:
以上就是java中常用类的应用的详细内容。
