一、Exception异常
相对是一个小问题 一般是代码逻辑问题会产生该异常。亦可捕获异常进行处理,常处理分为两种
- 非RuntimeException(编译时期异常)
- RuntimeException(运行时期异常)
package com.ppl.exTry;
/*
com.ppl.com.ppl.exTry:学习项目
@user:广深-小龙
@date:2022/1/16 12:34
*/
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class TryCatch {
public static void main(String[] args) throws MyException {
// 万能抛异常
try {
String strTime = "2022-01-15 22:30:36";
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.parse(strTime, pattern);
System.out.println(localDateTime.format(pattern));
System.out.println(5 / 0);
} catch (Exception e) {
System.err.println("格式错误 strTime error:" + e.getClass() + e.getMessage());
}
// 主动抛异常
try {
SimpleDateFormat f = new SimpleDateFormat("");
f.parse("");
} catch (Exception e) {
throw new RuntimeException("主动抛出异常:error RuntimeException");
}
// 自定义异常
ExTest.exTest(5);
}
}
class MyException extends Exception {
public MyException() {
}
public MyException(String err) {
super(err);
}
}
class ExTest {
// 自定义异常
public static void exTest(int num) throws MyException {
if (num > 10) {
System.out.println(num);
} else {
throw new MyException("自定义异常---错误!!!");
}
}
}
自定义异常类,继承Exception或者RuntimeException,写多个构造方法
二、Collection集合
1、什么是集合? 集合就是个容器,用来装东西。比如数组容器、集合容器。
2、集合容器的特点?
- 1.集合容器的长度是可以变化的
- 2.集合容器只能存储引用数据类型
- 3.一个集合容器中可以存储不同引用数据类型的数据
3、集合容器和数组容器的区别?
- 1.集合容器的长度是可以变化的,数组容器一旦初始化长度就不能改变了
- 2.集合容器只能存储引用数据类型,数组容器既可以存储基本数据类型,也可以存储引用数据类型
- 3.一个集合容器中可以存储不同引用数据类型的数据,一个数组容器中只能存储同一种数据类型的数据
package com.ppl.object;
/*
com.ppl.object:学习项目
@user:广深-小龙
@date:2022/1/16 19:54
*/
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.function.Predicate;
public class Obj_Collection {
public static void main(String[] args) {
new MyCollection().ToArr();
}
}
class MyCollection {
public MyCollection() {
// 创建集合容器
Collection c = new ArrayList();
// 添加元素
c.add("字符串");
c.add(123);
c.add(true);
System.out.println("c:" + c);
// 添加集合
Collection c1 = new ArrayList();
c1.addAll(c);
System.out.println("c1:" + c1);
// 删除元素
c1.remove(true);
System.out.println("c1删除元素:" + c1);
// 按照条件删除元素
c1.removeIf(
new Predicate() {
@Override
public boolean test(Object o) {
// 判断o(也就是每个元素)是否是Integer类型,true就删除该元素
return o instanceof Integer;
}
});
System.out.println("c1 removeIf:" + c1);
// 清空集合
c1.clear();
System.out.println("c1 清空集合:" + c1);
// 集合容器长度
System.out.println(c.size());
// 判断集合中是否包含指定元素,返回布尔值
System.out.println("判断集合中是否包含指定元素:" + c.contains(true));
// 判断集合是否为空,返回布尔值
System.out.println(c1.isEmpty());
}
public void ToArr() {
// 转为数组,for遍历
System.out.print("for遍历:");
Collection c = new ArrayList();
c.add("a");
c.add(123);
c.add(true);
Object[] obj = c.toArray();
for (int i = 0; i < obj.length; i++) {
System.out.print(obj[i] + " ");
}
System.out.println();
// 迭代器遍历
System.out.print("迭代器遍历:");
Iterator it = c.iterator();
while (it.hasNext()) {
Object o = it.next();
System.out.print(o + " ");
}
// 增强for循环
System.out.println();
System.out.print("增强for循环:");
for (Object o : c) {
System.out.print(o + " ");
}
}
}
三、List
1、List接口
List集合的特点?
- 1.有序的(存入的顺序和取出的顺序是一样的)
- 2.元素可以重复的
- 3.有索引的
2、常见的成员方法?
- 和上面的Collection是一样
- void add(int index, Object element):在指定的索引处添加元素
- Object get(int index):获取指定索引处的元素
- Object remove(int index):删除指定索引处的元素
- Object set(int index, Object element):修改指定索引处的元素,返回被修改的数据
package com.ppl.object;
/*
com.ppl.object:学习项目
@user:广深-小龙
@date:2022/1/16 17:21
*/
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Obj_List {
public static void main(String[] args) {
// 创建集合
List list = new ArrayList();
// 添加元素
list.add("a");
list.add(123);
list.add(true);
System.out.println(list);
// 查询index的值
System.out.println("查询index的值:" + list.get(0));
// 修改元素
list.set(0, "被修改了");
System.out.println("修改元素:" + list);
// index删除元素
list.remove(1);
System.out.println("index删除元素:" + list);
// 遍历方式一:iterator迭代器
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next() + " ");
}
System.out.println();
// 遍历方式二:转数组遍历
Object[] obj = list.toArray();
for (int i = 0; i < obj.length; i++) {
System.out.print(obj[i] + " ");
}
System.out.println();
// 遍历方式三:obj
for (Object o : list) {
System.out.print(o + " ");
}
System.out.println();
// 遍历方式四:利用list的get进行普通for
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + " ");
}
}
}
四、实现类:ArrayList与LinkedList
重点掌握这两个实现类。
1、ArrayList集合的特点?成员方法和List一样
- 1.有序的(存入的顺序和取出的顺序是一样的)
- 2.元素可以重复的
- 3.有索引的
package com.ppl.object;
/*
com.ppl.object:学习项目
@user:广深-小龙
@date:2022/1/16 21:42
*/
import java.util.ArrayList;
public class Obj_ArrayList {
public static void main(String[] args) {
// 创建集合
ArrayList arr = new ArrayList();
// 添加元素
arr.add("a");
arr.add(123);
arr.add(false);
// 其它方法、遍历和List是差不多的
}
}
2、LinkedList实现类
LinkedList集合的特点?
- 1.有序的(存入的顺序和取出的顺序是一样的)
- 2.元素可以重复的
- 3.有索引的
常见的成员方法?
- 和List一样的
- public void addFirst(Object e):将元素添加到第一个位置
- public void addLast(Object e):将元素添加到最后一个位置
- public Object getFirst():获取第一个位置的元素
- public Object getLast():获取最后一个位置的元素
- public Object removeFirst():删除第一个位置的元素
- public Object removeLast():删除最后一个位置的元素
package com.ppl.object;
/*
com.ppl.object:学习项目
@user:广深-小龙
@date:2022/1/16 21:42
*/
import java.util.LinkedList;
public class Obj_ArrayList {
public static void main(String[] args) {
new Obj_ArrayList().linkedList();
}
public void linkedList() {
// linkedList与ArrayList差不多一致,linkedList有头和尾的元素操作
LinkedList list = new LinkedList();
list.add("asd");
System.out.println("linkedList初始值:" + list);
// 添加首位元素
list.addFirst("首位");
// 添加末尾元素
list.addLast("末尾");
System.out.println("首末添加元素后:" + list);
// 获取首位元素
System.out.println("获取首位元素:" + list.getFirst());
// 获取末尾元素
System.out.println("获取末尾元素:" + list.getLast());
// 删除首位元素
list.removeFirst();
// 删除末尾元素
list.removeLast();
System.out.println("最后:" + list);
}
}
欢迎来大家QQ交流群一起学习:482713805,博主微信+:gogsxl