zoukankan      html  css  js  c++  java
  • java常用类_v2

    1:Scanner类

    主要作用:

      获取输入,Scanner是一个基于正则的文本扫描器;

      Scanner有多个构造方法,用于实现从输入流、文件、字符串中解析数据;

      Scanner是1.5有了的,1.5之前使用的是BufferedReader

    主要方法:

      hasNext():是否还有下一项输入;

      hasNextXxx():是否有下一个输入项(Xxx->int,long等基本类型的String形式);

      nextXxx():获取下一个Xxx类型的数据;

      /**默认情况下每一项输入按照空格、tab、回车分割;

    demo_1:键盘数据源

     1 package scanner;
     2 import java.util.Scanner;
     3 public class demo_1 {
     4     public static void main(String[] args) {
     5         Scanner sc = new Scanner(System.in);    //指定数据源为:键盘输入
     6         sc.useDelimiter("
    ");      //指定(Delimiter-定界符)为:回车
     7         while(sc.hasNext()){  
     8             String inStr = sc.next();
     9             System.out.println("inStr");
    10         }
    11     }
    12 }

    demo_2:文件数据源

     1 package scanner;
     2 import java.io.File;
     3 import java.io.FileNotFoundException;
     4 import java.util.Scanner;
     5 public class demo_2 {
     6     public static void main(String[] args) throws FileNotFoundException {
     7         Scanner sc = new Scanner(new File("a.txt"));    //指定数据源:文件
     8         while(sc.hasNextLine()){    //是否有下一行
     9             String inStr = sc.nextLine();    //获取下一行
    10             System.out.println("inStr");
    11         }
    12     }
    13 }

    System类:

      作用:

        java 是跨品台语言,在程序中可以使用System类和Runtime类和特定的平台交互;

        System类代表当前运行的平台,System提供了不少类属性和类方法。

        System类提供了:标准输入、标准输出、错误输出的类属性,提供了用于获取系统属性的类方法,提供了加载文件和动态链接库的方法;

                 垃圾回收方法gc()系统当前时间currentTimeMillis()和nanoTime();

                 获取某个对象的精确哈希值identityHashCode(Object x),这个哈希值是按照类的地址计算出来的。(hashCode()方法可以重写但是这个方法不能)

    demo_1:

    package scanner;
    
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Map;
    import java.util.Properties;
    
    public class demo_1 {
        public static void main(String[] args) throws FileNotFoundException, IOException{
            Map<String,String> env = System.getenv();    //获取系统所有的环境变量
            for(String name : env.keySet()){
                System.out.println(name+"->"+env.get(name));
            }
            System.out.println("JAVA_HOME="+System.getenv("JAVA_HOME"));    //获取指定环境变量
            Properties propts = System.getProperties();    //获取所有的系统属性
            propts.store(new FileOutputStream("propts.txt"),"System properties");    //将系统属性输出到文件中
            System.out.println(System.getProperty("os.name"));    //获取指定系统属性
        }
    }

     demo_2:

    package scanner;
    
    public class demo_1 {
        public static void main(String[] args){
            //String类自定义了hashCode方法为:根据字符序列计算hashCode;(字符串相同hashCode就是相同)
            String s1 = new String("hello");
            String s2 = new String("hello");
            boolean b1 = s1.hashCode() == s2.hashCode();  //返回true
            boolean b2 = System.identityHashCode(s1) != System.identityHashCode(s2);  //放回true
        }
    }

    Runtime类

    Runtime类表示java程序运行吃的环境,每一个java程序都有一个与之对应的Runtime实例通过getRuntime()方法获得;
    作用:
      1: 获取jvm信息:处理器数量、内存信息等。也提供了垃圾回收、清理系统资源、加载动态链接库。
      2: 单独启动一条进程来运行操作系统的命令。

    demo_1:

     1 package demo;
     2 import java.io.IOException;
     3 public class Demo {
     4     public static void main(String[] args) throws IOException{
     5         Runtime runtime = Runtime.getRuntime();
     6         System.out.println("处理器数量:"+runtime.availableProcessors());
     7         System.out.println("空闲内存:"+runtime.freeMemory());
     8         System.out.println("总内存:"+runtime.totalMemory());
     9         System.out.println("最大可用内存:"+runtime.maxMemory());
    10         //启动一个线程来执行操作系统命令
    11         runtime.exec("notepad.exe");
    12     }
    13 }

    BigDecimal类:
      java中的long,double类会引起精度的丢失,BigDecimal类解决了这个问题。(其他语言也会出现精度丢失的问题)

      例如:0.05 + 0.01 = 0.060000000000000005

      BigDecimal类有大量的构造器来方便构造各种类型的大小数。

      包括:将各种数字类型->BigDecimal。String类型的数字->BigDecimal

      new BigDecimal(Doublce dou)会造成精度流失,推荐使用new BigDecimal(String num)来构造。

      如果非要用double可以使用BigDecimal.valueOf(Double dou)方法。

     1 package demo;
     2 import java.math.BigDecimal;
     3 public class Demo {
     4     public void mian(String[] args){
     5         //String构造
     6         BigDecimal b1 = new BigDecimal("0.05");
     7         BigDecimal b2 = new BigDecimal("0.01");
     8         //加,减,乘,除
     9         b1.add(b2);         //0.06
    10         b1.subtract(b2);    //.0.4
    11         b1.multiply(b2);    //0.0005
    12         b1.divide(b2);      //5
    13         //使用double构造
    14         BigDecimal b3 = BigDecimal.valueOf(0.05);
    15         BigDecimal b4 = BigDecimal.valueOf(0.01);
    16         //加,减,乘,除
    17         b3.add(b4);         //0.06000000000.......
    18         b3.subtract(b4);
    19         b3.multiply(b4);
    20         b3.divide(b4);
    21         //*****以后还是用 new BigDecimal(String str) 吧
    22         //#####上面运算结果都是BigDecimao类型的。(double->BigDecimal->double)
    23         //double->BigDeciaml  new BigDecimal(""+double);
    24         //BigDecimal->double  bigDecimal.doubleValue();
    25     }
    26 }

    Date类:
      Date类的历史悠久,很多方法过时了,不推荐使用。
      剩下的几个有用的方法如下:
      构造方法:
        Date():生成当前时间对应的Date对象。底层调用了System.currentTimeMillis()方法获取的时间long值
        Date(Long date):根据时间long值生成Date对象。
      普通方法:
        Boolean after(Date date)该日期是否在指定日期之后
        Boolean before(Date date)改日期是否在指定日期之前
        int compareTo(Date date)比较两个日期的大小。返回-1,1
        long getTime():返回对应时间的Long值,1970.1.1到现在的毫秒值
        void setTime(long time):设置Date对象的时间

    Calendar类:
    Calendar类是一个抽象类,表示日历,提供了日历相关的公用方法。其子类实现了各种日历(GregorianCalendar类就是我们说的公历,网上也有农历的实现)
    getInstance方法:
      Calendar抽象类提供了几个getInstance方法,会根据TimeZone,Locale构造Calendar,不指定时按照默认的。
      Calendar类和Date类都是日期类型的工具类,他们可以自由的互相转换:
      //Calendar -> Date
        Calendar calendar = new Calendar.getInstance();
        Date date = calendar.getTime();
      //Date -> Calendar
        Date date = new Date();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
    Calendar提供了大量日期访问修改的方法例如:
      void add(int field , int amount):根据日期规则给日期加减指定时间。
      void roll(int fidld , int amount):和add方法类似,但是这个方法是有上限的。
      int get(int field): 获取指定日历字段的值。(获取年,月,日...)
      void set(int field , int value):将给定的日历字段设置为指定的值
      void set(int year, int month ,int day):设置年月日,还有个重载的方法可以设置年月日时分秒
      上面的int类型的参数都是Calendar类定义的Int类型的常量:例如:Calendar.YEAR,Calendar.MONTH等,(注意:Calendar.MONTH是0-11)
    add(int faild , int amount)和roll(int faild , int amount)的区别:
      add方法就是我们想象中的加日期,减日期,某天(2017-12-25)加10天就是十天后的日期(2018-01-04)。
      roll方法则不同,某天(2017-12-25)加10天则不会进位到月,而是将月循环增加(2017-12-04)
    Calendar类的容错性:
      Calendar类默认提供了比较好的容错性,例如:calendar.set(Calendar.MONTh,13) 月是不存在13的,这会使年加一。
      但是在校验严格的情况下不允许这种容错的存在:可以通过Calendar.setLenient(false)方法关掉容错。
    set()方法的延迟修改:
      set方法修改了某一日历对象的值后,改日历对象不会立即将其代表的时间修改,而是等到下一下调用get,add,等等方法时计算。

    package demo;
    import java.util.Calendar;
    public class Demo {
        public void mian(String[] args){
            //Calendar类常用方法
            Calendar calendar = Calendar.getInstance();
            calendar.get(Calendar.YEAR);
            calendar.get(Calendar.MONTH);
            calendar.get(Calendar.DAY_OF_MONTH);
            calendar.add(Calendar.YEAR,1);
            calendar.roll(Calendar.YEAR,-8);
            //Calendar类容错性:
            Calendar calendar1 = Calendar.getInstance();
            calendar.set(Calendar.MONTH,12);   //不报错:月份超出后进位到年上
            calendar.setLenient(false);
            calendar.set(Calendar.MONTH,12);    //报错:关闭容错后不再进位,超出就报错。
        }
    }

     格式化器:

    NumberFormat抽象类:
    描述:
    NumberFormat类是Format抽象类的子类,其作用是:实现字符串和数值的互相转换。
    构造:
    通过工厂方法获取NumbeFormat的实例:(这些构造方法可以指定Local,不同地区格式化结果不同)
    NumberFormat.getInstance()
    NumberFormat.getIntegerInstance()
    NumberFormat.getPercentInstance()
    NumberFormat.getCurrencyInstance()
    方法:
    String format(数字类型) 数字类型 --> 字符串
    Number parse(String) 字符串 --> 数字类型

    DateFormat抽象类:
    描述:
    DateFormat类也是Format类的子类,其作用是:实现字符串和日期的互相转换
    构造:(重载方法的一般形式:DateFormat getXXXInstance(int style) DateFormat getXXXInstance(int style, Locale locale)
    格式style Date格式化 Time格式化
    // DateFormat.SHORT 07-12-20 上午12:24
    // DateFormat.MEDIUM 2017-12-20 0:24:33
    // DateFormat.FULL 2017年-12月-20日 上午12时24分33秒
    // DateFormat.LONG 2017年-12月-20日 星期三 上午12时24分33秒 SCT

    //格式化为日期
    DateFormat.getDateInstance();
    //格式化为时间
    DateFormat.getTimeInstance();
    //格式化为日期加时间
    DateFormat.getDateTimeInstance();
    方法:
    String format(Date)
    Date parse(String)

    SimpleDateFormat类:
    描述:SimpleDateFormat类比SimpleDateFormat易于使用。
    构造:
    在创建SimpleDateFormat时需要传入一个pattern的字段,该字段不是需要格式化的字符串的一个日期模板。

    格式化器Demo:
     1 package com.vtstar.sct.desktop.clients.FeedingLine21.swingUI;
     2 import java.text.DateFormat;
     3 import java.text.NumberFormat;
     4 import java.text.ParseException;
     5 import java.text.SimpleDateFormat;
     6 import java.util.Date;
     7 public class Demo {
     8     public static void main(String[] args) throws ParseException {
     9     //格式化数字
    10         //获取一个普通的数字格式器
    11         String numberFormat01 =  NumberFormat.getInstance().format(12.345);      //12.345
    12         //获取一个整数类型的数字格式化器
    13         String numberFormat02 =  NumberFormat.getIntegerInstance().format(12.345);  //12
    14         //获取一个百分比格类型的格式化器
    15         String numberFormat03 =  NumberFormat.getPercentInstance().format(0.345);   //34%
    16         //获取一个货币类型的格式化器
    17         String numberFormat04 =  NumberFormat.getCurrencyInstance().format(12.345);  //¥12.35
    18 
    19     //格式化为日期
    20         String dateShort =  DateFormat.getDateInstance(DateFormat.SHORT).format(new Date());    //18-1-10
    21         //格式化为时间
    22         String dateMedium = DateFormat.getDateInstance(DateFormat.MEDIUM).format(new Date());   //2018-1-10
    23         //格式化为日期加时间
    24         String dateLong = DateFormat.getDateInstance(DateFormat.LONG).format(new Date());   //2018年-1月-10日
    25         //日期时间和时间的格式化器
    26         DateFormat.getDateTimeInstance();
    27         DateFormat.getDateTimeInstance();
    28 
    29     //SimpleDateFormat
    30         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    31         Date date = simpleDateFormat.parse("2018-09-22");      //Sat Sep 22 00:00:00 CST 2018
    32         String dateStr = simpleDateFormat.format(new Date());       //2018-01-10
    33     }
    34 }

      

  • 相关阅读:
    SAP ABAP Netweaver服务器的标准登录方式讲解
    php导出百万数据到csv
    消息中间件Kafaka
    kafka安装
    Linux系统下安装jdk及环境配置(两种方法)
    PHP导出3w条数据成表格
    excel 导出导入
    利用Redis锁解决高并发问题
    BeyondCompare4破解方法
    Linux(Ubuntu)通过nfs挂载远程硬盘
  • 原文地址:https://www.cnblogs.com/Xmingzi/p/8179286.html
Copyright © 2011-2022 走看看