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

Java入门第三季

难度入门
时长 5小时 0分
学习人数
综合评分9.50
1125人评价 查看评价
9.7 内容实用
9.4 简洁易懂
9.4 逻辑清晰
  • 两个重要的关键字:throw和throws 1.throws的异常列表可以是抛出一条异常,也可以是抛出多条异常,每个类型的异常中间用逗号隔开 2.方法体中调用会抛出异常的方法或者是先抛出一个异常:用throw new Exception() throw写在方法体里,表示“抛出异常”这个动作 3.如果某个方法调用了抛出异常的方法,那么必须添加try catch语句去尝试捕获这种异常, 或者添加声明,将异常抛出给更上一层的调用者进行处理 4.自定义异常: class 自定义异常类 extends 异常类型{} 上面的异常类型可以是Exception,也可以是其子类
    查看全部
  • 不是为了实现哪一句代码的。initCause()这个方法就是对异常来进行包装的,目的就是为了出了问题的时候能够追根究底。因为一个项目,越往底层,可能抛出的异常类型会用很多,如果你在上层想要处理这些异常,你就需要挨个的写很多catch语句块来捕捉异常,这样是很麻烦的。如果我们对底层抛出的异常捕获后,抛出一个新的统一的异常,会避免这个问题。但是直接抛出一个新的异常,会让最原始的异常信息丢失,这样不利于排查问题。举个例子,在底层会出现一个A异常,然后在中间代码层捕获A异常,对上层抛出一个B异常。如果在中间代码层不对A进行包装,在上层代码捕捉到B异常后就不知道为什么会导致B异常的发生,但是包装以后我们就可以用getCause()方法获得原始的A异常。这对追查BUG是很有利的。 class A{ try{ ... }catch(AException a){ throw new BException(); } } ... class B{ try{ ... }catch(BException b){ //这时候你需要去看b异常式什么问题导致的,你在A类里面 //没有对AException进行包装,所以你无法知道是A导致的B } } 如果包装以后: class A{ try{ ... }catch(AException a){ BException b = new BEexception(); b.initCause(a); throw b; } } ... class B{ try{ ... }catch(BException b){ //什么导致了b呢? b.getCause();//得到导致B异常的原始异常 } }
    查看全部
  • 一、概念 1、异常:有异于常态,和正常情况不一样,有错误出现,阻止当前方法或作用域。22 2、异常处理:将出现的异常提示给编程人员与用户,使原本将要中断的程序继续运行或者退出。并且能够保存数据和释放资源。 二、异常体系结构 1、所有异常都继承于Throwable类,其下有两大子类: (1)Error类:错误,一般编程人员不太接触,如虚拟机错误、线程死锁。硬伤:使程序崩溃 (2)Exception类:异常,编码、环境、用户输入等问题,其子类主要有: ·非检查异常(运行时异常RuntimeException):【由java虚拟机自动捕获】如空指针NullPointer、越界ArrayIndexOutofBounds、错误类型转换ClassCast、算数异常Arithmetic等 ·检查异常CheckException:【需要手动添加捕获和处理语句】文件异常IO等
    查看全部
    10 采集 收起 来源:Java异常简介

    2015-01-04

  • list中还有addAll(List list) 就是将一个List里面的元素一股脑的全都加进去,妙哉妙哉 一般定义一个数组,如何把一个数组转换成List? 调用方法Arrays.asList(Object[] obs);//可以将一个数组转换为一个List,然后可以将这个元素传进addAll()里面 当然还有addAll(index,List list)方法 removeAll直接传入一个list,同理 记得取出东西之后,要类型强转哦!!!因为取出来都是Object的。 向List中添加元素的几种方法: 新建List类 public List courseToSelect; 初始化List类 public ListTest() { this.courseToSelect=new ArrayList(); } 向List中添加数据 method_1 courseToSelect.add(对象1); method_2 courseToSelect.add(位置,对象2); method_3 courseToSelect.addAll(Arrays.asList(数组_对象3)); method_4 courseToSelect.addAll(位置,Arrays.asList(数组_对象4)); 获取 Course temp=(Course)courseToSelect.get(位置);
    查看全部
  • Map接口 1. Map接口提供了一中映射关系,其中的元素是键值对(key-value)的形式存储的,能够实现根据Key快速查找value。Key-value可以是任何对象,是以Entry类型的对象实例存在的。 2.Key是不可以重复的,Value是可以重复的。Key-value都可以为null,不过只能有一个key是null。 3.map支持泛型,Map<K,V> 4.每个键最多只能映射到一个值 5.Map接口提供了分别返回key值集合、value值集合以及Entry(键值对)集合的方法 6.通过put<K key,V value>,remove<Object key>操作数据 7.HashMap中的Entry对象是无序排列的,HashMap是Map的一个重要实现类,也是最常用的,基于哈希表是实现
    查看全部
  • package imooc_exception;
    
    import java.util.InputMismatchException;
    import java.util.Scanner;
    
    public class bookSystem {
        String[] books=new String[]{"C语言","Java","C++","PHP"};
        public static void main(String[] args)
        {
            bookSystem bookSystem=new bookSystem();
            while(true) {
                Scanner scanner=new Scanner(System.in);
                System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");
                try {
                    int input = scanner.nextInt();
                    if(input==1)
                    {
                        System.out.println("输入图书名称:");
                        String name=scanner.next();
                        String bookName=bookSystem.findBookByName(name);
                        System.out.println("book:"+bookName);
                        break;
                    }
                    else if(input==2)
                    {
                        System.out.println("输入图书序号:");
                        int number = scanner.nextInt();
                        String bookName=bookSystem.findBookById(number);
                        if(bookName!=null) {
                            System.out.println("book:" + bookName);
                            break;
                        }
                    }
                    else
                    {
                        System.out.println("命令输入错误!请根据提示输入正确数字!");
                    }
                } catch (InputMismatchException e) {
                    //e.printStackTrace();
                    System.out.println("命令输入错误!请根据提示输入数字命令!");
                }
                catch (NonExistent existent) {
                    //existent.printStackTrace();
                    System.out.println(existent.getMessage());
                }
                catch (Exception e)
                {
                    //e.printStackTrace();
                    System.out.println("其他错误");
                }
            }
        }
    
        public String findBookById(int id) throws NonExistent
        {
            if(id>books.length) {
                throw new NonExistent("图书不存在");
            }
            else
                return books[id-1];
    
        }
    
        public String findBookByName(String name) throws NonExistent
        {
            for(String book:books)
            {
                if(book.equals(name))
                    return name;
            }
                throw new NonExistent("图书不存在");
        }
    }
    
    
    package imooc_exception;
    
    public class NonExistent extends Exception {
        public  NonExistent()
        {
        }
        public  NonExistent(String msg)
        {
            super(msg);
        }
    }


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

    2018-06-08

  • 一下是对本节课几个难理解的代码句进行解释: (1):e.printStrackTrace(); 作用是进行深层次的输出异常调用的流程 (2):RunTimeException(); 这是运行时异常,是所有java虚拟机正常操作期间可以被抛出异常的父类! (3):newExc.initCause(e); 这是一种对异常的一种包装技巧。 initCause()的作用是保存原始的异常,当想要知道底层发生了什么异常的时候调用getCause()就能获得原始异常。 这样就可以形成一个异常链!
    查看全部
  • 以下三种方法都是用来取出List中元素的方法: -----for循环----- public void testGet(){ int size=coursesToSelect.size(); for(int i=0;i<size;i++){ Course cr=(Course) coursesToSelect.get(i); System.out.println("取出的课程:"+cr.getId()+":"+cr.getName()); } } -----迭代器----- Iterator是一个接口,依赖于集合存在的 Iterator it=courseToSelect.iterator(); while(it.hasNext()){ Course cr=(Course) it.next(); System.out.println("课程:" + cr.id + ":" + cr.name); } -----for each(增强for循环)----- 凡是继承了Iterable接口的类所生成的对象都可以用for/each循环 for(Object obj:coursesToSelect){//遍历集合中的每一个元素,作为每一个Object变量 Course cr=(Course) obj; System.out.println("课程:" + cr.id + ":" + cr.name); }
    查看全部
  • SimpleDateFormat 可以对日期时间进行格式化,(由于Date默认输出的时间格式不友好因此需要转换)如可以将日期转换为指定格式的文本,也可将文本转换为日期。 1. 使用format()方法将日期转换为指定格式的文本 Date d = new Date(); SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//指定转换的目标格式,"yyyy-MM-dd HH:mm:ss"为预定义字符串。 String today = s.format(d);//结果如:2014-06-11 09:55:48 2. 使用parse()方法将文本转换为日期 String day = "2014年02月14日 10:30:20"; SimpleDateFormat s = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");//“yyyy年MM月dd日 HH:mm:ss” 指定了字符串的日期格式,调用 parse() 方法将文本转换为日期。 Date date = s.parse(day);//结果如:Fri Feb 14 10:30:20 CST 2014 注意: 1、调用SimpleDateFormat对象的parse()方法时可能会出现转换异常,即ParseException,因此需要进行异常处理。 2、指定日期格式中的月MM和小时HH必须大写,小写结果会不同的。 3、使用Date 类时需要导入java.util包,使用SimpleDateFormat时需要导入java.text包。
    查看全部
  • 使用set(index,Object element)修改元素,index表示索引位置,element表示新对象。 修改List的元素 public void testModify(){ coursesToSelect.set(4,new Course("7","毛概")); }
    查看全部
  • int length() 返回当前字符串的长度 int indexOf(int ch) 查找ch字符在该字符串中第一次出现的位置 int indexOf(String str) 查找str子字符串在该字符串中第一次出现的位置 int lastIndexOf(int ch) 查找ch字符在该字符串中最后一次出现的位置 int lastIndexOf(String str) 查找str子字符串在该字符串中最后一次出现的位置 String substring(int beginIndex) 获取从beginIndex位置开始到结束的子字符串 String substring(int beginIndex, int endIndex) 获取从beginIndex位置开始到endIndex位置的子字符串 String trim() 返回去除了前后空格的字符串 boolean equals(Object obj) 将该字符串与制定对象比较,返回true或false String toLowerCase() 将字符串转换为小写 String toUpperCase() 将字符串转换为大写 char charAt(int index) 获取字符串中指定位置的字符 String[] split(String regex, int limit) 将字符串分割为子字符串,返回字符串数组 byte[] getBytes() 将该字符串转换为byte数组
    查看全部
  • Map增删改查: 增:map的put(key,value)方法添加。 查:1.利用keyset()方法获得Map中key的集合,再遍历key的集合,利用Map的get(key)方法得到key对应的value值。 2.利用EntrySet方法获取May中Entry对象集:然后用foreach遍历集,再用Entry集的getkay()和getvalue()方法得到每一个key值和value值。 删:remove(object key) 改:put(原有的key,新的value) 通过entrySet可以返回Map中的所有键值对 Set<Entry<String,Student>>entrySet = students.entrySet();
    查看全部
  • 遍历 keySet 返回是key entrySet 返回是键值对 修改 put方法 只需将value中的name更改 添加 put方法 删除 remove(key)
    查看全部
  • 泛型<>;规定List定义的容器只能存储某种类型的元素。不用泛型的话是什么类型的元素都可以插入,因为插入集合是忽略其类型,把它看成为Object类型,取出时需要强行转换对应的类型。 编写带有泛型的集合 List<Course> courseToSelect; 在构造方法中(实例化的时候也可以不在构造方法,直接实例就可以) this.courseToSelect=new ArrayList<Course>(); //带有泛型-Course的List类型属性就创建了 泛型集合中,不能添加泛型规定的类型以及其子类型以外的对象,否则会报错。 运用了泛型的话,用foreach语句时 存储变量应该为泛型的类型。for(Course a:courseToSelect),不必再用Object取出再强转,因为已经规定容器里装的都是Course类型。
    查看全部
  • 包装类(自动导入,让基本数据类型具有对象的特性)主要提供了两大类方法:(String,包装类都可以直接String或者Integer,Double,Float一个对象,包装类,系统自动导入) 1. 将本类型和其他基本类型进行转换的方法 对象.类型Value(); 装箱:把基本类型转换成包装类,使其具有对象的性质,又可分为手动装箱和自动装箱。 int i=10; Integer x=new Integer(i);//手动装箱 Integer y=i;//自动装箱 拆箱:把包装类对象转换成基本类型的值,又可分手动拆箱和自动拆箱。 Integer j=new Integer(8); int m=j.intValue();//手动拆箱 int n=j;//自动拆箱。 2. 将字符串和本类型及包装类互相转换的方法
    查看全部

举报

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

微信扫码,参与3人拼团

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

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