Scanner类(util包)

Scanner类是一个不可变的类,实现了迭代器接口。一个简单的文本扫描器,可以使用正则表达式解析原始类型和字符串。

  • 扫描用户输入
 // 这段代码只做个用法示例,按字符类型输入
Scanner sc =new Scanner(System.in);
System.out.println("请输入:");
if(sc.hasNext()){
//(不能得到带有空格的字符串)
String s = sc.next(); // String 类型
System.out.println("字符串:"+ s);
}
if(sc.hasNextInt()){ // int 类型
int s = sc.nextInt();
System.out.println("整型:" + s);
}
if(sc.hasNextLong()){ // long 类型
long s = sc.nextLong();
System.out.println("长整型:" + s);
}
if(sc.hasNextFloat()){ // float 类型
float s = sc.nextFloat();
System.out.println("浮点型:" + s);
}
if(sc.hasNextDouble()){ // double 类型
double s = sc.nextDouble();
System.out.println("双精度型:" + s);
}
if(sc.hasNextLine()){ // String 类型
String s = sc.nextLine();
System.out.println("整行字符串:" + s);
}
if(sc.hasNextBoolean()){ // boolean 类型
boolean s = sc.nextBoolean();
System.out.println("布尔类型:" + s);
}
System.out.println("-------结束-----");
  • 扫描文件里的数据

    Scanner sc = new Scanner(new File("E:\\zz.txt"));

  • 通过输入流获取

 Scanner s = new Scanner(new FileInputStream("E:\\zz.txt")); // 扫描文件输入流中的数据
/* while(s.next().equals("123")){
System.out.println(s.next()); // 打印"123"后一个字符串
}*/
while (s.hasNext(Pattern.compile("\\d+"))){
System.out.println(s.next()); // 打印匹配到的字符串
}
  • 使用正则解析字符串
 String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input);
s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
MatchResult result = s.match();
for (int i=1; i<=result.groupCount(); i++)
System.out.println(result.group(i));
s.close();

System类(lang包)

System也是一个不可变类,是一些与系统相关的属性和方法且都是静态的。包括标准输入,标准输出和错误输出流; 访问外部定义的属性和环境变量; 一种加载文件和库的方法。

// 相关属性
System.err.println("System.err 标准错误流");
System.out.println("System.out 标准输出流");
System.out.println("System.in 标准输入流"); // 相关方法
String [] s = {"ab", "cd", "ef", "gh"};
String [] s1 = new String[6];
System.arraycopy(s,0, s1,2,4);
System.out.println(Arrays.toString(s)); // [ab, cd, ef, gh]
System.out.println(Arrays.toString(s1)); // [null, null, ab, cd, ef, gh] System.out.println(System.getenv());// 返回当前系统环境的不可修改的字符串映射视图(Map<String,String>类型)
System.out.println(System.getenv("Java_home")); // G:\Java\jdk1.8.0_161 获取指定环境变量的值
// 以下方法还有对应的set方法
System.out.println(System.getProperties()); // 返回当前的系统相关属性。
System.out.println(System.getProperty("os.name")); // 返回当前操作系统的名称 Windows 10 System.out.println(System.nanoTime());// 返回正在运行的JVM的高分辨率时间源的当前值(以纳秒为单位)
System.out.println(System.currentTimeMillis()); // 返回当前时间(以毫秒为单位) System.out.println("====="+System.lineSeparator()); // 返回与系统相关的行分隔符字符串 System.load("C:\\Drivers\\Audio.Realtek\\HDA\\New\\AERTAC64.dll"); // 指定到文件
System.loadLibrary("lib"); // 底层实现 Runtime.getRuntime().loadLibrary(name)
System.exit(0); // 终止当前运行的Java虚拟机,非 0 的状态码表示异常终止
System.gc(); // 运行垃圾回收器

实际上out,err 的就是PrintStream类型的输出流, in是InputStream类型输入流

 System.out.println("This is a test");
System.err.println("print to console");
try {
byte[] b = new byte[1024];
System.setIn(new FileInputStream("E:\\test1.txt"));
int len = System.in.read(b);
System.out.println("file context: "+ new String(b, 0, len)); // 打印test1.txt内容 System.setErr(new PrintStream("E:\\test2.txt"));
System.setOut(new PrintStream("E:\\test3.txt"));
} catch (IOException e) {
e.printStackTrace();
}
System.err.println("input to test2.txt"); // 内容输出到test2.txt 文件
System.out.println("input to test3.txt"); // 内容输出到test3.txt 文件

Java_Scanner和System类的更多相关文章

  1. java中的System类

    System类代表系统,系统级的很多属性和控制方法都放置在该类的内部.该类位于java.lang包. 由于该类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类.其内部的成员变 ...

  2. System类和Random类

    System类 成员方法: public static void gc():运行垃圾回收器 public static void exit(int status):退出垃圾回收器 public sta ...

  3. Java api 入门教程 之 JAVA的SYSTEM类

    System类代表系统,系统级的很多属性和控制方法都放置在该类的内部.该类位于java.lang包. 由于该类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类.其内部的成员变 ...

  4. System类

    System类是一些与系统相关属性和方法的集合,而且System类中所有的属性都是静态的,要想引用这些属性和方法,直接使用System类调用即可. //======================== ...

  5. java 的SYSTEM类【转】

    java 的SYSTEM类[转] Posted on 2009-12-03 16:46 火之光 阅读(728) 评论(0) 编辑 收藏 System类代表系统,系统级的很多属性和控制方法都放置在该类的 ...

  6. java 14 -5 System类

    System类包含一些有用的类字段和方法.它不能被实例化. 方法: 1.public static void gc():运行垃圾回收器. 2.public static void exit(int s ...

  7. System类及其常用函数

    System 类包含一些有用的类字段和方法.它不能被实例化. 常用方法: 1.static void arraycopy(Object src, int srcPos, Object dest, in ...

  8. Java API —— System类

    1.System类概述         System 类包含一些有用的类字段和方法.它不能被实例化.  2.成员方法         public static void gc():运行垃圾回收器   ...

  9. Java System类看到的一点小记

    System类 位置java.lang包中 是final类,不能被继承,不能被修改 ,不能被实例化 private System(){}私有的构造函数,不允许被其他对象进行实例化 public fin ...

随机推荐

  1. MySQL源码包编译安装

    +++++++++++++++++++++++++++++++++++++++++++标题:MySQL数据库实力部署时间:2019年3月9日内容:MySQL源码包进行编译,然后部署MySQL单实例重点 ...

  2. powershell 函数, foreach中格式化

    function testArg { $n = 1; if($args.Count -eq 0) { "No arg!" } else { $args | foreach {&qu ...

  3. 【ubuntu】修改php-fpm和nginx运行用户

    (php)项目a是用test用户运行nginx和php-fpm是www-data用户运行(python)项目b是用test用户运行 项目a通过php函数exec调用python脚本的接口造成了没有权限 ...

  4. python之MRO和垃圾回收机制

    一.MOR 1.C3算法简介 为了解决原来基于深度优先搜索算法不满足本地优先级,和单调性的问题. python2.3版本之后不管是新式类还是经典类,查找继承顺序都采用C3算法 2.算法原理 C3算法的 ...

  5. kubernetes-kubeadm自动生成的证书过期的解决方法

    拉取kubernetes的源码: git clone https://github.com/kubernetes/kubernetes.git 切换版本: cd kubernetes &&am ...

  6. AutoMapper入门使用

    AutoMapper入门使用 在应用开发的过程中,首先要了解整个系统中各个系统的组件的作用,然后了解系统的工作流(workflow),最后需要梳理一遍数据流(dataflow),而在整理数据流的过程中 ...

  7. LOJ2340 [WC2018] 州区划分 【FMT】【欧拉回路】

    题目分析: 这题是WC的题??? 令 $g[S] = (\sum_{x \in S}w_x)^p$ $h[S] = g[S]$如果$S$不是欧拉回路 $d[S] = \frac{f[S]}{g[All ...

  8. Flask 模板系统

    模板 基本数据类型 可以执行python语法,如:dict.get(), list['xx'] 比django 更加亲近于 python 传入函数 - django,自动执行 - flask,不自动执 ...

  9. Qt调用自己编译的libglog.a出现问题

    我确定依据正确导入库后,依旧出现未定义的引用. undefined reference to _imp___ZN6google17InitGoogleLoggingEPKc 尝试过重新编译,调整编译参 ...

  10. Vue, React, AngularJS, Angular2 我们对流行JavaScript框架们的选择

    转自<奇舞周刊>,好文章mark一下 分割线 一个有趣的事实是:IBM发表的2017年最值得学习的编程语言名单中,JavaScript榜上有名.这位IT巨头指出,JS在网站中惊人地达到94 ...