一、Collection
1、定义: 一个动态的对象数组,集合中的对象内容可以任意扩充。。特点:性能高、容易扩展和修改。常用子类:List和Set。
2、子类——List
(1)可存放任意的数据,而且在List接口中内容是可以重复的。
(2)子类:ArrayList 和Vector
(3)常用操作:
判断集合是否为空:boolean isEmpty()//返回布尔值
查找指定的对象是否存在:int indexOf(Object o)//存在会返回元素位置,否则返回-1
//换成lists =new ArrayList<String>();// 同样可以执行。
比较:
区别 ArrayList Vector
退出时间 JDK1.2之 后 JDK1.2之后
性能 异步处理,性能高 同步处理,性能低
线程安全 否 是
3、子类——Set
(1)不能加入重复元素,可以排序。
(2)
4、Iterator接口
(1)集合输出的标准操作:标准做法,使用Iterator接口。
(2)操作原理:Iterator是专门的迭代输出接口,迭代输出就是将元素一个个进行判断,判断其是否有内容,如果有内容则把内容取出。
在迭代输出的时候不能对集合进行删除//关于remove的使用
5、Map接口
(1)保存形式:key-value形式
(2)常用子类:
HashMap:无序存放,key不允许重复
Hashtable:无序存放,key不允许重复
(3)map.keySet();//得到所有的键key
map.values();//得到所有的值
二、File介绍
1、如何在Eclipse中查看JDK类库的源代码?
答:(1)点 “window”-> "Preferences" -> "Java" -> "Installed JRES"
(2)选中所使用的JRE,然后点边上的 "Edit...", 会出现一个窗口(Edit JRE)
(3)选中rt.jar文件,展开后,可以看到“Source Attachment:(none)”,如下图。(我已经操作好,所以显示不为none)
选中“Source attachment”并点开右边的“Source Attachment”。
(4)如下图,选中“External location”,并点击右侧“External File”。选择“src.zip”,注意路径,按照自己安装的路径去查找。下面一路确定即可。
2、在IDE中选中所需查看的类,方法,字段,直接按 F3 键即可。以常用的“System.out.println()”为例,选中“out”,按“F3”打开“System.class”并定位到“out字段”。
3、
4、文件创建、删除、
(1)创建
按F5刷新,可以在目录里看到。在声明时,“路径/文件名.文件名格式”。其中,"../"表示上一级。其中,"../../"表示上上一级。
(2)删除用file.delete();
(3)重命名的话,用已经声明的一个文件名就好。
File newname=new File("new hello.txt");
file.renameTo(newname);
(4)移动的话,在已经声明的文件之后判断一下文件是否存在。存在的话,执行 File newname=new File("bin/new hello.txt");
就可以实现移动。文件夹结构必须处于同一个分区。不同分区的只能拷贝。
5、文件夹创建、重命名、删除
(1)创建(本级、多级)
(2)重命名(在同一分区)
(3)删除(空文件夹)
6、文件属性的读取
7、文件属性设置
8、遍历文件夹
9、文件简单的读和写
三、Java多线程
1、区别线程和进程
(1)进程:可包含多个线程(大于等于1)。指执行中的程序。
(2)线程:程序中单独顺序的控制流。线程是程序中的顺序控制流,只能使用和分配给程序的资源和环境。
(3)单线程:程序中只存在一个线程,主方法就是一个主线程。
(4)多线程:一个程序中执行多个任务,这样可以更好的使用CPU资源。
2、线程的实现
(1)两种实现方法:继承Thread类和实现Runnable接口
(2)Thread类:在java.lang包中定义的。
格式:
class className extends Thread {run(){};}
(3)Runnable接口同Thread类。
次数太少不必并行使用CPU资源。
3、线程的状态
(1)创建状态:准备好了一个多线程的对象
(2) 就绪状态:调用了start()方法,等待CPU进行调度。
(3)运行状态:执行run()方法
(4)阻塞状态:暂时停止执行,可能将资源交给其他线程使用
(5)终止状态(死亡状态):线程销毁
4、线程的常用方法
(1)获得当前线程对象:currentThread()
(2)获得线程名称:getName()
(3)判断线程是否启动:isAlive()
(4)线程的强行运行:join()
(5)线程的休眠:sleep()
5、线程的优先级
(1)按界别来说 1-MIN_PRIORITY、5-NORM_PRIORITY(默认)、10-MAX_PRIORITY。
(2)
6、线程同步
(1)同步:加关键字“synchronized”,称为同步代码块。即
synchronized(同步对象){需要同步的代码块;}
同步方法: synchronized void 方法名称(){}
(2)死锁:两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象。
(3)线程运行周期:
四、Java的输入与输出
1、作用:读取设备上的数据,硬盘文件、内存、键盘、网络。。。。
2、分类:输入流和输出流(按数据走向),字节流和字符流(按处理的数据类型)
字节流:可以处理所有类型的数据,如MP3,图片。在Java中所有类均以Stream结尾。在读取时,读入一个字节返回一个字节。
字符流:处理纯文本数据,如TXT。在java中所有类均以Reader、Writer结尾。在读取时,读入一个字符返回一个字符。
3、区别 字符、 字节、编码
(1)字节:通过网络传输信息或者在硬盘或内存中存储信息的单位,是计算机信息技术用于计量存储容量和传输容量的一种计量单位。1个字节等于8位二进制。如0x01..
(2)字符(char):是人们使用的记号,抽象意义上的一个符号。
(3)字符集(charset)/编码:规定了可以使用哪些字符和每个字符 用一个字节存储还是多个字节存储。
ANSI字符串在内存中,“字符”以ANSI编码形式存在的,一个字符可能使用一个字节或者多个字节表示。
UNICODE代表的字符内容是不变的,有很多标准:UTF-8、UTF-7、UTF-16。(国际间)
4、用字节流读写数据
在IOS需指明“UTF-8”。如在String inpstr=new String(input,"UTF-8");注意流打开一定要进行流关闭,下图没写,自己补充。
5、使用带缓冲的字节流读写数据(速度更快)
6、使用字符流读写数据
7、使用带有缓冲的字符流读写数据
8、FileReader与FileWriter
9、 RandomAccessFile随机文件读写
读取结果有问题,还没有查出来具体的问题。
10、使用Apache IO库操作IO与文件
(1)下载jar包地址:http://commons.apache.org/proper/commons-io/download_io.cgi
(2)FileUtils 进行查验看是否可以用。