12.常用类简单介绍.md

1.Scanner类

/*输入输出*/

System.out.println("请输入,以回车结束");
Scanner sc = new Scanner(System.in);
//sc.useDelimiter("
");//分隔符换成回车
while (sc.hasNext()) {
    System.out.println("输入的内容是:" + sc.next());
}
while (sc.hasNextDouble()) {
    System.out.println("输入的内容是:" + sc.nextDouble());
}
/*简单读取文件*/
 
try {
    Scanner sc = new Scanner(new File("D:\a.txt"));
    System.out.println("ScannerTest.java内容如下:");
    while (sc.hasNextLine()) {
        System.out.println(sc.nextLine());
         
    }
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

2.System类

/*System类获取环境变量相关信息*/
 
//环境变量
Map<String, String> mpEnv = System.getenv();
System.out.println("*********Begin:");
for(String name : mpEnv.keySet()){
    System.out.println(name + "----->" + mpEnv.get(name));
}
System.out.println("*********End:");
 
//特定变量
System.out.println(System.getenv("JAVA_HOME"));
 
//写到文件中
java.util.Properties pt = System.getProperties();
try {
    pt.store(new FileOutputStream("D:\b.txt"), "PPP");
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
 
//获取时间
System.out.println(System.nanoTime());
//获取系统版本
String s = System.getProperty("os.name");
System.out.println(s);  


3.Runntime类

/*Runtime类*/
//获取内存信息
Runtime rc = Runtime.getRuntime();
System.out.println("处理器数量: " + rc.availableProcessors());
System.out.println("空闲内存总量: " + rc.freeMemory());
System.out.println("可用内存总量: " + rc.totalMemory());
System.out.println("最大内存总量: " + rc.maxMemory());
//启动系统任务:记事本
try {
    rc.exec("notepad.exe");
    rc.exec("D:\Notepad++v6.7.7\Notepad++\notepad++.exe");
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

4.Object类和工具类

工具类

public class ScannerTest {
    private static ScannerTest sc;
    public static void main(String[] args) {
        System.out.println(Objects.hashCode(sc));
        System.out.println(Objects.toString(sc));
        System.out.println(Objects.requireNonNull(sc));
        }
}

5.StringBuffer类和StringBuilder类

  • String类不适合对字符串的反复处理,因为每次都会创建一个新的对象
  • StringBuffer内部维护一个char数组来实现字符串的处理
  • StringBuilder和StringBuffer的函数是一样的,不同在于前者是线程不安全的,后者是线程安全的。推荐使用前者,前者的出现时间晚于后者,因为很少会有对字符串的操作需要线程安全。

6.Math类


7.Random类和ThreadLocalRandom类

public static void main(String[] args) {
    //System.out.println();
    /*Random类*/
    //产生随机数
    Random ra = new Random();
    System.out.println("Boolean:" + ra.nextBoolean());
    System.out.println("int:" + ra.nextInt());
    System.out.println("double:" + ra.nextDouble());
    System.out.println("long:" + ra.nextFloat());
     
    //同样的种子,两个不同的对象以同一个顺序产生的随机数是一样的
    Random ra5 = new Random(5);
    System.out.println("long5:" + ra5.nextFloat());
    Random ra6 = new Random(5);
    System.out.println("long6:" + ra5.nextFloat());
     
    //以时间为种子产生随机数
    Random raTime = new Random(System.currentTimeMillis());
    System.out.println("Random int(0-6) by time:" + ra.nextInt(6));
     
    //ThreadLocalRandom产生的随机数
    ThreadLocalRandom tlr = ThreadLocalRandom.current();
    System.out.println("ThreadLocalRandom int(6-10):" + tlr.nextInt(6,  10));
}

8.时间日期

public static void main(String[] args) {
        //System.out.println();
        /*时间日期的获取*/
        //获取对象
        Calendar cl = Calendar.getInstance();
        //获取完整时间
        System.out.println("当前日期:" + cl.getTime());
        //年份,cl.YEAR从1开始
        System.out.println("当前年份:" + cl.get(cl.YEAR));
        //月份,cl.MONTH从0开始,需要加1
        System.out.println("当前月份:" + (cl.get(cl.MONTH) + 1));
        //日期,cl.DATE从1开始
        System.out.println("当前日子:" + cl.get(cl.DATE));
        //时
        System.out.println("当前小时:" + cl.get(cl.HOUR));
        //分
        System.out.println("当前分钟:" + cl.get(cl.MINUTE));
        //秒
        System.out.println("当前秒数:" + cl.get(cl.SECOND));
        System.out.println("**********");
        //今天之前的一天日期
        Date d = (Calendar.getInstance()).getTime();
        Calendar ck = Calendar.getInstance();
        ck.setTime(d);
        ck.add(ck.MONTH, -1);
        ck.add(ck.YEAR, 1);
        System.out.println("当前日期:" + ck.getTime());
        //格式化
        String s = new SimpleDateFormat("日期向前调整后格式化输出:yyyy-MM-dd HH-mm-ss").format(ck.getTime());
        System.out.println(s);
 
        //ck.add(ck.MONTH, 5);
        ck.roll(ck.MONTH, 5);
        s = new SimpleDateFormat("处理的输出:yyyy-MM-dd HH-mm-ss").format(ck.getTime());
        System.out.println(s);
         
        //容错性
        ck.set(ck.MONTH, 13);
        s = new SimpleDateFormat("处理的输出:yyyy-MM-dd HH-mm-ss").format(ck.getTime());
        System.out.println(s);
        //关闭容错性后运行报错
        ck.setLenient(false);
        ck.set(ck.MONTH, 13);
        s = new SimpleDateFormat("处理的输出:yyyy-MM-dd HH-mm-ss").format(ck.getTime());
        System.out.println(s);
    }

add和roll的区别:两个都是对日期的处理,但是区别在于add会做进位处理,roll不会做进位处理:如果将日期向前调整后格式化输出:2016-09-30 11-24-03用add增加5个月,那么结果是处理的输出:2017-02-28 11-24-03,如果是roll则为处理的输出:2016-02-29 11-24-38
set的容错性:

8.Runtime类

该类可获得应用程序的运行环境:

  • getRuntime() 返回当期aN应用程序的运行环境对象
  • exec(String command) 根据路径执行对应的可执行程序
  • freeMemory() 返回JVM空闲内存
  • maxMemory() 返回JVM最大内存
原文地址:https://www.cnblogs.com/bugstar/p/8492509.html