zoukankan      html  css  js  c++  java
  • Java基础——6种常用类讲解

    本文主要介绍几种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 FilesJavajdk1.7.0_75jrein
    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 FilesJavajdk1.7.0_75jrelibendorsed
    os.arch:x86
    java.io.tmpdir:C:Userswin7AppDataLocalTemp
    line.separator:
    
    java.vm.specification.vendor:Oracle Corporation
    user.variant:
    os.name:Windows 7
    sun.jnu.encoding:GBK
    java.library.path:C:Program FilesJavajdk1.7.0_75in;C:WindowsSunJavain;C:Windowssystem32;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 FilesJavajdk1.7.0_75in;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:Program FilesIntelOpenCL SDK2.0inx86;C:Program FilesNVIDIA CorporationPhysXCommon;C:Program FilesIDM Computer SolutionsUltraEdit;E:eclipse;;.
    java.specification.name:Java Platform API Specification
    java.class.version:51.0
    sun.management.compiler:HotSpot Client Compiler
    os.version:6.1
    user.home:C:Userswin7
    user.timezone:
    java.awt.printerjob:sun.awt.windows.WPrinterJob
    file.encoding:GBK
    java.specification.version:1.7
    java.class.path:E:ClassCin
    user.name:win7
    java.vm.specification.version:1.7
    sun.java.command:Test1
    java.home:C:Program FilesJavajdk1.7.0_75jre
    sun.arch.data.model:32
    user.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 FilesJavajdk1.7.0_75jrelibext;C:WindowsSunJavalibext
    sun.boot.class.path:C:Program FilesJavajdk1.7.0_75jrelib
    esources.jar;C:Program FilesJavajdk1.7.0_75jrelib
    t.jar;C:Program FilesJavajdk1.7.0_75jrelibsunrsasign.jar;C:Program FilesJavajdk1.7.0_75jrelibjsse.jar;C:Program FilesJavajdk1.7.0_75jrelibjce.jar;C:Program FilesJavajdk1.7.0_75jrelibcharsets.jar;C:Program FilesJavajdk1.7.0_75jrelibjfr.jar;C:Program FilesJavajdk1.7.0_75jreclasses
    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换行2
    
            o.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)+"	"); 打算让它横着打印,并且还要好看,需要空格
    
                // 需求升级,生成90到100之间的数
                // System.out.println(o.nextInt(10)+90);
                System.out.print(o.nextInt(10) + 90 + "	");// 好看,横着打印,有空格
            }
        }
    }

    例二:

    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 + "	");
    
            }
        }
    }

    结果:

  • 相关阅读:
    vue关闭eslint
    ThinkPHP 5 项目执行慢问题排查
    Git 操作教程
    转】解决存储过程执行快,但C#程序调用执行慢的问题
    Centos8.0 安装Mongodb 命令步骤
    $TeX$ Gyre 字体安装过程与问题解决
    tomcat部署项目
    登录嵌套
    Django基础之
    win 常用命令
  • 原文地址:https://www.cnblogs.com/1693977889zz/p/7110035.html
Copyright © 2011-2022 走看看