Java学习第五天
记住idea快捷键这样会极大的加快代码速度!在设置->键盘映射中查看
3.9.2常见的异常类
java中提供了大量的异常类,他们都是java.lang.Throwable类的子类。具体如图所示:
3.9.3try…catch和finally
由于出现了异常导致程序代码无法继续向下执行。为了解决这样的问题,Java中提供了一种对异常进行处理的方式,即异常捕获。异常捕获通常使用try…catch语句,具体语法格式如下:
然后在处理异常时,我们偶尔也希望无论程序是否发生异常都要执行某个特定语句,此时就需要在try…c.atch后面加上一个finally语句,无论程序是否发生异常,finally语句中的内容都会执行。接下来使用try…c.atch和finally语句对文件3-41中出现的异常进行捕获
try{
//程序代码块
}catch(异常类型(Exception类或子类)变量){
//对异常的处理
}
package com.itheima.example07;
public class example07 {
public static void main(String[] args) {
try{
int res=calulate(5,0);
System.out.println(res);
}catch(Exception e){
System.out.println("捕获的异常是:"+e.getMessage());
return;
}finally{
System.out.println("finally代码块");
}
System.out.println("代码继续运行...");
}
public static int calulate(int a,int b){
int res=a/b;
return res;
}
}
运行结果:
3.9.4 throws 关键字
抛出异常使用throws关键字对外声明该方法有可能发生的异常,这样在调用方法时,就很清楚该方法是否有异常,并必须对异常进行针对性的处理,否则编译失败。具体语法格式如下:
修饰符 返回值类型 方法名([参数 1,参数 2...])throws ExceptionType1[,ExceptionType2...]{
}
package com.itheima.Example08;
public class Example08 {
public static void main(String[] args){
int res=calculate(6,3);
System.out.println(res);
}
public static int calculate(int x,int y) throws Exception{
int res=x/y;
return res;
}
}
3.10访问控制:
Java针对类、成员方法和属性提供了四种访问级别,分别是private、default、protected和public。这四种访问级别控制了访问权限的大小,下面通过图例对这四种访问级别进行排序,如图3-25所示。
访问范围 | private | default | protected | public |
---|---|---|---|---|
同一类中 | √ | √ | √ | √ |
同一包中 | √ | √ | √ | |
子类中 | √ | √ | ||
全局范围 | √ |
第四章:集合类:
4.1初识集合:
4.1.1集合概述:
数组可以用于保存多个对象,但如果在对象数目无法确定的情
况下,数组是不适用的,因为数组的长度不可变。为了保存这些数目不确定的对象,JDK中提供了集合类(又称容器类),这些类可以存储任意类型的对象,并且长度可变。所有的集合 类都位于java.util包中,在使用时需要导入该包,否则会出现异常。
集合按照存储结构可以分为两大类,分别是单列集合(Collection)和双列集合(Map), 这两种集合的特点如下所示。
• Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个 重要的子接口,分别是 List和 Set。其中,List的特点是元素有序,元素可重复;Set的特 点 是 元 素 无 序,而 且不可重复。List接口的主要实现类有ArrayList和LinkedList,Set接口的主要实现类有HashSet和 TreeSet。
• Map:双列集合类的根接口,用于存储具有键(Key)、值(Value)映射关系的元素,每个元素都包含一对键值,在使用Map集合时可以通过指定 的Key找到对应的Value,例如根据一个员工的工号就可以找到对应的员工。Map接口的主要实现类有HashMap和TreeMap
4.1.2Collection 接口简介:
Collection是所有单列集合的父接口,因此 Collection接口中定义了很多单列集合(List和Set)通用的方法,这些方法分别用于在集合中添加元素、删除元素、获取集合中元素的个 数等
方法声明 | 功能描述 |
---|---|
boolean add(Object o) | 向集合中添加一个元素 |
boolean alladd(Collection c) | 将指定 Collection中的所有元素添加到该集合中 |
void clear( ) | 将指定 Collection中的所有元素添加到该集合中 |
boolean remove(Object o) | 删除该集合中的所有元素 |
boolean removeAll(Collection c) | 删除指定集合中的所有元素 |
boolean isEmpty( ) | 判断该集合是否为空 |
boolean contains(Object o) | 判断该集合中是否包含某个元素 |
boolean containsAll(Collection c) | 判断该集合中是否包含指定集合中的所有元素 |
Iterator iterator( ) | 返回在该集合的元素上进行迭代的迭代器(Iterator),用于遍历该集合所有元素 |
int size( ) | 获取该集合元素的个数 |
4.2List 接口简介:
在 List集合中可以出现相同的元素,所有的元素是以一种线性方式进行存储的,因此使用此集合能够精确地控制每个元素插入的位置,用户能够使用索引访问List中的元素。另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。
4.2.2 ArrayList集合:
ArrayList是 List接口的一个实现类。在 ArrayList内部封装了一个长度可变的数组,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。
package com.itheima.Example09;
import java.util.*;
public class example09 {
public static void main(String[] args) {
ArrayList list= new ArrayList();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
list.add("zhaoliu");
System.out.println("集合的长度是:"+list.size());
System.out.println("第二个元素是:"+list.get(2));
}
}
由于 ArrayList集合的底层使用一个数组保存元素,在增加或删除指定位置的元素时,会导致创建新的数组,极大地降低了效率,因此该集合不适合进行大量的增删操作。但这种数组的结构允许程序通过索引的方式访问元素,因此 ArrayList集合的优势是查找 元素效率高。
4.2.3 Iterator接口:
Iterator接口也是集合框架中的一员,它与 Collection和 Map接口不同的是,Collection接口与 Map接口主要用于存储元素,而Iterator主要用于遍历 Collection和 其子类中的元素,因此Iterator对象也被称为迭器。
代码如下:
package com.itheima.Example09;
import java.util.*;
public class example09 {
public static void main(String[] args) {
ArrayList list= new ArrayList(); //创建Arraylist集合
list.add("zhangsan"); //向集合添加元素
list.add("lisi");
list.add("wangwu");
list.add("zhaoliu");
Iterator it= list.iterator(); //得到Iterator对象
while(it.hasNext()){ //判断ArrayList集合中是否有下一个元素
Object obj=it.next();
System.out.println(obj); //取出ArrayList集合中的元素
}
}
结果如下:
4.2.4 foreach循环
虽然Iterator可以用于遍历集合中的元素,但在写法上比较麻烦,为了能够简化书写,从JDK5.0开始,Java提供了foreach循环。foreach循环是一种更加简洁的for循环,也称增强for循环。foreach循环用于遍历集合或者数组中的元素,具体语法格式如下:
for(集合内存储类型 变量名:集合的变量名){
执行语句部分;
}
代码如下:
package com.itheima.Example09;
import java.util.*;
public class example09 {
public static void main(String[] args) {
ArrayList list= new ArrayList(); //创建Arraylist集合
list.add("zhangsan"); //向集合添加元素
list.add("lisi");
list.add("wangwu");
list.add("zhaoliu");
for(Object obj:list){ //使用 foreach 循环遍历 ArrayList 集合
System.out.println(obj); //取出并打印 ArrayList 集合中的元素
}
}
}
一定要好好看祖先类!
一定要好好看祖先类!
一定要好好看祖先类!
自己找文章读一读,我闹的不好,一定要好好看!