【转】java_中常用的方法总结

81日 
练习: 
合理覆盖Cat数据类型的,equals()方法 
Cat.java 
覆盖 hashCode() 
返回的整型值是唯一的 
int    hashCode() 
用法: 
一般使用String提供hashCode的编码 +基本数据类型 
hashCode 生成原则: 
当对象内容一致时,生成的hashCode必须是一样的 
当对象内容不致时,生成的hashCode必须是唯一的 
HashtableTest1.java 
hashtable 中的key如果是自定义数据类型,那么它必须覆盖equals()hashCode() 
//考试 
1 hashCode() 
ArrayList * 
Hashtable * 
其他的存储方式: 
LinkedList     //特点:可以删除指定位置数据 
练习: 
LinkedList添加: 




打印出时为: DCBA 
LinkedListTest.java 
练习(MyQueueTest.java): 
模拟一个队伍(队列),去买票一个动作 
思路: 
模拟一个队列(add) 
模拟出列(removeXXXX) 
//先买票的人,先出队列——先入先出 
队伍是一个特殊数据结构, 
特点:FIFO(先入先出) 
HashSet        //不允许重复元素 
集合框架类的特点: 
1 Collection 接口是一组允许重复的对象 
2 Set接口继承Collection,但不允许重复使用自己内部的一个排列机制 
3 List接口继承Collection,允许重复,以元素安插的次序来放置元素,不会重新排列。 
4 Map接口是一组成对的键——值对象,即所持有的是key—value pairsMap中不能有重复的key。拥有自己内部机制。 
在集合框架类中有两大类接口: 
5.1 Collection 
5.2 Map 
注意:集合框架类——容器,容器中存储引用数据类型 
继承关系: 
接口 实现 历史集合类型 
Set HashSet 
TreeSet 
List ArrayList Vector 
LinkedList Stack 
Map HashMap Hashtable 
TreeMap Properties 
               
           
       
        
      
            
              

集合框架类解决的问题? 
变长数组 
操作的效率。 
集合框架类的特点: 
1 Vector 
2 ArrayList * 
3 Hashtable * 
4 HashSet 
5 Properties 
集合框架类的使用: 
声明 
private Vector vec; 
构造中实例化 
vec = new vector(); 
向容器中添加数据: 
vec.add(); 
练习: 
FILOTest.java 
第一个进来,最后一个出去 
FILO------栈 
练习: 
Student类作为Hashtablekey 
StudentHash 
1 Student 
2 StudentHash(主类
StudentHash.java 
82日 
练习: 
使用HashMap进行数据的存储,与遍历 
.keySet()    //返回key的集合(Set) 
.values()    //返回value的列表 (ArrayList) 
HashMapTest.java 
HashMapHashtable的区别: 
Hashtable是非同步的(效率高) 
HashMap是同步的(效率低) 
获得系统java的相关的环境变量: 
System.getProperties();    //可以返回 
Properties数据类型(是Map的子类),内容为系统的全部环境变量 
练习: 
打印输出系统中全部的环境变量: 
//2 了解Properties,还可以与文件系统交互 
PropertiesTest.java 
思路: 
1 Properties p = System…. 
遍历
复习: 
java.lang: 
String特点 
常用构造: 
String(byte[] bytes ) //byte型数组转换为字符串 
String(char[] ch)    //char型数组转换为字符串 
String(char[] value, int offset, int count ) 
//char[]转换为字符串,offset从那里开始(0) 
//count(char.length) 个数 
常用方法
1 char charAt(int index) 
String str = “ABC”; 
Char ch = str.charAt(0); 
ch ==A; 
2 String concat(String str)        //连接字符串==”+”号 
3 boolean equalsIgnoreCase(String anotherString)          //忽略大小写比较 
4 byte[] getBytes()           // 将字符串处理为byte[] 
5 int   indexOf(String str)   //判断字符串所在的索引位置,如果描述的字符串不存在,返回值为-1 
6 int lastIndexOf(String str)     //字符串所在的最后一个索引位置,如果描述的字符串不存在,返回值为-1 
7 int   length()     //返回字符串的长度 
8 String replace(char oldChar,char newChar)       //字符串替换 
9 boolean   startsWith(String prefix)     // 判断字符串的开头,是否有匹配的字符串 
10 boolean   endsWitn(String prerfix)     //判断字符串的结尾,是否有匹配的字符串 
11 String substring(int beginIndex, int endIndex) //字符串的截取 
12 char[]     toCharArray()    //将字符串处理为char[] 
13 String toLowerCase()        //将字符串处理为小写 
14 String toUpperCase()        //将字符串处理为大写 
15 String trim()              //除去字符串左右两边的空格 
16 StringBuffer             //初始化的容量16 
构造: 
StringBuffer()          //初始化容量 16 
StringBuffer(10)        //初始化容量 10 
StringBuffer(String str) 
方法: 
StringBuffer     append(float f)   // StirngBuffer添加内容 
int    capacity()     // 返回容量 
int    length()        // 返回StringBufferInt实际存储长度 
StringBuilde(效率高)==StringBuffer 
基本数据类型的包装包: 
Byte b = new Byte(); 
Int    Integer 
char   Character 
int a = Integer.parseInt(“11”); 
System常用的方法: 
System.gc(); 
System.exit(0);           //退出java程序,0代表正常退出,非0代表异常退出 
System.arraycopy()       //数组的拷贝 
System.currentTimeMillis()             //系统毫秒(1970) 
System.getProperties()             //系统环境变量 
Math 算术类: 
Math.abs()            // 绝对值 
max 
min 
random       //1.0 -- --0.0的随机值 
round              //四舍五入 
Runtime        // 获得系统运行环境,通常用于java调用 
//第三方应用程序(.exe) 
.exec(“ ”) 
java.util 
Date             //获得系统时间,不考虑时区 
构造: 
Date()                   //获得系统时间 
Date(long date)           //根据用户传入的系统毫秒获取时间 
方法: 
toString()                
格式化日期: 
java.text.SimpleDateFormat 
构造: 
SimpleDateFormat(String str) 
方法: 
String format (date) 
Calendar             //日期,可以考虑时区 
固定用法: 
Calendar cal = Calendar.getInstance(); 
//时区 
TimeZone tz = TimeZone.getTimeZone(“GMT + 8:00”); 
Calendar cal = Calendar.getInstance(tz); 
常用的方法: 
Date getTime();              //返回当前系统时区 
int get (int filed);                // Calendar.静态变量 
Random 
构造: 
Random() 
方法: 
int nextInt(xxxx)           //返回指定范围的随机数字 
需要可以变长的数组,可以提高效率 
集合框架类:一组相同元素的集合。 
1 Vector    
构造: 
Vector() //无参构造,初始化容量为10 
方法: 
Boolean add(E   e)               //向容器中存储数据 
Void addElement (E obj)        //向容器中存储数据 
elements()        //Enumeration提供容器的地址 
2 Enumeration //应用于容器元素的遍历 
方法: 
boolean hasMoreElements()     //判断指针是否还有数据 
E nextElement() //返回当前的元素,并且指针下移 
ArrayList 
构造: 
ArrayList() //初始化容量 10 
方法: 
add() 
iterator()                    //Iterator() 提供容器的地址 
Iterator                   //遍历容器中的元素 
方法: 
boolean hasNext()             // 判断指针是否还有数据 
E next() //返回当前的元素,并且指针下移 
Vector ArrayList的区别: 
Vector效率低,线程同步 
ArrayList 效率高,线程非同步 
Hashtable            //存储数据时,通过key,value的方式成对存储 
//只要知道key可以一次性操作value 
方法: 
put(key,value)          //Hashtable容器存储数据 
elements()            //返回Enumeration value的地址 
key()                 //返回Enumeration 提供key的地址 
E get(key)              //根据表述的key一次获得value 
remove(Object key) //根据表述的key删除value 
Hashtablekey是一个自定义的数据类型,那么这个自定义类型,必须合理覆盖Object; 
public boolean equals(Object obj) 
public int hashCode() 
HashMap(同步
LinkedList            //链表——提供了方便的操作方法 
方法: 
addFirst() 
removeFirst() 
addLast() 
removeLast() 
继承关系: 
Collection 
1 Set -------不允许重复数据 
2 List ---------允许重复数据 
Collection list = new ArrayList(); //面向接口 
Map<k , v> ------成对存储 
使用官方类库方法: 
结合面向对象的思想 
1这个类的作用 
1这个类的构造 
1这个类的常用方法 
一些特殊类的固定用法 
83日 
java.io           //为硬盘文件的读,写提供功能 
File     //java中就代表磁盘上的一个文件 
        //它只可以访问这个文件的属性,并且它可以创建,删除文件,但是,它不可以控制文件中的内容 
构造: 
File(String pathname) 
示例: 
声明 
File f; 
构造中初始化 
//f代表当前目录下的new.txt 
f = new File(“new,txt”); 
方法: 
boolean createNewFile()     //新建一个空文件 
boolean delete()            //删除这个文件 
练习: 
在当前目录下创建一个新的文件 
判断这个文件是否存在 
1.1 不存在,则创建一个新的文件 
1.2存在,则输出这个文件的修改时间 
新建项目:IO 
新建类:FileTest.java 
输出文件产相关信息 
2.1 这个文件的名字 
2.2 这个文件的绝对路径 
I/O的基本原理: 
流(stream):流是指在计算机的输入输出之间运动的数据序列。是用于I/O编程的抽象概念,表示线性的,顺序的输入和输出的数据流。 
流分为两类: 
输入流:代表从外设流入计算机的数据序列:输入流:源流(source stream) 
输出流:代表从计算机流向外设的数据序列:输出流:目的流(sink stream) 
java中流的分类: 
主体是程序 
字节流---------代表传输的数据类型为byte类型,1字节 
1.1 InputStream //可以从磁盘中读取文件 
1.2 OutputStream //可以向磁盘中的文件写入内容 
字符流---------代表传输的数据类型为char类型,2字节 
2.1 Reader(输入流):可以从磁盘中读取文件 
2.2 Writer(输出流):可以向磁盘中的文件写入内容 
使用字节流: 
练习:ByteStream中实现文件的写入,读取 
使用FileOutputStream hello.txt中写入内容“MyFirstOutput” 
1.1 FileOutputStream 的构造: 
FileOutputStream(File file) 
FileOutputStream(File file, Boolean append) 
//append参数:为true,将会以追加模式进行写操作 
           false,将会覆盖原有文件 
1.2 方法: 
   void write(byte[] b) 
   void close()        //释放资源 
使用FileInputStream() 
2.1 构造 
2.2 方法 
int read(byte[] b) 
//将读出的内容存储到byte[] 中,并且返回数组的长度 
操作资源三大步: 
打开 
操作(读,写) 
关闭 
ByteStream.java 
练习:使用java实现copy指令: 
MyCopy 
要求:java MyCopy args1 args2 
结果:将args1中的内容copyargs2 
思路: 
1、从args1中读取内容 
2、将读取的内容写入到args2 
书写: 
1、考虑需要的属性 
2、构造初始化属性 
3、方法实现copy 
int read() //无参read方法 返回byte型数据 
int read(byte[ ] b ) //返回读取内容的长度 
85日 
字符流:char 
FileReader 
构造: 
FileReader(String filename)       // 以参数中的文件名,创建输入字符流 
FileWriter 
练习: 
FileRW.java 
使用字符流实现文件的读写 
注:程序结构参考ByteStream 
字符流的特点: 
由于字符流在write()实现时,使用了缓冲机制,所以在write()完毕后,必须同步缓冲区。 
调用: 
flush(); 
或者 
close(); 
System.in    //可以接收用户在终端的输入 
int read() //返回用户在程序运行过程中的键盘输入,为此输入的ascii码 
System.in.read(); //程序会阻塞状态,只有当用户输入字符,并且按下回车键程序,才会继续运行 
ReadTest.java 
流链: 
目的: 
在实际开发中,提高基本的字节流或者字符流的读取效率(读写效率)和更方便的操作机制(除了char,byte,String),还可以操作其他数据类型。 
注意:一个程序很少只用一个流类来处理数据,通常都有使用一系列流类叫流链来处理。 
字节流: 
BufferedInputStream 
BufferdeOutputStream 
//特点:为基本的I/O操作,提供缓存区域 
//提高字节流的操作效率 
BufferedTest.java 
DataInputStream 
DataOutputStream 
//特点:为各种基本,特殊数据类型提供操作方式 
DataTest.java 
输入流量 
DataSource-àFileInputStream -àBufferedInputStream --àDataInputStream -àProgram 
输出流量 
Program -à DataOutputStream-à BufferedOutputStream -àFileOutputStream àDatasink 
练习: 
字符流版本的,MyCopy 
MyCharCopy.java 
流链: 
字节流的流链 
字符流的流链 
BufferedReader 
BufferedWriter 
//提高I/O操作效率 
BufferedRW.java 
Alt + shift + z          //自动写出异常 
System.in.read( ); 
System.in //java 中的标准输入流 
ReadTest.java 
86日 
将对象存入到文件中(序列化存储)
ObjectSave.java 
手工实现步骤: 
User数据类型的构造,封装,进行编写 
使用DataxxxStream进行读写; 
User对象的数据进行拆分(setxxx,getxxx) 
序列化存储实现: 
ObjectInputStream 
ObjectOutputStream 
//对于对象的读和写 
方法: 
Object readObject() 
void writeObject(Object obj) 
注意:读或写的对象,必须实现Serializable (序列化)接口 
示例: 
//这个对象支持了序列化存储 
//可以使用readObject () || writeObject () 方法了 
class User implements Serializable 


ObjectSerializable.java 

回顾:java.io 
1 File //特点:代表磁盘的文件,只可以访问文件的属性 
流的概念:只要计算机中线性的,顺序的数据输入,输出 
输入流: 
输出流: 
java的角度: 
字节流: 
InputStream        //读取内容 
OutputStream       //写入内容 
特点:基本数据类型byte 
字符流: 
Writer: 
Reader: 
特点:基本数据类型char 
字节流和字符流的应用: 
字节流: 
FileInputStream 
FileOutputStream 
字符流: 
FileWriter 
FileReader 
流链(包装流) 
特点: 
增加I/O的操作效率。(分配了一段内存-----缓冲区) 
提供名种基本数据类型和特殊类型的操作机制 
字节流: 
1 BufferedInputStream 
BufferedOutputStream //特点:提高I/O操作效率 
2 DataInputStream 
DataOutputStream //特点:提供基本,特殊类型操作 
字符流: 
1 BufferedReader             //特点:readLine(); 
BufferedWriter 
序列化存储: 
特点:将对象进行存储,读取 
1 ObjectInputStream 
ObjectOutputStream 
注意:要序列化存储对象必须实现:Serializable 接口 
大练习: 
使用 
java.lang 
java.util 
java.io 
实现一个用户的管理查询系统 
功能: 
添加用户 
浏览用户 
删除用户 
查找用户 
退出程序 
UserManager文件夹 
解决数据的累加问题: 
程序一运行的时候,就将文件中的所有数据保存在内存中。 
EOFException //文件指针已经到末尾时,还要继续读取 
User user 
User = (User)is.readObject(); 
While(user != null) 

array.add(user); 
ois.readObject(); 

ArrayList: 
int size() //可以返回ArrayList中的元素个数 
E get(int index) //根据用户传入的索引值,返回所存储数据 
remove(int index) //删除指定位置的元素

posted on 2013-03-23 09:45  jixiuyan  阅读(267)  评论(0编辑  收藏  举报