• Java常用类


      一.Scanner获取键盘输入

        1.主要方法有:(1)hasNextXxx(); 是否还有下一个输入项

                (2)nextXxx(); 获取下一个输入项

               (3)还可以文件输入,这里省略;

          例子:

    import java.util.Scanner;
    
    /**
     * 
     * @author fengkuirui
     * @date 2017-02-08
     * Scanner获取键盘输入;
     */
    public class ScannerKeyBoardTest {
        public static void main(String[] args) {
            //System.in代表标准输入,也就是键盘输入;
            Scanner cin = new Scanner(System.in);
            //默认空格 	 
    为分隔符
            
            cin.useDelimiter("
    ");//设置
    为输入分隔符
            while(cin.hasNext()){//判断是否还有下一个项
                //输出输入项
                System.out.println(cin.next());
                
            }
            
        }
        
    }

        2.所有方法一览表

          

      二、System的相关用法

        System类代表当前Java程序的与运行平台,程序无法创建System的对象,System类提供了一下类方法和类变量,允许直接使用。

        1.获取系统的环境变量

          

    import java.util.Map;
    
    /**
     * 
     * @author fengkuirui
     * @date 2017-02-08
     * 获取系统变量
     */
    public class SystemTest {
        public static void main(String[] args) {
            //获取系统的环境变量;
            Map<String,String> env = System.getenv();
            for(String name:env.keySet()){//遍历集合
                System.out.println(name+" ----> "+env.get(name));
            }
        }
    }

     测试结果如下:  

      

      2.区别相同的Hashode码而不同的对象;

        

    /**
     * 
     * @author fengkuirui
     * @date 2017-02-07
     * 区别于HashCode,
     */
    public class IdentityHashCode {
        public static void main(String[] args) {
            String s1 = new String("Java");
            String s2 = new String("Java");
            System.out.println(s1.hashCode());
            System.out.println(s2.hashCode());
            System.out.println(System.identityHashCode(s1));
            System.out.println(System.identityHashCode(s2));
        }
    }

      三、Runtime类

        Runtime类代表Java程序的运行环境,每个程序都有一个与之对象的Runtime实例,应用程序不能自己创建Runtime实例,只能依靠getRuntime()方法获取;

        1.Runtime获取JVM的相关信息

        

    /**
     * 
     * @author fengkuirui
     * @date 2017-02-07
     * Runtime测试
     */
    public class RuntimeTest {
        public static void main(String[] args) {
            Runtime rt = Runtime.getRuntime();
            System.out.println("处理器数量"+rt.availableProcessors());
            System.out.println("空闲内存"+rt.freeMemory());
            System.out.println("总内存"+rt.totalMemory());
            System.out.println("最大可用内存"+rt.maxMemory());
            
        }
    }

        2.Runtime单独启动一个进程来运行操作系统的命令

          

    /**
     * 
     * @author fengkuirui
     * @date 2017-02-07
     * 单独启动一个进程来运行操作系统后对明令
     * 
     */
    public class ExecTest {
        public static void main(String[] args) throws Exception  {
            Runtime rt = Runtime.getRuntime();
            rt.exec("notepad.exe");//命令行启动记事本
        }
        
    }

      四、常用类

        1.Object类

          Object类是所有类的父亲,也就是java允许把任何类型的对象赋值给Object类
             所提供的的常用方法:     
                   boolean equals(Object obj) 判断两个对象的值是否相等
                   Class<?> getClas() 返回运行时类
                   int hashCode() 返回该对象的hashCode值
                   String toString() 返回给对象的字符串表示
                   Object clone() 自我copy机制十分高效,
                        系统默认拷贝比静态copy速度快到两倍
                   浅克隆--只克隆该对象的所有成员变量,不会对引用类型的成员变量值所引用的对象进行克隆
                   深克隆--则全部拷贝
         简单应用:
          
    /**
     * 
     * @author fengkuirui
     * @date 2017-02-08
     * 实现自我克隆
     */
    
    
    class Address{
        String detail;
        public Address(String detail){
            this.detail = detail;
        }
    }
    //实现Clone接口
    class User implements Cloneable{
        int age;
        Address address;
        public User(int age){
            this.age = age;
            address = new Address("china");
        }
        //super.clone()来实现clone()
        public User clone()throws CloneNotSupportedException{
         return (User)super.clone();
        }
    }
    public class CloneTest {
        public static void main(String[] args)throws CloneNotSupportedException {
            User u1 = new User(29);
            //通过clone得到u2
            User u2 = u1.clone();
            //判断u1和u2是否相同
            System.out.println(u1 == u2);
            //判断u1,u2的address是否相同
            System.out.println(u1.address == u2.address);
        }
    }

      结果如下:

        

           2.Objects(java 7 新增)
                 允许出现null,一个空的对象的hashCode值为0,toString为null而不是抛出异常,减少了空指针的异常抛出
            样例:
            
    import java.util.Objects;
    
    /**
     * 
     * @author fengkuirui
     * @date 2017-02-08
     * Objects简单测试
     */
    public class ObjectsTest {
        //定义一个obj,默认值为null;
        static ObjectsTest obj;
        public static void main(String[] args) {
            //输出obj的hashCode
            System.out.println(Objects.hashCode(obj));
            //输出obj的toString();
            System.out.println(Objects.toString(obj));
            
        }
    }

         结果如下:

          

        3.String,StringBuffer,StringBuilder类

          String类为不可变的字符序列,每次改变时,本身并不改变,而是重新创建堆,这样就会浪费大量内存,造成较大开销;

          StringBuffer类和StringBuilder类本质上是类似的,知识StringBuffer是线程安全的,而StringBuilder类没有实现线程安全机制,则不安全,但是其性能较高。

          具体的方法将不一一叙述。

        4.Math类

          Math提供基本的数学运算方法。

        5.ThreadLocalRandom和Random类

          Random类专门用于产生一个伪随机数。ThreadLocalRandom是Random的增强版,在并发访问的环境下,使用前者代替后者可以减少资源竞争,保证系统具有良好的线程安全选性。

        6.BigDecimal类

          前边所提到的float,double两种基本的浮点类型已经指出,在运算时很容易引起精度丢失:

            样例:

            

    /**
     * 
     * @author fengkuirui
     * @date 2017-02-08
     * 精度丢失
     */
    public class DoubleTest {
        public static void main(String[] args) {
            System.out.println("0.05 + 0.01 = "+(0.05+0.01));
            System.out.println("1.0 - 0.42 = "+(1.0-0.42));
            System.out.println("4.015 * 100 = "+(4.015*100));
            System.out.println("123.3 / 100 = "+(123.3/100));
            
        }
    }

        

        针对上面的问题,Java提供了BigDecimal类,该类提供大量构造器用于创建BigDecimal对象,就能解决这个精度丢失的问题;

        样例:

        

    /**
     * @author fengkuirui
     * @date 2017-02-08
     *    解决精度丢失问题 
     **/
    import java.math.BigDecimal;
    
    public class BigDecimalTest {
        public static void main(String[] args) {
            BigDecimal f1 = new BigDecimal("0.05");
            BigDecimal f2 = BigDecimal.valueOf(0.01);
            BigDecimal f3 = new BigDecimal(0.05);
            System.out.println("使用String作为构造器参数");
            System.out.println("0.05 + 0.01 = "+f1.add(f2));
            System.out.println("0.05 - 0.01 = "+f1.subtract(f2));
            System.out.println("使用double作为构造器的参数");
            System.out.println("0.05 + 0.01 = "+f3.add(f2));
            System.out.println("0.05 - 0.01 = "+f3.subtract(f2));
        }
    }

      结果如下:

        

        7.日期类

          (1)Date类,其大部分的构造器和方法都已近过时了,所以就详细学习了;

          (2)Calendar类

              Calendaer类在Date的基础上,更好的处理处理时间,该类是个抽象类,不能用构造器来创建对象,但是其有几个静态的getInstance()方法来获取Calendar对象。

        样例如下:

          

    import java.util.Calendar;
    import java.util.Date;
    
    /**
     * 
     * @author fengkuirui
     * @date 2017-02-08
     * 
     */
    public class CalendarTest {
        public static void main(String[] args) {
            //创建一个calendar默认对象
            Calendar cal = Calendar.getInstance();
            //从中获取Date对象
            Date date = cal.getTime();
            //通过Date获取Calendar对象
            //必须先获得Calendar的一个实例
            Calendar cal2 = Calendar.getInstance();
            cal2.setTime(date);
        }
    }

     Calendar的常用方法:

        void add(int field, int amount);

        int get(int field);

        void roll(int field, int amount);

     (3)DateTimeFormatter类完成格式化

        

       

  • 相关阅读:
    git(重点)
    C#技巧记录——持续更新
    结点和节点的区别
    WebSocketSharp send record_stop without send record_start
    cefsharp 拦截所有请求 解决chunked导致数据接收不完整的问题
    计算mp3长度 毫秒
    pydub分割音频文件
    c# 获取文件信息
    实现一边写代码一边展示网页的效果
    c# webapi swagger Area 多级层次分组 添加header参数
  • 原文地址:https://www.cnblogs.com/fkrcode/p/6377320.html
Copyright © 2020-2023  润新知