この記事では、Java のいくつかの一般的なクラスのアプリケーションを紹介します。この記事を気に入ってくださったお友達は、以下にメッセージを残していただければ、順次返信させていただきます。
1. システム クラス
API から、パブリック最終クラス System が Object を拡張していることがわかります。システム クラスには、いくつかの便利なフィールドとメソッドが含まれています。これらのフィールドとクラスはすべて静的に変更されており、インスタンス化できないことを示しています。
System クラスによって提供される機能には、標準入力、標準出力、およびエラー出力ストリーム、外部定義されたプロパティおよび環境変数へのアクセス、および配列の一部を迅速にコピーするためのメソッドがあります。
フィールドの概要 | |
static PrintStream | err "Standard" 入力エラー Stream |
静的InputStream | in 「標準」入力ストリーム |
静的 「標準」出力ストリーム | 这里仅介绍几个常用的: --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 での共通クラスのアプリケーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。