1.集合:(Collection超类接口)
List(按序放置按索引获取)(增add删remove,delet,clear改update,set查get)toString转换成字符串
(1)ArrayList(变长(类似数组,比数组多了增删改查))HashMap<String, Fruit> fruits = new HashMap<>();
(2)Vactor(其他类似,方法上加入了synchronized,多了“线程安全”,确保同时只能有一个人操作,如果有其他人进来,等待队列)效率降低
(3)Linkedlist(双向链表-插入修改快,队列处理-先进先出,后进先出)+first-last先进先出 +pop-push后进先出
Set(按集合内置顺序放置)
(1)HashSet(根据hash值排序,放置顺序并不是排序顺序,所以无索引,所以全部不允许重复,一旦重复就会覆盖)无get,只能循环遍历,查找速度目前最快,可以重复排除,并且内置的排序 (LinkHashSet类似于HashSet)
(2)TreeSet(根据内容值放置,排序集合,必须支持Comparable接口,因为要比较)
Map(键值对集合,以键(index)的内容进行查询)
(1)HashMap集合
HashMap<Integer, String> map=new HashMap<>();
HashMap<Integer, String> map=new HashMap<>();
map.put(1, “111”);
map.put(2, “ssss”);
map.put(1, “sss”);//覆盖
方法 contain put get remove
遍历
三种遍历方法
Set<Entry<String,String>> set=map.entrySet();
Set set1=map.keySet();
Collection aaa=map.values();
(2)Hashtable(线程安全(线程安全对空值不支持),方法上加入了synchronized)
(3)TreeMap(根据key值进行排序放置,必须支持Comparable)
(4)ConcurrentHashMap(完全替代Hashtable,更快)
2.异常处理
Throwable 所有错误
Error 不可捕获错误
Unresoved complilation problems编译错误
memory out error内存超出错误
Exception 可捕获错误(能被catch可用)
try{
//运行代码
}
catch(ArrayIndexOut’’’){
//输出数组错误解决方案
}
catch(Exception e){
//出现错误,解决方案(提示)
比如要求重输
}//超类放在最下面,因为这相当于是个滤网,有上下的过滤判断,按上下顺序分别多个
3.自定义异常***(创建位置)
1.创建异常类,继承exception
2.重写getMessage方法
3.触发异常,if ----throw new 自定异常();
4.在异常内加入属性+构造方法,详细描述错误信息
return age+“岁-年龄超过限制”
(1)
(2)
throw 抛出异常,到catch,有错误要解决(用在方法里面)
throws抛出异常,到方法外面,调用方解决(用在方法后面)
catch 解决错误(用在方法里面)
finally 必须运行,做收尾工作(return时才能使用,因为finally是在return中间状态运行的(网上说return是先执行)(用在方法里面)
{
throw可以不写在try中,可以不catch解决异常
不加catch代表我不解决,throws转到方法外头,在外头解决,如果外部解决不了,可以继续加 throws Exception往外抛异常
如果不加throws exception,就需要try catch 解决
}
printStackTrace();打印错误信息,禁止在for循环里面try
调试debug调试
断点:(双击)运行到断点时,线程挂起,
debug运行,让他在断点停下
查看修改变量/断点管理
控制运行 f5跳入 f6下一行 f7 跳出 f8继续下个断点
4.常见异常(先找异常,然后找对应代码)console窗口
(1)异常类型(2)异常信息,错误描述(3)异常栈,找到用户错误行
java.lang.NullPointerException空指针异常,调用null对象方法
java,langNumberFormatException数字转换错误
java.lang.ClassCastException 强制转换错误
java.lang.ArrayIndexOutOfBoundsException输入索引超出
IOException文件输入输出错误
SQLException数据异常
5.I/O流(read输入 write输出)
(1)创建流
(2)读写
(3)关闭流
读 就是输入流
写 就是输出流
I/O while 连续读取(读取位置不够时)
字符流
Reader r;输入
Writer w;输出
try {
FileReader w=new FileReader(“c://a.txt”);
char[] data=new char[10000];//内存缓冲区
int len=w.read(data);
data=Arrays.copyOf(data, len);去掉多余空间
System.out.println(new String(data));
w.close();
}
catch(IOException E){
E.printStackTrace();
}
try {
//这里加上true,是追加模式写内容,不会被覆盖
FileWriter f=new FileWriter(“c://a.txt”,true);//创建流
f.write(“sssssss”);//读写
f.close();//关闭流
}
catch(IOException E){
E.printStackTrace();
}
字节流
InputStream i;
OutputStream o;
try {
FileOutputStream f=new FileOutputStream("c://a.txt");
f.write("sssssss".getBytes());//唯一不同,字符串改成字节数组
f.close();
}
catch(IOException E){
E.printStackTrace();
}
try {
FileInputStream w=new FileInputStream(“c://a.txt”);
byte[] data=new byte[10000];//char数组变为字节数组
int len=w.read(data);
data=Arrays.copyOf(data, len);
System.out.println(new String(data));
w.close();
// FileOutputStream f=new //FileOutputStream(“c://a.txt”);
// f.write(“sssssss”.getBytes());
// f.close();
}
catch(IOException E){
E.printStackTrace();
}
文件的复制
https://blog.csdn.net/huanyinghanlang/article/details/78825958