为了账号安全,请及时绑定邮箱和手机立即绑定

Java入门第三季

难度入门
时长 5小时 0分
学习人数
综合评分9.50
1125人评价 查看评价
9.7 内容实用
9.4 简洁易懂
9.4 逻辑清晰
  • 只有Error,Exception,RuntimeException提供了带cause参数的构造器,其他的所有异常类只能通过initCause()来设置cause。 所有Throwable的子类构造器中都可以接受一个cause对象作为参数。cause是异常原由,代表着原始异常。既可以在当前位置创建并抛出行的异常,也可以通过cause追踪到异常最初发生的位置。 异常链是一种面向对象编程技术,指将捕获的异常包装进一个新的异常中并重新抛出的异常处理方式。原异常被保存为新异常的一个属性(比如cause)。这个想法是指一个方法应该抛出定义在相同的抽象层次上的异常,但不会丢弃更低层次的信息。 把捕获的异常包装成新的异常,在新异常里添加原始的异常,并将新异常抛出,它们就像是链式反应一样,一个导致(cause)另一个 这个想法是指一个方法应该抛出定义在相同的抽象层次上的异常,(将所有捕获到的异常包装为新的异常类,即定义在相同的抽象层次上抛出)但不会丢弃更低层次的信息。 实现异常链功能的两种基本写法: public class chainTest { /** * @param args * Test1抛出喝大了异常 * Test2调用test1捕获了喝大了异常,并且包装成运行时异常,继续抛出 * main方法中调用test2尝试捕获test2方法抛出的异常 */ public static void main(String[] args) { try{ // TODO Auto-generated method stub chainTest ct=new chainTest(); ct.Test2();} catch(Exception e){ e.printStackTrace(); } }public void Test1()throws DrunkException{ throw new DrunkException("喝车别开酒"); } public void Test2(){ try{ Test1(); }catch( DrunkException e){ RuntimeException rte=new RuntimeException(e); //rte.initCause(e); e.printStackTrace(); throw rte; } } }
    查看全部
  • return在try-catch-finally中: 1、不管有木有出现异常,finally块中代码都会执行; 2、当try和catch中有return时,finally仍然会执行; 3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,仍然是之前保存的值),所以函数返回值是在finally执行前确定的; 4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。 1.e.printStackTrace()可以输出异常信息 2.-1为抛出异常的习惯写法 3.如果方法中try,catch,finally中没有返回语句,则会调用这三个语句块之外的return结果 4.finally块无论如何,不管前面是正常还是异常,都要执行。 5.finally 在try中的return之后 在返回主调函数之前执行。
    查看全部
  • 感觉这个老师讲的不如第2季的老师
    查看全部
  • 异常处理: 一、try-catch(多catch块)-finally (1)try块:负责捕获异常,一旦try中发现异常,程序的控制权将被移交给catch块中的异常处理程序。【try语句块不可以独立存在,必须与 catch 或者 finally 块同存】 (2)catch块:如何处理?比如发出警告:提示、检查配置、网络连接,记录错误等。执行完catch块之后程序跳出catch块,继续执行后面的代码。 ·编写catch块的注意事项:多个catch块处理的异常类,要按照先catch子类后catch父类的处理方式,因为会【就近处理】异常(由上自下)。 (3)finally:最终执行的代码,用于关闭和释放资源等 ============================================================ 异常处理 try-catch以及try-catch-finally try{ //一些会抛出的异常 }catch(Exception e){ //处理该异常的代码块 }finally{ //最终要执行的代码 } 终止执行,交由异常处理程序(抛出提醒或记录日志等),异常代码块外代码正常执行。 try会抛出很多种类型的异常,多个catch块捕获多钟错误。 多重异常处理代码块顺序问题:先子类再父类(顺序不对也会提醒错误),finally语句块处理最终将要执行的代码 -----处理异常----- try-catch 以及 try-catch-finally catch顺序为从子类到父类 finally{ 最终将要执行的一些代码 }
    查看全部
  • 异常体系结构 1、所有异常都继承于Throwable类,其下有两大子类: (1)Error类:错误,一般编程人员不太接触,如虚拟机错误、线程死锁。硬伤:使程序崩溃 (2)Exception类:异常,编码、环境、用户输入等问题,其子类主要有: ·非检查异常(运行时异常RuntimeException):【由java虚拟机自动捕获】如空指针NullPointer、越界ArrayIndexOutofBounds、错误类型转换ClassCast、算数异常Arithmetic等 ·检查异常CheckException:【需要手动添加捕获和处理语句】文件异常IO等
    查看全部
    20 采集 收起 来源:Java异常简介

    2015-03-14

  • List list= new ArrayList(); collections.shuffle(list);//随机打乱list顺序
    查看全部
  • JAVA集合框架体系结构:Collection与Map是两个根接口。 Collection接口:内部存储的是一个个独立的对象。包含: 1、List接口:序列,存储元素排列有序且可重复。实现类:ArrayList,数组序列。实现类:LinkedList,链表。 2、Queue接口:队列,存储元素排列有序且可重复。实现类:LinkedList,链表。 3、Set接口:集,存储元素无序且不可重复。实现类:HashSet,哈希集。 Map接口:内部以<Key,Value>两个对象(任意类型)为一个映射去存储数据,这一个映射就是Entry类(Map的内部类)的实例。包括:实现类:HashMap,哈希表。
    查看全部
  • 1、处理运行时异常时,采用逻辑去合理规避同时辅助try-catch处理 2、在多重catch块后面,可以加一个catch(Exception)来处理可能会被遗漏的异常 3、对于不确定的代码,也可以加上try-catch,处理潜在的异常 4、尽量去处理异常,切记只是简单的调用printStackTrace()去打印 5、具体如何处理异常,要根据不同的业务需求和异常类型去决定 6、尽量添加finally语句块去释放占用的资源
    查看全部
    16 采集 收起 来源:经验总结

    2015-07-22

  • (1) 对象被存入集合都变成object类型了 取出时需要类型强转 例:Course temp = (Course)coursesToSelect.get(0); (2) 添加进list中的位置(index)介于【0,length】之间;0代表插到队头,length代表插到队尾。 (3) List是接口,所以在构造方法中不能直接实例化,而通过ArrayList()实例化!!! 例:public List coursesToSelect = new ArrayList(); (4) List、Set、Map都是接口 不可以直接对他实例化 要借助相应的实例化类 ArrayList(), HashSet(),HashMap(); (5) 调用Add()方法添加到List中。有两种方法: 1. 直接添加,例:CoursesToSelect.add(cr1); 2. 可以指定添加的位置,例:CoursesToSelect.add(0,cr1); (6) 如果添加到List中的长度大于他目前的长度,则系统会出现异常,即数组下表越界异常
    查看全部
  • ****************************重写equals方法(固定模板)********************************** @Override public boolean equals(Object obj){ //如果obj与比较对象的位置相同,说明obj是从集合中取出再与该位置的元素比较,所以肯定相同 if(this==obj) return true; if(obj==null){//若字符串为空,则不能进行字符串比较,所以返回false return false; if(!(obj instanceof Course)){//若果obj当前类型不是Course,则当前两个对象肯定不相同 //instanceof 它的作用是判断其左边对象是否为其右边类的实例 return false; //若上述均通过,则说明obj为Course对象,且当前对象不为空 Course course=(Course)obj; if(this.name==null){ if(course.name==null) return true; else return false; }else{ if(this.name.equals(course.name)) return true; else return false; } }
    查看全部
  • 总结关于list类型的一下用法: 1.创建对象 List list = new ArrayList(); 2.向list对象中添加数据 (1)Course crre = new Course("1","数据结构");//一个类的对象 list.add(crre);//将对象添加到list中 (2)Course[] crre = {new Course("",""),new Course("","");//对象的数组 list.addAll(0,Arrays.asList(course));//切记Arrays.asList方法 3.获取集合中的元素 (1)Course temp = (Course)list.get(0);//注意强转 (2)Iterator it = list.iterator(); while(it.hasNext()){ Course cr = (Course)it.next();//迭代遍历,使用iterator方法 } (3)for(Object obj:list){ Course cr = (Course)obj; }//foreach方法 ,注意Object的使用 4.集合中参数的修改 list.set(2,new Course("","")); 5.集合中数据的删除 (1)list.remove(位置); (2)Course[] crr = {(Course)list.get(位置)(Course)list.get(位置)}; list.removeAll(Arrays.asList(crr));//参考addAll 6.带有泛型的list List<Course> course = new ArrayList<Course>();//相当于添加进去的元素有了具体类型,不再是Object 7.list可以添加子类型的对象 8.list不能直接添加基本类型(int,float等)的对象,如果要添加,需要使用其包装类
    查看全部
  • Collection接口是List、Set、Queue接口的父接口 Collection接口定义了可用于操作List、Set和Queue的方法--增删改查 List接口及其实现类--ArrayList List是元素有序并且可以重复的集合,被称为序列。 List可以精确的控制每个元素的插入位置,或删除某个位置元素 List有add()插入方法和get()获取方法 ArrayList--数组序列,是List的一个重要实现类 ArrayList底层是由数组实现的,这也是其名字的由来
    查看全部
  • 对于string自己使用了.length编译错误,然后看了下参考答案,不解,上网查了下.length,.length(),size()的区别,答案如下: 1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性. 2 java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法. 3.java中的size()方法是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看!
    查看全部
  • String s1;申明一个string类型的s1,即没有在申请内存地址,更没有在内存任何指向引用地址; String s2=null;申明一个string类型的s2,同时在内存里申请了一个地址,但是该地址不指向任何引用地址; String s3="";申明一个string类型的s3,既在内存里申请了地址,该地址又指向一个引用该字符串的引用地址; String s4=new String();同理s3; 虽然new String()与""值一样,但是内存地址不一样。 一般来说 字符串的使用 最好用String str = "";语句,可以防止后面的程序因引用地址混乱而找不到的异常!String s = null;String s;劲量少用!能不用就不要使用! 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • (删除元素)List中有remove(index),remove(对象值)和removeAll(Arrays.asList(对象数组名))方法来删除容器中元素的值(用法和add类似). Course是信息课程类,有id和name属性。courseToSelect是list的序列容器对象。 1.remove(index);删除位置要大于0并且小于List(序列容器)的长度。如果要删除全部可以用for循环嵌套此方法。 2.remove(object);先要获得删除的值,用法是先定义一个信息变量通过get()来存放要删除的值,然后用remove(删除的对象值); public void textdelect{ Course cr=(Course)(courseToSelect.get(4)); courseToSelect.remove(cr);//通过remove(对象值); 或者 courseToSelect.remove(4);//通过remove(删除位置); } 3.removeAll(Arrays.asList());要删除指定的多个位置 Arrays.asLIst(对象数组名);作用是把数组转换为集合 用法是先创建信息对象数组存放删除元素的值,然后再用removeAll(Arrays.asList(对象数组名))方法,删除集合数组的元素。 public void textdelext2{ Course []course={(Course)(courseToSelect.get(4)),(Course)(courseToSelect.get(5))}; // 定义数组存放要删除的值 courseToSelect.removeAll(Arrays.asList(course)); // 删除4和5位置的值 }
    查看全部
首页上一页1234567下一页尾页

举报

0/150
提交
取消
课程须知
此部分为 Java 课程的进阶内容,适合具有一定 Java 基础的伙伴们学习,如果您是新手,建议您移步 《Java入门第一季》 和 《Java入门第二季》,在理解并掌握面向对象相关知识后再回来进修。
老师告诉你能学到什么?
本课程将学习 Java 中的异常处理、集合框架、字符串、常用类等,逐步学习掌握 Java 高级技术。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!