零基础学习java(八)

来源:互联网 发布:农村淘宝发展现状 编辑:程序博客网 时间:2024/04/28 01:16

java语言基础知识

1:静态导入
(1)以前的导入是导入到类的级别,现在可以通过静态导入,导入到方法的级别。
(2)格式: import static java.xxx.xxx.方法名; 要能看懂这种东西,自己一般不用。
可变参数:针对在写一个方法的时候,不知道具体要有多少个形式参数的时候。
java提供了可变参数的用法。
(1)格式: 修饰符 返回值类型 方法名(数据类型... 变量) { }

A:变量其实是该数据类型的一个数组。B:形式参数如果有多个的话,可变参数只能是最后一个。C:数据类型要一致。
(3)Arrays工具类的asList方法的使用。注:用数组转换后的集合的长度不能发生改变。
2:Map集合 (1)Map集合存储是键值对形式的元素。
(2)Map和Collection集合的区别
A:Map集合存储的是键值对形式的元素。 Collection集合存储的是单个的元素。
B:Map集合的键是唯一的。                       Collection的儿子Set集合元素是唯一的。
C:Map集合的值是可以重复的。        Collection的儿子List集合的元素是可以重复的。
(3)Map集合的功能概述:A:添加功能:

V put(K key,V value) //如果键不存在,就是添加功能。如果键存在,就是修改功能。返回的是被修改前的值。
B:删除功能 void clear()   //清空集合中的所有键值对元素。
V remove(Object key)         //根据键删除键值对元素,并把值返回。
C:判断功能
boolean containsKey(Object key)   //判断集合中是否包含指定的键。
boolean containsValue(Object value)   //判断集合中是否包含指定的值。
boolean isEmpty()                              //判断集合是否为空。
D:获取功能 Set<Map.Entry<K,V>> entrySet():
V get(Object key)            //根据键去集合中获取值。Set<K> keySet()              //返回的是集合中所有键的元素。
Collection<V> values()    //返回的是集合中所有值的元素。
E:长度功能 int size()  //集合中的键值对元素的对数。
(4)Map集合的遍历:
通过键找值a:获取所有键的集合。keySet()。b:遍历键的集合,得到每一个键。增强for。c:根据键去map集合中找值。get(K key)。
通过键值对对象找键和值:a:获取所有键值对对象的集合。entrySet()。b:遍历键值对对象的集合,得到每一个键值对对象。增强for。c:根据键值对对象获取键和值。getKey(),getValue()。
(5)Hashtable和HashMap的区别
A:HashMap 线程不安全,效率高。允许null键和null值。
B:Hashtable 线程安全,效率低。不允许null键和null值。
3:Collections工具类的使用。
(1)Collections是针对集合进行操作的工具类。
(2)Collection和Collections的区别
A:Collection 是集合的顶层接口,定义了集合中的共性功能。
B:Collections 是针对集合进行操作的工具类。提供了排序,查找等功能。
(3)Collections常见的功能:A:排序B:二分查找C:最大值      D:反转E:随机置换

4:异常
(1)程序出现的不正常的情况。
(2)异常的继承体系结构:
Throwable
————|--Error 严重的问题,一般我们解决不了。
————|--Exception
——————|--RuntimeException运行时期异常,这种问题一般要修正代码。
——————|--非RuntimeException编译时期异常,必须进行处理,否则代码不能够通过。
(3)JVM针对异常的默认处理方案:
默认情况下,会把异常的类名,原因,及错误出现的位置输出在控制台。并从这个地方终止程序运行。
(4)我们自己如何针对程序进行处理:
A:try...catch...finally
基本格式:
try {
可能有问题的代码。
}catch(异常类名 变量名){
异常的处理。
}finally {
释放资源。(IO,数据库操作比较常见)
}
变形格式:try...catch... try...catch...catch... try...catch...finally...
try...catch...catch...finally...try...finally...
针对一个try多个catch的情况:父异常必须放最后。
try{
}catch(){
}catch(){
}
JDK7的新特性:这个要求都是平级关系。
try{
}catch(异常1 | 异常2 ... 变量){}
B:throws:后面跟的是异常类名。位置:在方法的()后面。注:能try...catch就不要throws。
(5)编译时期异常和运行时期异常的区别
A:编译时期异常 必须进行处理的。B:运行时期异常 可以处理,也可以不处理。
(6)throws和throw的区别
A:throws 位置:在方法()后面,跟的是类名。
如果后面根据的是RuntimeException及其子类,那么,该方法可以不用处理。
如果后面根据的是Exception及其子类,那么,必须要编写代码进行处理,或者调用的时候抛出。
B:throw 位置:在方法中,跟的对象名称。
如果方法中,有throw抛出RuntimeException及其子类,那么,声明上可以没有throws。
如果方法中,有throw抛出Exception及其子类,那么,声明上必须有throws。
(7)自定义异常:只需要继承自Exception或者RuntimeException。提供构造方法即可
5:File
(1)IO流操作最主要的作用就是上传文件和下载文件。  而File类是java提供给我们用来表示文件的类。
(2)File的构造方法:A:File file = new File("d:\\a.txt");B:File file = new File("d:\\","a.txt");
C:File file = new File("d:\\"); 
      File file2 = new File(file,"a.txt");
(3)File类的常见功能:
A:创建功能创建文件:public boolean createNewFile():如果文件存在,就不创建。否则,创建。
  创建文件夹:public boolean mkdir():如果文件夹存在,就不创建。否则,创建。
public boolean mkdirs():如果多级文件夹存在,就不创建。否则,创建。
B:删除功能 public boolean delete() 删除文件或者文件夹。
C:重命名功能 public boolean renameTo(File dest):如果路径相同,就是改名。如果路径不同,就是剪切。
D:判断功能:public boolean canRead()
//是否可读。public boolean canWrite()//是否可写
public boolean isHidden()
                              //是否隐藏。 public boolean isDirectory()//是否是文件夹
public boolean isFile()
//是否是文件。public boolean exists()               //是否存在
E:获取功能:public String getAbsolutePath()
                //获取绝对路径
public String getPath()
                              //获取相对路径
public String getName()
                            //获取名称
public long length()
                                   //获取文件字节数
public long lastModified()
                         //获取最后一次修改时间的毫秒值
F:高级获取功能
public String[] list()
                                   //获取指定目录下的所有文件或者文件夹的名称(String)数组。
public File[] listFiles()
                               //获取指定目录下的所有文件或者文件夹的文件(File)数组。
G:带过滤器的高级获取功能:public String[] list(FilenameFilter filter):
(4)例获取指定目录下指定后缀名的文件的名称。
a:基本做法。先获取所有的,然后遍历的时候,判断。
b:用过滤器的做法。先判断,获取,最后遍历。

6:递归:

(1)方法定义中调用方法本身的现象。例:老和尚给小和尚讲故事。
(2)递归的注意事项:A:递归一定要有出口,否则就是死递归。B:递归的次数不能太多,否则内存溢出。
C:构造方法不能递归使用。
(3)递归解决问题的基本思想:A:分解和合并。B:找哪些东西出口与规律
(4)递归的题目:1:递归求阶乘2:兔子问题3:递归输出指定目录下指定后缀名的文件绝对路径4:递归删除带内容的目录
7:IO流的作用:上传文件和下载文件。
上传文件: 数据源:本地         目的地:服务器
下载文件: 数据源:服务器目的地:本地
(1)IO流的分类:
A:流向 输入流-读取数据输出流-写出数据
B:数据类型:字节流:字节输入流、字节输出流。字符流:字符输入流字符输出流。
一般来说,如果没有说明按照哪种类型分,指的是按照数据类型分。
(2)什么时候使用字符流,什么时候使用字节流。
如果一个要操作的文件,通过记事本打开并能够读懂其内容,就可以考虑使用字符流。否则,就使用字节流。
什么都不知道,就用字节流。
(3)IO的基类及具体类
|--字节流
字节输入流:InputStream、FileInputStream。
字节输出流:OutputStream、FileOutputStream。
|--字符流

字符输入流:Reader、FileReader。
字符输出流:Writer、FileWriter。
(4)FileWriter写数据的步骤及代码体现:
步骤: A:创建字符输出流对象。B:调用write方法。C:释放资源
代码体现:
FileWriter fw = new FileWriter("fw.txt");
fw.write("hello,io");
fw.close();
(5)FileReader读数据的步骤及代码体现:
步骤:A:创建字符输入流对象。B:调用read方法,并把数据显示在控制台。C:释放资源。
代码体现:

FileReader fr = new FileReader("fr.txt");//方式1:一次读取一个字符int ch = 0;while((ch=fr.read())!=-1) {System.out.print((char)ch);}//方式2:一次读取一个字符数组char[] chs = new char[1024];int len = 0;while((len=fr.read(chs))!=-1) {System.out.print(String.valueOf(chs,0,len));}fr.close();

8:字节流(1)继承体系InputStream——FileInputStream、OutputStream、FileOutputStream。(1)字符高效流:BufferedReader 、BufferedWriter。(2)字节高效流:BufferedInputStream、BufferedOutputStream。(3)字符高效流的特殊功能:BufferedReader、String readLine()。BufferedWriter 、void newLine()。(4)IO流的使用文本文件的复制:9种。 字节流:4种字符流:5种。二进制流数据的复制:4种。转换流:(1)键盘录入写到文本文件。用Scanner实现。(2)用System.in录入数据,写到文本文件。BufferedReader br = new BufferedReader(new InputStreamReader(System.in));理解:从字节到字符使用:从字节到字符(3)把文本文件的数据,用System.out写到控制台BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));理解:从字符到字节使用:从字节到字符

打印流:(1)打印流仅仅是用来写数据的,没有读取数据的。(2)打印字节流 PrintStreamSystem: public static final PrintStream out。 System.out.println();  打印字符流 PrintWriter(3)特点:A:可以把任意类型的数据写到文本文件。B:如果启动了自动刷新,在调用println()的方法的时候,可以自动刷新,并换行。C:可以直接对文件进行操作。问题:哪些流可以直接对象文件进行操作。看API,流的构造方法,如果可以同时有File和String类型的参数,就可以。

BufferedReader br = new BufferedReader(new FileReader("a.txt"));PrintWriter pw = new PrintWriter(new FileWriter("b.txt"),true);String line = null;while((line=br.readLine()) != null) {pw.println(line);}pw.close();br.close();


0 0
原创粉丝点击