学习Java第十四天

一、异常

1.1捕获异常-try -finally

1、语法:

try{

可能发生异常的代码

}finally{

最后执行的代码

}

2、执行流程:

A.执行try中的代码

B.执行finally中的代码

3、说明

A.没有对一场进行处理 还是由jvm来处理异常(这种方式不提倡使用)

B.try与finally代码来进行分离 try与finally中的代码互不影响

1.2Throwable

1.2.1简介

A.Throwable 类是 Java 语言中所有错误或异常的超类

B.只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw 语句抛出。

C.两个子类的实例,ErrorException

1.2.2常用的方方法

方法名称

方法的描述

public void printStackTrace()

将此 throwable 及其追踪输出至标准错误流。(打印堆栈信息-错误信息)

public String getMessage()

返回此 throwable 的详细消息字符串

public String toString()

返回此 throwable 的简短描述。

代码:

package com.gkd.test01; public class Test01 { public static void main(String[] args) { try { int [] arrays={10,20,30,40}; System.out.println(arrays[6]); } catch (Exception e) { // e.printStackTrace(); // System.out.println(e.getMessage()); System.out.println(e.toString()); } } }

1.3声明异常-throws(重点)

1、throws 声明异常

2、使用场景:在定义方法的时候 方法中的代码可能产生异常 但是这个异常不想进行处理

就可以使用throws声明异常 异常给调用者处理

3、语法:定义再方法参数的后面

访问修饰符 返回值类型 方法名称(参数列表) throws 异常类型{

方法体;

return 返回值;

}

4、说明:

A.声明的异常的范围越小越好

B.声明的异常 或者是其子类 这种异常 调用者可以不需要进行处理

C.声明的异常 不是或者是其子类 这种异常 调用者需要进行处理

D.throws可以声明多个异常

1.4throw(重点)

1、throw 抛出异常

2、语法:

访问修饰符 返回值类型 方法的名称(参数列表){

throw new 异常类型()

}

3、说明

A.声明的异常 或者是其子类 这种异常 调用者可以不需要进行处理

B.声明的异常 不是或者是其子类 这种异常 调用者需要进行处理

处理方式:a.在方法中声明 b.使用try-catch来捕获异常

C.在同一作用域下 只能抛出一个异常

1.5throws与throw(重点)

throws

throw

声明异常

抛出异常

声明多个异常

抛出一个异常

声明的异常不一定会发生

抛出的异常是确实存在的 可能会发生

定义再方法的参数后面

定义再方法中

1.6案例

step01需求:

使用异常对用户年龄不合法处理

step02代码:

代码-学生类

package com.gkd.test02; public class Student { private String name; private int age; public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) throws Exception{ //用这个赋值的,所以在这个方法里面抛出异常 if(age<=0||age>120){ throw new Exception(); } this.age = age; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } }

代码-测试类

package com.gkd.test02; public class Test { public static void main(String[] args) { //实例化一个学生类 Student stu =new Student(); try { stu.setName("老王"); stu.setAge(10); } catch (Exception e) { e.printStackTrace(); } System.out.println(stu); } }

1.7继承中的异常

在继承中 重写的方法声明的异常必须小于或者等于父类的范围(必须是父类声明异常的本身或者其子类)

1.8自定义异常

1、jdk提供很多的异常类 jdk提供不能满足实际开发中的异常信息要求 就可以自定义异常类

2、步骤

A.定义一个类 继承 Exception

B.调用父类的构造方法 设置异常信息

step01定义一个类 继承 Exception

package com.gkd.test03; public class MyException extends Exception{ public MyException(String message){ //调用父类的构造方法 super(message); } }

step02定义一个字符串的工具类

package com.gkd.test03; public class StingUtils { public static boolean isFlag(String str) throws MyException { if(str.length()<5||str.length()>15){ //抛出异常 throw new MyException("QQ号不合法……"); } return true; } }

step03定义一个测试类

package com.gkd.test03; public class Test { public static void main(String[] args) { try { System.out.println(StingUtils.isFlag("123456")); } catch (MyException e) { e.printStackTrace(); } } }

二、插件

step01

彩虹括号

翻译

step02

step03重启IDEA

三、集合

3.1简介

1、概念:用于存储数据的容器(集合)

2、数组与集合的比较

A.数组的长度的不可变的 集合的长度是可变的

B.数组是存储基本数据类型的数据 也可以存储引用数据类型的数据 集合只能存储引用数据类型的数据

3、集合的分类:

单列集合:每一个元素都是独立的单元

双列集合:以键(key)值(value)对来存储的数据 以组为主

单列集合

双列集合

3.2Collection

3.2.1简介

A.Collection 层次结构 中的根接口。

B.它提供更具体的子接口(如 Set 和 List)实现。

C.实现类

3.2.2常用方法

方法的名称

方法的描述

boolean add(E e)

向集合中插入元素

void clear()

清空集合元素

boolean contains(Object o)

集合是否包含此元素

boolean isEmpty(

集合是否为空

Iterator iterator()

将集合转换位迭代器

boolean remove(Object o)

删除集合中元素

int size()

获取集合中的长度

Object[] toArray()

将集合转换为数组

package com.gkd.test04; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; public class Test01 { public static void main(String[] args) { //实例化集合 Collection col=new ArrayList(); //向集合添加元素 col.add("四大男神"); col.add("陈冠希"); col.add("吴彦祖"); col.add("胡歌"); col.add("老王"); System.out.println(col); //删除集合中的元素 col.remove("胡歌"); System.out.println(col); //查询集合中的元素 System.out.println(col.contains("胡歌")); System.out.println(col.contains("陈冠希")); //获取集合的长度 col.size(); //将集合转换为数组 Object[] arrays = col.toArray(); System.out.println(Arrays.toString(arrays)); //清空集合元素 col.clear(); //获取集合长度,判断集合是否为空 System.out.println(col.size()); System.out.println(col.isEmpty()); } }

3.2.3四个带all方法

方法的名称

方法的描述

方法的返回值

col1集合

col2集合

boolean addAll(CollectionE> c)

大集合添加小集合

col添加成功之后返回true 添加失败 则返回false

会发生改变

不发生改变

boolean containsAll(Collection c)

大集合是否完全包含小集合

col1集合完全包含col2集合则返回true 否则返回false

不发生改变

不发生改变

boolean removeAll(Collection c)

大集合删除小集合

col1集合中元素发生改变则返回true

col1获取的是col1与col2集合交集剩余的部分

不发生改变

boolean retainAll(Collection c)

大集合和小集合的交集

col1与col2的集合的元素完全相同返回false否则返回true

会发生改变(取得是col1与col2得交集)

不发生改变

package com.gkd.test04; import java.util.ArrayList; import java.util.Collection; public class Test02 { public static void main(String[] args) { showInfo01(); // showInfo02(); // showInfo03(); // showInfo04(); } public static void showInfo01(){ //实例化集合 Collection col1=new ArrayList(); col1.add('a'); col1.add('b'); col1.add('c'); col1.add('d'); //实例化另一个集合 Collection col2=new ArrayList(); col2.add('a'); col2.add('b'); col2.add('c'); col2.add('d'); //调用方法大集合添加小集合 boolean flag=col1.addAll(col2); System.out.println(flag); System.out.println(col1); System.out.println(col2); } public static void showInfo02(){ //实例化集合 Collection col1=new ArrayList(); col1.add('a'); col1.add('b'); col1.add('c'); col1.add('d'); //实例化另一个集合 Collection col2=new ArrayList(); col2.add('a'); col2.add('b'); col2.add('c'); col2.add('f'); //调用方法大集合是否完全包含小集合 boolean flag=col1.containsAll(col2); System.out.println(flag); System.out.println(col1); System.out.println(col2); } public static void showInfo03(){ //实例化集合 Collection col1=new ArrayList(); col1.add('a'); col1.add('b'); col1.add('c'); col1.add('d'); //实例化另一个集合 Collection col2=new ArrayList(); col2.add('a'); col2.add('b'); col2.add('w'); //调用方法大集合删除与小集合的交集 boolean flag=col1.removeAll(col2); System.out.println(flag); System.out.println(col1); System.out.println(col2); } public static void showInfo04(){ //实例化集合 Collection col1=new ArrayList(); col1.add('a'); col1.add('b'); col1.add('c'); col1.add('d'); //实例化另一个集合 Collection col2=new ArrayList(); col2.add('a'); col2.add('b'); // col2.add('c'); // col2.add('d'); //调用方法获取大集合与小集合中的交集 boolean flag=col1.retainAll(col2); System.out.println(flag); System.out.println(col1); System.out.println(col2); } }

3.3集合的遍历方式

3.3.1集合转换成数组:Object []toArray()

代码:

package com.gkd.test05; import java.util.ArrayList; import java.util.Collection; public class Test01 { public static void main(String[] args) { //实例化集合 Collection col=new ArrayList(); //给集合赋值 col.add("老王"); col.add("凤舞"); col.add("阿河"); col.add("超超"); //将集合转变成数组 Object[] objects = col.toArray(); //使用循环遍历数组 for (int i=0;i<objects.length;i++){ System.out.println(objects[i]); } } }

3.3.2集合的第二种方式-使用迭代器

1、集合转换为迭代器

IteratorE> iterator()

2、迭代器常用的方法

方法的名称

方法的描述

boolean hasNext()

判断是否有下一个元素

E next()

返回迭代的下一个元素

void remove()

删除迭代器的元素

package com.gkd.test05; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class Test02 { public static void main(String[] args) { //实例化集合 Collection col=new ArrayList(); //给集合赋值 col.add("三大美女"); col.add("刘亦菲"); col.add("杨幂"); col.add("唐嫣"); //转换成迭代器 Iterator iter = col.iterator(); //获取元素 //iter.hasNext()判断是否有下一个元素 // if (iter.hasNext()){ // System.out.println(iter.next()); // } // if (iter.hasNext()){ // System.out.println(iter.next()); // } // if (iter.hasNext()){ // System.out.println(iter.next()); // } // if (iter.hasNext()){ // System.out.println(iter.next()); // } // if (iter.hasNext()){ // System.out.println(iter.next()); // } // while (iter.hasNext()){ // System.out.println(iter.next()); Object obj=iter.next(); System.out.println(obj); } } }

迭代器遍历的原理

3.3.3使用增强for循环遍历

1、语法:

for(集合或者数组的数据类型 变量名:需要遍历的集合或者数组){

变量名==>就是集合中每一个元素

}

2、说明:

A.变量名表示集合中的每一个元素

B.增强for循环的底层也是使用迭代器遍历的

代码:

package com.gkd.test05; import java.util.ArrayList; import java.util.Collection; public class Test03 { public static void main(String[] args) { //实例化集合 Collection col=new ArrayList(); //给集合赋值 col.add("五大老师"); col.add("仓老师"); col.add("波多老师"); col.add("小野老师"); col.add("泷泽老师"); col.add("小泽老师"); //使用增强for循环 for(Object obj:col){ System.out.println(obj); } } }

3.3.4案例

step01需求:使用集合存储四个新闻(属性:标题 作者 内容 日期)对象 使用三种遍历方式获取每一个新闻信息

step02分析

A.定义一个新闻类

B.实例化一个集合,存入新闻对象

C.使用三种遍历方式遍历

step03代码-新闻类(News)

package com.gkd.test06; import java.text.SimpleDateFormat; import java.util.Date; public class News { private String title; private String author; private String content; private Date createTime; public News() { } public News(String title, String author, String content, Date createTime) { this.title = title; this.author = author; this.content = content; this.createTime = createTime; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } @Override public String toString() { return "News{" + "title='" + title + '\'' + ", author='" + author + '\'' + ", content='" + content + '\'' + ", createTime=" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime) + '}'; } }

step04代码-测试类

package com.gkd.test06; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.Iterator; public class Test { public static void main(String[] args) { //实例化集合 Collection col=new ArrayList(); //向集合存储进新闻对象 col.add(new News("老王与波多老师故事","凤舞","精彩无限",new Date())); col.add(new News("拉稀哥是什样练成的","星运","努力奋斗",new Date())); col.add(new News("老六是什么样吹牛逼的","阿廖","永不言败",new Date())); col.add(new News("阿廖什么生活的","云曦","朗德里格朗",new Date())); //使用转换成数组遍历 Object[] obj = col.toArray(); for (int i=0;i<obj.length;i++){ System.out.println(obj[i]); } System.out.println("========================================="); //使用转换成迭代器遍历 Iterator iter = col.iterator(); while (iter.hasNext()){ System.out.println(iter.next()); } System.out.println("========================================="); //使用增强for循环遍历 for (Object obj1:col){ System.out.println(obj1); } } }

3.4List

3.4.1简介

1、有序的

2、索引访问元素 有索引

3、列表通常允许重复的元素 集合中的元素可以重复

4、特点:有序 有索引 可重复

5、list是个接口,实现类是:ArrayList, LinkedList

3.4.2带索引的方法

方法的名称

方法的描述

void add(int index, E element)(增)

在列表的指定位置插入指定的元素

E get(int index)(查)

返回列表的指定位置的元素

E remove(int index)(删)

移除列表中指定位置的元素

E set(int index, E element)(改)

用指定元素替换列表中指定位置的元素

代码:

package com.gkd.test07; import java.util.ArrayList; import java.util.List; public class Test01 { public static void main(String[] args) { //实例化集合 List li=new ArrayList(); //给集合赋值 li.add("广科大-王总"); System.out.println(li); //根据索引来添加元素 li.add(0,"广科大-拉稀哥"); System.out.println(li); li.add(1,"广科大-阿廖"); System.out.println(li); //根据索引获取元素 System.out.println(li.get(0)); //根据索引修改元素 注意:这个索引必须存在 li.set(2,"广科大-覃老6"); System.out.println(li); //通过索引删除元素 li.remove(0); System.out.println(li); } }

3.4.3第四种遍历方式

List集合提供了带索引的方法 通过索引来获取集合中的元素 可以通过for循环来获取元素

代码:

package com.gkd.test07; import java.util.ArrayList; import java.util.List; public class Test02 { public static void main(String[] args) { //实例化List集合 List li = new ArrayList(); //给集合赋值 li.add("广科大-王总"); li.add("广科大-拉稀哥"); li.add("广科大-阿廖"); li.add("广科大-王总"); li.add("广科大-覃老6"); //普通for循环 for(int i=0;i<li.size();i++){ System.out.println(li.get(i)); } } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值