为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
Java入门第三季_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

Java入门第三季

陈码农
难度入门
时长 5小时 0分
  • 异常的经验与总结

    查看全部
    0 采集 收起 来源:经验总结

    2018-07-26

  • package com.imooc.test;
    public class ChainTest{
    public static void main(Stirng[]args){
    ChainTest ct=new ChainTest();
    try{
    ct.test2();
    }catch(Exception e){
    e.printStackTrace();}
    }
    public void test1()throws DrunkException{
    throw new DrunkEception("开车别喝酒");}
    public void test2(){
    try{
    test1();}catch(DrunkException e){
    RuntimeException newExc=new RuntimeException("司机一滴酒,情人两行泪");
    newExc.initCause(e);
    throw newExc;}}}


    查看全部
  • package com.imooc.test;
    public class DrunkException extends Exception{
    public DrunkException(){}
    public DrunkException(String message){
    super(message);}
    }


    查看全部
  • 1、处理运行时异常时,采用逻辑去合理规避同时辅助try-catch处理
    2、在多重catch块后面,可以加一个catch(Exception)来处理可能会被遗漏的异常
    3、对于不确定的代码,也可以加上try-catch,处理潜在的异常
    4、尽量去处理异常,切记只是简单的调用printStackTrace()去打印
    5、具体如何处理异常,要根据不同的业务需求和异常类型去决定
    6、尽量添加finally语句块去释放占用的资源

    查看全部
    0 采集 收起 来源:经验总结

    2018-07-26

  • 使用Set集合判断其中是否含有某个值时,不仅要重写Set集合类型的equals()方法,还要重写Hashcode()方法。

    查看全部
  • List集合.contains(对象),List集合.containsALL(集合),用于判断List集合中是否包含实参(实质是调用对象的.equals()方法。)。当仅需判断两对象的部分值是否相等时,可以重写集合类型的equals()方法。

    查看全部
  • 1,try-catch-finally执行顺序:
    ①执行try{}块
    ②如果try{}块有异常产生,执行catch{}块
    ③无论有没有异常都要执行finally{}块,这里可以看出只要finally中有return,必然返回finally{}中的return
    2,return的执行,
    ①,如果finally{}块中有return语句,只执行finally{}块中的return语句
    ②,如果finally{}块中没有return语句,如果try{}有异常,则返回catch{}中的return语句,不然执行try{}中return语句
    在这种情况下,return语句块是在finally{}之后执行

    查看全部
  • _(:з」∠)_
    查看全部
    0 采集 收起 来源:Java异常简介

    2018-07-26

  • 异常处理: 一、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{ 最终将要执行的一些代码 }

    查看全部
  • Set接口及其实现类——HashSet Set是元素无序并且不可以重复的集合,被称为集; HashSet——哈希集,是Set的一个重要实现类。 

    1、Set没有像List中get()方法一样就修改,因为List是有序的,可以指定位置,而Set是无序的。  

    2、查询遍历时,Set不能用get()方法去获取,因为无序没有指定索引ID,但可以使用foreach和iterator来遍历,但是每次遍历出来可能顺序都不一样,还是因为无序造成的。  

    3、Set中的size(),add(),addAll(),remove(),removeAll()与List类似。 

    4、Set还可以添加null;无序演示

    5.为什么for循环里面要用st.coursesToSelect而不是直接用coursesToSelect?? main方法是静态方法(有static修饰符修饰的方法),在静态方法内只能访问静态成员变量(有static修饰的变量),这里的coursesToSelect不是静态变量,所以不能在mian中直接访问需要借助类对象访问

    6.Set 中添加某个对象,无论添加多少次,最终只会保留一个该对象(的引用)。同时,保留的是第一次添加的那一个。

    查看全部
  • 关于为什么要创建含参构造器的问题:

    public class Course{
        public String id;
        public String name;
        //含参构造器
        public Course(String id,String name){
        this.id=id;
        this.name=name;
        }
    }

    便于创建对象时直接赋值,例如Course c1 = new Course("1","数据结构");

    只有在实体类Course中添加了有参构造方法public Course(String id, String name) {...},才能这样赋值,否则只能先创建一个对象,再用set方法赋值。

    Course c1 = new Course();

    c1.setId("1");

    c1.setName("数据结构");


    查看全部
  • 泛型中除了可以添加规定的类型还可以添加规定类型的子类型。 定义子类型的时候要在父类型中添加一个无参的构造方法,否则出错,因为调用子类型的构造方法时,系统会默认调用父类的无参构造方法(super();)。 1.泛型集合中不能使用基本数据类型List<int>course。必须为引用类型List<Course> course 2.可以通过使用包装类限定允许存入的基本数据类型。

    查看全部
  • 泛型<>;规定List定义的容器只能存储某种类型的元素。不用泛型的话是什么类型的元素都可以插入,因为插入集合是忽略其类型,把它看成为Object类型,取出时需要强行转换对应的类型。 编写带有泛型的集合 List<Course> courseToSelect;   在构造方法中(实例化的时候也可以不在构造方法,直接实例就可以) this.courseToSelect=new ArrayList<Course>();   //带有泛型-Course的List类型属性就创建了 泛型集合中,不能添加泛型规定的类型以及其子类型以外的对象,否则会报错。 运用了泛型的话,用foreach语句时 存储变量应该为泛型的类型。for(Course a:courseToSelect),不必再用Object取出再强转,因为已经规定容器里装的都是Course类型。

    查看全部
  • (删除元素)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位置的值  }

    查看全部
  • 异常链:把捕获的异常包装成一个新的异常,在新的异常中添加对原始异常的引用,再把新异常抛出。

    initCause()可以将捕获的异常传递给新异常。

    查看全部

举报

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

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