System类与两种输入流
1.System类对I/O的支持
系统输出System.out.println 是利用了I/O流的模式完成的。实际是打印流PrintStream对象
System类中定义了三个操作的常量
1.标准/系统输出(显示器)
public final static PrintStream out
1
2.标准错误输出,也是打印流对象,除了颜色是红色外与System.out 别无二致
public final static PrintStream err
1
3.标准输入(键盘)是 InputStream对象,没有任何包装
public final static InputStream in
1
2.两种输入流
由于JDK 1.0提供的System.in 太难用
JDK1.1之后扩展了BufferedReader 类 JDK 1.5之后提供了java.util.Scanner类
2.1BufferedReader类
BufferedReader类属于一个缓冲输入流,而且是一个字符流的操作对象。在Java中对于缓冲区流也分为两类:字节缓冲流(BufferedInputStream)、字符缓冲流(BufferedReader)
BufferedReader 类的定义和构造方法
public class BufferReader extends Reader//定义
public BufferedReader(Reader in)//构造方法
1
2
BufferedReader类提供如下方法 可以直接读取一行数据(以回车为换行符)
String readLine() throws IOException
1
代码示例
package JAVASE.io;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
/**
* @Name:练习BufferedReader系统输入类
* @Author:ZYJ
* @Date:2019-05-19-20:18
* @Description:
*/
public class BufferedReaderTest {
public static void main(String[] args) throws IOException {
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入信息:");
String str = buf.readLine();//默认回车换行
System.out.println("输入信息为:"+str);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2.2 java.util.Scanner 类
打印流解决的是OutputStream 类的缺陷,BufferedReader解决的是InputStream类的缺陷。而Scanner解决的是BufferedReader类的缺陷,
Scanner是一个专门进行输入流处理的程序类,利用这个类可以方便的处理各种数据类型,同时也可以结合正则表达式进行各项处理。
2.2.1 方法
1.判断是否含有指定数据
public boolean hasNextXxx()//各种数据类型
1
2.取得指定的数据类型
public 数据类型 nextXxx()
1
3.定义分隔符
public Scnner useDelimiter(Pattern pattern)
1
4.构造方法
public Scnner(InputStream source)
1
代码示例 :使用Scanner类实现数据输入
package JAVASE.IOtext;
import java.util.Scanner;
/**
* @Name:Scnner 类的练习
* @Author:ZYJ
* @Date:2019-05-22-10:43
* @Description:
*/
public class ScannerTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数据:");
//输入内容判空操作
if (scanner.hasNext()) {
//取得指定的输入流
System.out.println("输入的内容为" + scanner.next());
}
//关闭流
scanner.close();
}
}
//默认以\n结束
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
代码示例:使用Scanner类接收其他数据类型数据
package JAVASE.IOtext;
import java.util.Scanner;
/**
* @Name:Scanner 与任意类型的转换
* @Author:ZYJ
* @Date:2019-05-22-11:32
* @Description:
*/
public class ScannerPrint {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年龄");
if(scanner.hasNext()){
int age = scanner.nextInt();
System.out.println("年龄为:"+age+"岁");
}else{
System.out.println("输入内容非法");
}
scanner.close();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2.2.2 Scanner类与正则表达式
**正则表达式:**是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
给定一个正则表达式和另一个字符串,我们可以达到如下的目的:
给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”):
可以通过正则表达式,从字符串中获取我们想要的特定部分。
Scanner 类可以对接受的数据类型使用正则表达式判断
代码示例:利用正则表达式进行判断
package JAVASE.IOtext;
import java.util.Scanner;
/**
* @Name:Scanner类练习
* @Author:ZYJ
* @Date:2019-05-22-11:22
* @Description: 利用正则表达式进行判断
*/
public class TestPrint {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入生日:");
if(scanner.hasNext("\\d{4}-\\d{2}-\\d{2}")){
//取得指定输入流,并将其转化为字符串
String birthday = scanner.next();
System.out.println("输入的生日为:"+birthday);
}else{
System.out.println("输入格式非法,不是生日!!!");
}
//关闭流
scanner.close();
}
}
---------------------
System类与两种输入流的更多相关文章
- 菜鸡的Java笔记 第十三 String 类的两种实例化方法
String 类的两种实例化方法 String 类的两种实例化方式的区别 String 类对象的比较 Stirng 类对象的使用分析 /* 1.String 类的两种实例化方式的区别 ...
- Python 自定义元类的两种写法
有关元类是什么大家自己搜索了解,我这里写一下实现元类的两种写法 # 自定义元类 #继承type class LowercaseMeta(type): ''' 修改类的属性名称为小写的元类 ''' # ...
- Struts 2 数据校验要用到的类和两种校验方式以及一些校验问题的解决
通过继承ActionSupport类来完成Action开发,ActionSupport类不仅对Action接口进行简单实现, 同时增加了验证.本地化等支持 .真实开发中自定义Action都需要继承该类 ...
- Java中匿名类的两种实现方式(转)
使用匿名内部类课使代码更加简洁.紧凑,模块化程度更高.内部类能够访问外部内的一切成员变量和方法,包括私有的,而实现接口或继承类做不到.然而这个不是我说的重点,我说的很简单,就是匿名内部类的两种实现方式 ...
- String类对象两种实例化方式比较
第一种:直接赋值 String str = "hello!" ; 在java中,有一个字符串常量池,对于这种直接赋值的,会直接写进常量池(常量池里面不存在其value,) 自JD ...
- Python 实现接口类的两种方式+邮件提醒+动态导入模块+反射(参考Django中间件源码)
实现接口类的两种方式 方式一 from abc import ABCMeta from abc import abstractmethod class BaseMessage(metaclass=AB ...
- 【C++】类的两种实例化方法
直接上代码: #include<stdio.h> #include<string> #include<iostream> using namespace std; ...
- python_106_创建类的两种方式
class Foo(object): def __init__(self, name): self.name = name f = Foo("alex") print(type(f ...
- xml转json和实体类的两种方式
本文为博主原创,未经允许不得转载: xml在http通信中具有较高的安全性和传输速度,所以应用比较广泛, 在项目中往往需要对xml,json和实体类进行相互转换,在这里总结一下自己所用到的一些方法: ...
随机推荐
- CodeForces-607B:Zuma (基础区间DP)
Genos recently installed the game Zuma on his phone. In Zuma there exists a line of n gemstones, the ...
- Oracle 安装报错 [INS-06101] IP address of localhost could not be determined 解决方法输入日志标题
安装Oracle 11gR2,报错:[INS-06101] IP address of localhost could not be determined 出现这种错误是因为主机名和/etc/host ...
- ORA-01152: 文件 1 没有从过旧的备份中还原
转自:http://blog.itpub.net/8520577/viewspace-1255794/ 做了一个全备 RMAN> show all; 使用目标数据库控制文件替代恢复目录db_un ...
- 6-4 Haar特征1
实际上特征就是图像中某个区域的像素点,经过某种四则运算之后得到的结果.所以说图像的特征它是像素经过运算之后得到的某一个结果.这个结果可以是一个具体的值,也可以是一个向量,又或是一个多维的元素.所以说特 ...
- 02_使用httpurlconnection提交参数_get
- hdoj1596【spfa,松弛】
积压很久的一道...一看直接spfa水过..但是看那个safest怎么求得?松弛的时候取大. #include <bits/stdc++.h> using namespace std; t ...
- 3dmath复习随笔
左手坐标系与右手坐标系 旋转正方向,下图是右手系,左手系同理 向量 点乘: 叉乘: dx是左手系,使用行向量,vABC,乘矩阵用左乘 opengl是右手系,使用列向量,CBAv,乘矩阵用右乘 u3d貌 ...
- 11.5NOIP模拟赛
/* 唉,那个第二种策略应该是没用吧. 为什么我列出式子最优策略跟第二种策略有关??为什么我写了写分布列还是跟第二种策略有关??为什么数学还没学到期望的孩子们都A了? 唉.人生啊. 0.5h后 我好像 ...
- P3007 [USACO11JAN]大陆议会The Continental Cowngress(2-SAT)
简述:给出 n 个法案, m 头牛的意见, 每头牛有两个表决 格式为 “支持或反对某法案”, 每头牛需要至少满足一个表决, 不可能成立的话输出 IMPOSSIBLE, 否则输出方案, Y代表能, N代 ...
- 鸟哥私房菜基础篇:Linux 磁碟与档案系统管理习题
猫宁!!! 参考链接:http://linux.vbird.org/linux_basic/0230filesystem.php 鸟哥是为中国信息技术发展做出巨大贡献的人. 1-我们常常说,开机的时候 ...