System:类中的方法和属性都是静态的,包含一些有用的类字段和方法,它不能被实例化。
Out:标准输出流
In:标准输入流
Properties 是Hashtable的子类,也就是Map集合的一个子类对象,那么可以通过map方法取出该集合中的元素,该集合存储的都市字符串,没有泛型定义
Properties 获取系统属性 getProperties
GBK:中文的码表
//怎样在系统中自定义一些特有的信息呢?
System.setProperty(“mykey”,”myvalue”);
//获取指定属性信息:String value = System.getProperty(“os.name”);System.out.println(value);
可以用-D属性-值给系统赋值
Runtime对象
该 类没有提供构造函数,说明不可以new对象,那么会直接想到该类中的方法都市静态的
发现该类中还有非静态方法,说明该类中肯定会提供方法获取本类对象,而且该方法是静态的,并
返回值类型是本类类型
这个特点可以看出该类使用了单例设计模式完成Runtime r = Runtime.getRuntime();Process p = r.exec("");
Math类:ceil大于这个数的最下的整数 double d =Math.ceil(15.34);
floor小于指定数据的最大整数
round:四舍五入
pow:几次幂
random:随机数 伪随机数,返回的是大于等于0小于1的随机数
int b = (int)((Math.random*10)+1)返回1-10的随机整数
Random r = new Random; int d = r.nextInt(10)+1;
IO流
IO流用来处理设备之间的数据传输
java地数据的操作是通过流的方式
java用于操作流的对象都在IO包中
流按操作数据分为两种:字节流和字符流
流按流向分为:输入流,输出流;
字节流的抽象基类:InputStream,OuputStream
字符流的抽象基类:Reader,Writer
注:由这四个类派生出来的子类名称都是以其父类名作为后缀
数据最常见体现形式:文件
需求:在硬盘上,创建一个文件并写入一些文字数据
找到一个专门用于操作文件的Writer子类对象,FileWriter,后缀名是父类名,前缀名是该对象的功能
flush和close区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭
//异常的处理方式(凡是与设备上数据发生处理关系的都会产生异常)
字节流转换为字符流 InputStreamReader system.in
//键盘录入 因为readLine是Reader的子类,所以需要将字节转换成字符流
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
字符流转换成字节流OutputStreamWriter system.out
流操作的基本规律:
三个明确:
1、源和目的
(源:输入流,InputStream Reader
目的:输出流, outputStream Writer
)
2、操作的数据是否是纯文本
是:字符流
不是:字节流
3、当体系明确后,再明确要使用哪个具体的对象,通过设备来进行区分(源设备内存,硬盘,键盘)(目的设备:内存,硬盘,控制台)
如果需要提高效率,就加入缓冲区
* 需求:将键盘录入的数据保存到一个文件中
* 合格需求中有源和目的都存在
* 分别分析
* 源:InputStream Reader
* 是不是纯文本,是,Reader
* 设备:键盘对应的对象是System.in
* 不是选择Reader吗?System.in对应的是字节流吗?
* 为了操作键盘的文本数据方便,转成字符流按照字符串操作是最方便的
* 既然明确了Reader,那么就将System.in转换成Reader 用到reader中单额装换流 InputStreamReader
* InputStreamReader isr= new InputStreamReader(System.in);
* 需要提高效率吗,需要 bufferedReader
* BufferedReader bufr = new BufferedReader(isr);
*
* 目的:OutputStream Writer
* 是否是纯文本,是?writer
* 设备,硬盘一个文件,使用FileWriter,使用的是默认编码表
* 但是存储时,需要加入指定编码表,而指定的编码表只有转换流可以指定,所以要使用的对象是OutputStreamWriter
* 而该转换流对象要接收一个字节输出流,而且还可以操纵的文件的字节输出流,FileOutputStream
* FileWriter fw = new FileWriter("c.txt");
* 需要提高效率吗
* BufferedWriter bufw = new BufferedWriter(fw);
*
* 扩展一下,想要把录入的数据按照指定的编码表(utf-8,默认的平台编码是GBK),将数据存到文件中
* BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("f:\\a.txt"),“utf-8”));
* */