------- android培训、java培训、期待与您交流! ----------
System类中的方法和属性都是静态的。
典型的方法便是:
Sytem.out:标准输出,它可以将输出语句打印在控制台上。
System.in:标准输入,它可以读取从键盘上输入的字符。
将java程序与其运行环境相连接,无构造函数,由该类的静态方法提供对象。由这个方法可以看出该类使用了单例设计模式。
Runtime可以获取进程名,启动或者杀死进程。
Data是一个日期类,它对日期和时间进行了描述。通过new Data对象可以获取Data的实例,输出就是日期,可以通过格式化打印出自定义格式的日期。
SimpleDateFormat:可以将日期的模式封装到对象中,再将时间转成该模式。
格式:
SimpleDateFormat s = new SimpleDateFormat(“yyyy年MM月dd日”);
这样就可以将模式封装到对象中
s.format(d);就可以将制定对象模式化。
Calendar是一个日历类。他没有构造函数,可以通过getInstance()方法获取该对象。
通过获取了对象后,调用该对象的方法,就可以获取日历信息。
常用的日期方法:
get(Calendar.YEAR):获取日历中的年,返回的是当前年的信息。
get(Calendar.MONTH):获取日历中的月。从0开始,最大数值是11.
get(Calendar.DAY_OF_MONTH):获取日历中的日,是按照当前月来排布的。
get(Calendar.DAY_OF_WEEK):获取日历中的日,是按照当前是星期来排布的。以星期日开始。
除了get方法,该类还可以自己设置日历:
set(YEAR,MONTH,DAY);该方法可以设置指定对象的年月日。
add(calendar.Year,num):该方法可以将制定对象的年增加num。同样的方法还有增加月,增加日。
该类包含用于执行基本数学的运算方法,如初等数学,对数,平方根和三角函数。
math类没有构造函数,它的常用方法大多数是静态方法:
ceil:返回大于制定数值的最小整数。
floor:返回小于制定数值的最大整数。
round:四舍五入。
pow(a,b):返回a的b次方。
random:返回带正号,包括0,但不包括1的随机数,它内部是使用伪随机算法算出的。当然,它还可以指定格式,如下:
Random r = new Random();
int I = r.nextInt(10);
他就是获取一个0到9内的随机整数。
IO是Input和Output的缩写,IO流用来处理设备之间的数据传输,java对数据的操作是通过流的方式,而java操作数据流的对象都在IO包中,IO流按照数据分为两种:字节流和字符流。而按照流向则分为输入流和输出流。
字节流的抽象基类:
InputStream,OutputStream
字符流的抽象基类:
Reader,Writer
由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。如:
InputStream的子类File InputStream。
Reader的子类FileReader。
对于IO流中,flush和close都可以刷新流对象。只是对于这两个方法,close会将流对象刷新完之后关闭该流,该流就会不再可用,而flush仅仅是刷新流对象,刷新完后该流依然可用。
字符流的典型特点是可以通过字符流来操作文件对象,它主要用于操作文本文件。字符流用于最常用操作文本文件的对象便是FileReader和FileWriter两个子类,如下,就是通过这两个子类,对一个文本文件进行的复制操作:
在上述例子中,包含了IO流中的异常处理方式,在IO流中,不管是否会出现异常,必须要进行的操作是关流,所以关流操作就显得格外重要,必须在finally中进行操作。
注意:在对字符输出流进行文件对象引用时,如果该文件不存在,则会建立一个新的文件,用于存储。如果该文件存在,也会建立一个新的文件而覆盖原有的文件,如果想要不覆盖原有的文件,则需要在参数后面加一个boolean型变量即可,用true表示不覆盖,具体格式如下:
FileWriter(“1.txt”,true)。
为了提高读写效率,优化程序性能java程序中封装了两个字符流对象,分别用于读写,对应类为:
BufferedWriter字符流写入流缓冲区,用于写入数据。
BufferedReader:字符读取流缓冲区,用于读取数据。
缓冲区中封装了更多读写的方法,用法如下:
可以看出,使用缓冲区,可以通过缓冲区的读取一行的方法,更快的读写文件,缓冲区还封装有换行,刷新等功能。
其实readLine方法的原理:也是在硬盘上一个一个的读取,而读取的方法则是read方法,只是缓冲区将字符数组封装在了内部,所以不需要再在外部创建数组了。
了解了readLine原理后,可以自己模拟一个字符串缓冲区,代码如下:
如上代码就是对缓冲区的模拟
对于Reader类,BufferedReader类就是一个用来装饰Reader的类,这种类叫装饰类,这种模式叫做装饰设计模式。
当想要对已有的对象运行功能增强时,可以定义类,将已有的对象传入,基于已有的功能,并加强其功能,那么自定义的该类称为装饰类。
因为字符流只能对文本文件进行操作,所以在操作非文本文件时,就需要其他的流对象了,这就是字节流。
通过字节流,可以复制图片,音频等非文本文件,如下,就是一个通过字节流复制图片的例子:
System.in和System.out是标准输出输入流设备,他们使用的流都是字节流,而一般情况键盘录入的都是字符,所以这时若想用字符流的方法操作字节流,就需要使用转换流。
InputStreamReader和OutputStreamWrtiter就是两个转换流。
如下,就是应用键盘录入的例子:
IO流的总结规律:
1、 明确源和目的
源:输入流。InputStream,Reader
目的:输出流。OutpurStream,Writer。
2、 操作的数据是否是纯文本:
是:字符流。
不是:字节流
3、 当体系明确后,在明确要使用哪个具体对象:
通过设备来进行区分:
源设备:内存,硬盘,键盘
目的设备:内存,硬盘,控制台