Java 总结 1118/1119

A: Map集合:
Map集合是一个双列集合,它是由key,value 组成的键值对集合
Map集合和Collection集合的区别:
Collection是单列集合  
添加方法是add
Map集合是一个双列集合
添加方法是put(k,v):
如果第一次在集合中输入
put会返回一个null
如果不是第一次输入 就会返回上次输入的键的值
如果两个输入的键的值一样,那么第二次输入的值就会覆盖掉
第一次输入的值 以此往复

HashMap<K,V>     TreeMap<K,V>
双列集合的遍历
1)  keySet:
Set<E> keySet  = 集合对象.keySet;
这个方法是将集合的键值取出来 放到一个Set集合中去
然后通过Map集合中的get(key)方法(同过键)来获取值
for(E e : keySet){
System.out.println(e+"---"+集合对象.get(k));
}
2)  entrySet:
Set<Entry<K,V>> entrySet = 集合对象.entrySet;
这个方法是将集合的键和值都取出来 放到一个Set集合中去
然后通过增强for循环遍历该Set集合
for(Entry<K,V> e : entrySet){
System.out.println(e);
}


B: Collections类:
这个类是针对集合操作的一个方法类
sort:
public static <T extends Comparable<? super T>> void sort(List<T> list)
根据元素的自然顺序进行排序
还有一个比较器排序 参照于TreeSet的比较器排序
shuffle:
public static void shuffle(List<?> list)
打乱集合顺序
reverse:
public static void reverse(List<?> list)
将集合反转

注意:
Collections的以上方法只能用于List集合


C: Exception类:
此类属于一个异常类
Exception和Error都继承于Thorwable
Exception:
编译时期异常: 只要不属于运行时期的异常都为编译时期异常,如IOException, parseException(解析异常)
Java程序必须给予处理,否则编译不通过(必须显示处理)

出现的原因:
1)语法有问题
2)sun公司提供的方法本身就需要抛出这个异常
运行时期异常:
RuntimeException: 一般是因为自己编写的代码有 有问题 
如: NullPointException (空指针异常)
可以不处理 也可以像编译时期异常那样显示处理
处理异常:
1) try catch  finally
try{
代码--> 一旦有问题出现
}catch(异常类名 变量名){
输出语句处理
}catch{
.....
}..
针对多个异常,jdk1.7之后
try{
代码--
}catch(异常类名1 | 异常类名2 ... 变量名){

}
两个异常类是并列关系
实际开发中 个别异常个别处理
2) throws
在方法名后面抛出 跟异常类的名字 可以跟多个异常类名 中间用逗号隔开
实际开发中 尽量不要在main方法上抛出异常

throw和throws的区别
throws:
后面跟异常类名  在方法名后面抛出  
表示异常的一种可能性 调用者必须去处理
throw:
后面跟异常对象(匿名对象)  只能跟一个
在方法的语句中抛出  表示异常的绝对性
由方法的某个语句去处理

try中的程序一旦出现问题,那么JVM(Java虚拟机)就会抛出一个异常,然后与catch里面的异常对比
如果一样,就会生成一个异常对象 ,这个异常对象可以调用一些异常方法


getMessage()
toString()
printStackTrace()

final finalize finally的区别:

final: 
修饰类: 该类不能被继承
修饰方法: 该方法不能被重写
修饰变量: 此变量变为一个常量  自定义常量  public static final int INT = 100;
finalize:
它表示通过gc垃圾回收器回收不用的对象或者变量,
System.gc()的实质是调用Object类中的finalize()方法
表示回收没有更多引用的对象或者变量
finally:
不能单独使用   
try....catch....finally...是用来释放资源的
finally一定会执行
除非Java虚拟机JVM退出
System.exit(0)

如果catch中有return语句 
那么finally也会执行
在catch中的return之后执行

D: 如何定义个异常类:
//自定义的异常类要继承Exception或者RuntimeException
public class MyException extends Exception{
public MyException() {

}
public MyException(String message) {
super(message);
}
}

public class Teacher {
//在该方法中抛出自定义的异常 
public void chick(int a) throws MyException{
if(a>100 || a<0) {
throw new MyException("分数应该在0-100之间");
}else {
System.out.println("分数在正常范围内");
}
}
}
//测试类
public class Student {
public static void main(String[] args) {
Teacher t = new Teacher();
try {
t.chick(90);
}catch(MyException e){
System.out.println(e);
}
}
}



注意事项:
子类在继承父类的时候,如果父类中的方法抛出异常,那么子类重写该方法的时候抛出的异常不能比父类大
如果父类的方法没抛出异常,子类在重写父类的时候,只能捕获异常,不能抛出异常

E: File类:
常用构造方法:
public File(String pathname)
public File(String parent,String child)
public File(File parent, String child)
常用的方法:
public boolean mkdir() 创建此抽象路径名指定的文件夹, 如果已经有该文件夹就不会再创建了
publci boolean createNewFile() 创建文件,如果已经有这个文件,不再创建
该方法本身就会抛出一个异常 IOException
throws Exception
public boolean mkdirs() 创建次抽象路径名指定的目录,包括所有必须但不存在的父目录
public boolean delete()删除此抽象路径名表示的文件或目录
不能删除带有文件或者文件夹的目录
如果需要删除的话  必须逐一删除

File类中的重要功能:
public boolean renameTo(File file)重命名此抽象路径名表示的文件
1) 如果两个抽象路径名一直,那么只重命名
2) 如果抽象路径名不一致,

File类的判断功能:
public boolean isDirectory():判断是否是文件夹 经常用到
public boolean isFile():判断是否是一个标准文件 经常用到
public boolean canRead():判断是否可读
public boolean canWriter():判断是否可写
public boolean isHidden():判断是否是隐藏文件
public boolean isAbsolute():判断次路径名是否是绝对路径

File类中的获取功能:
public File getAbsolutePath():获取当前文件或者文件夹绝对路径
public String getPath():获取相对路径
public long length()返回由此抽象路径名表示的文件的长度
public long lastModified()返回此抽象路径名表示的文件最后一次被修改的时间
public String getName():获取名称

File类的高就获取功能:
public String[] list():返回对象是一个字符串数组,当前哪个一盘符下的所有的文件以及文件夹的字符串名称数组
public File[] listFiles():返回对象是一个File数组,当前哪个盘下的所有的文件以及文件夹的File数组

F: IO流: 
FileOutputStream类: 
针对输出流中写数据的方法:
public abstract void write(int b):将指定的字节写入到输出流中
打开文件会显示出b的ASC II码表中对应的值
public void write(byte[] b):将指定的字节数组写入到输出流中
public void write(byte[] b, int off,int len):将字节数组的一部分写入到输出流中

换行符;
window : \r\n
Linux : \n
Mac : \r
public FileOutputStream(File file,boolean append)
boolean写为true 表示可以继续写入

猜你喜欢

转载自blog.csdn.net/a1003873553/article/details/78613722
今日推荐