- 浏览: 282879 次
- 性别:
- 来自: 广州
博客专栏
-
数据结构
浏览量:70117
最新评论
-
clever101:
兄弟,能提供一个有参数传递的例子吗?
java jni详细入门实例 -
comsci:
拓扑分析算法...............寻径与导 ...
A星寻路算法 -
manxisuo:
感谢博主,好文章。
java的类加载器ClassLoader -
User_Java:
类的静态变量初始化顺序与其声明的顺序有关。自增操作都执行后保存 ...
据说一半以上的java程序员会出错的题 -
flashsnow:
在公司写这样的代码是要遭雷劈的But,为了理解ClassLoa ...
据说一半以上的java程序员会出错的题
文章列表
字符流的底层还是使用字节流实现的,所以字节流时刻转换为字符流的。转换流主要使用到
OutputStreamWriter:将字节输出流转换为字符输出流形式
InputStreamReader:将输入的字节流转换为字符流输入形式
1.OutputStreamWriter(字节输出流-->字符输出流)
OutputStreamWriter是字节流通向字符流的桥梁。如果不指定字符集编码,该解码过程将使用平台默认的字符编码
构造方法:
OutputStreamWriter os = new OutputStreamWriter( ...
缓冲流本身不具IO功能,只是在别的流上加上缓冲提高效率,像是为别的流装上一种包装。当对文件或其他目标频繁读写或操作效率低,效能差。这时使用缓冲流能够更高效的读写信息。因为缓冲流先将数据缓存起来,然后一起写入或读取出来。所以说,缓冲流还是很重要的,在IO操作时记得加上缓冲流提升性能。
缓冲流分为字节和字符缓冲流
字节缓冲流为:
BufferedInputStream—字节输入缓冲流
BufferedOutputStream—字节输出缓冲流
字符缓冲流为:
BufferedReader—字符输入缓冲流
BufferedWriter—字符输出缓冲流
...
本篇博客主要介绍字符流FileWirter和FileReader流,主要用于操作文件内容。
一.FileWriter(文件输出字符流)
FileWriter与FileOutputStream类似,不过FileWriter是字符流,而FileOutputStream是字节流。
构造方法:
1.public File(FIle file)throws IOException------根据File创建FileWriter实例
2.public File(File file,boolean append)throws IOException-------- ...
IO流即输入输出流,流是一组有顺序的,有起点和终点的字节结合,是对数据传输的总称。即数据在两设备间的传输称为流,流的本质是数据传输。
IO流可以分为字节流和字符流。给出相应的IO结构图:
在接下来的一段时间里,将会慢慢介绍各种流的使用,本篇博客先介绍字节流的FileOutputStream和相对应的FileInputStream。
一.FileOutputStream(文件输出流)
OutputStream是一个抽象类,抽象类必须通过子类实现。现在要向文件里输出就要用FileOutputStream。
Fi ...
File类是表示文件和目录名的抽象表示形式。File类可以实现文件的创建,删除,重命名,获取路径,创建时间等等,是唯一一个与文件本身有关的操作。所以有必要好好学习File类。
主要使用方法:
1.public File(String pathname)----根据文件路径构造File实例
2.public boolean createNewFile()throws IOException-----创建文件
3.public boolean delete()----------删除文件
4.public String getParent()----------得到文件 ...
一.比较器Comparable和Comparator
上一篇博客介绍了工具类Arrays工具类 。我们可以对基本类型的数组调用Arrays.sort()函数来进行数组的排序。排序操作在日常开发中经常要使用到。那么String类和自定义类能不能使用Arrays.sort()来进行排序呢。下面我们来试试,如下:
public class Mystring {
public static void main(String[] args) {
String []a={"早上","中午", ...
java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。静态方法是属于类的,不是属于类的对象。所以可以直接使用类名加方法名进行调用。Arrays作为一个工具类,能很好的操作数组。下面介绍主要使用的几个函数。
1.fill方法
fill方法主要用来填充数组,这里我们举最简单的int类型吧(其它类型的一样)
看Arrays的fill源码
示例代码:
public static void main(String[] args) {
int a[]=new int[5];
//fill填充数组
Arr ...
在实际开发中,我们会经常使用到字符串连接的操作,以前我习惯喜欢用String的‘+’来操作,觉得非常方便好用,最近认真学习了String,StringBuffer和StringBuilder这三个类,才发现使用String来连接字符串,代码性能会很低。下面我们就字符串连接来分析这三种方式。
1.String
打开String的源码,如图所示
会发现存储字符串的字符数值是final常量。再看String的构造方法,发现String的value值在构造方法就确定了值。这里有必要说明下关键字final
f ...
多态性是面向对象的三大特性之一.(封装,继承,多态),多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码, 让程序可以选择多个运行状态,这就是多态性。多态性增强了软件的灵活性和扩展性。
...
“继承”是面向对象软 件技术当中的一个概念。如果一个类A继承自另一个类B,就把这个A称为"B的子类",而把B称为"A的父类"。继承可以使得子类具有父类的各种属性和方 法,而不需要再次编写相同的代码。在令子类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类的原有属性和方法,使其获得与父类不同的功能。
继承的基本概念
1.继承是面向对象的三大特性之一。(封装,继承,多态)
2.被继承的类是父类,继承父类的类是子类
3.继承可以使一个对象直接使用另以对象的属性和方法
4.继承可实现代码重用
继承的限制 ...
Java的String类在开发时经常都会被使用到,由此可见String的重要性。经过这次认真仔细的学习了java的String类。发现了自己以前开发中对String使用的不足,特写此博客来记录自己对String的学习总结。
首先String不属于8种基本数据类型,String是一个对象。 因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。
String实际上是使用字符数组来存储的数据的。从源码可以清晰看到定义的字符数组。
String在java/lang包下面,ja ...
前面几篇博客学习介绍了插入排序,交换排序,选择排序等排序算法。本篇博客将主要学习介绍归并排序和基数排序。学习完这两个算法,我们的排序算法就学完了。
1.归并排序
归并排序是建立在归 ...
介绍学习完插入排序和交换排序,本篇博客来学习选择排序,选择排序的基本思想是:每趟从待排的记录中选出关键字最小的记录,顺序放在已经排好序子表的最后,直到全部记录排序完毕。由于选择排序每趟总是从无序区中选出全局最小或最大的关键字,所以适合于大量的记录中选择一部分排序记录。在这里,我们主要介绍选择排序里的直接选择排序和堆排序。
1.直接选择排序(简单选择排序)
基本思想
在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二 ...
前面学习了内排序里面的插入排序,插入排序包含直接插入排序,二分插入排序和希尔排序,其中希尔排序的速度通常比较快。这篇博客,主要介绍排序算法中的交换排序。主要介绍冒泡排序和快速排序。
...
排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们这里的排序是内部排序。
所谓排序,就是要整理表中的记录,使之按关键字递增(或递减)有序排列,当排序的关键字都不相同时,排序结果是唯一的。本篇博客介绍插入排序。
插入排序的基本思想是:每次将一个待排序的记录,按其关键字的大小插入到前面已经排好序的子表中的适当位置,直到全部记录插入完成为止。主要介绍直接插入排序,二分插入排序,希尔排序