zoukankan      html  css  js  c++  java
  • 第五周学习总结

    20145113第五周学习总结

    教材学习内容总结

    1.异常:
    Throwble:分为Error与Exception。而Exception又分为非检查性异常(RuntimeException)与检查性异常。
    RuntimeException:空指针异常、数组下标越界异常、类型转换异常、算术异常....由java虚拟机自动抛出,自动捕获。
    检查异常:文件异常(IOException)、SQl异常(SQLException)....需要手动添加捕获。

    2.捕获和处理异常
    try-catch及try-catch-finally
    e.printStackTrace()输出异常。

        if (a==1)
        {
            while(true){
                System.out.println("please input the book's name:\n");
                String b=input.nextLine();
                try
                {
                    for(int i=0;;i++)
                    {
                        if(b.equals(ob[i])) {
                            System.out.println("book:" + ob[i] + "\n");
                            break;
                        }
                    }
                    break;
                }
                catch (RuntimeException e)
                {
                    System.out.println("none");
                }
            }
    
        }
    

    尝试使用运行时异常处理来编写了模拟图书馆借书,让用户分别按“书名”和“图书序号”查找图书,根据输入信息进行适当的异常处理 ##代码调试过程中的问题和解决过程

    1.List使用

    add()方法的使用add(Object e)与add(int index,Object e): 开始时如下编写,则显示编译错误

     public void TestAdd(){
        Courses cr1=new Courses("1","java");
        SeCourse.add(cr1);
        Courses temp=SeCourse.get(0);
        System.out.println();
    }
    

    因为对象存入集合都变成Object类型,取出时需要类型转换。

     Courses temp=SeCourse.get(0);
    

    则需要强制转换:

    Courses temp=(Courses)SeCourse.get(0);
    

    则得到运行结果:

    继续编写

    Courses cr2=new Courses("2","C");
        SeCourse.a
        SeCourse.add(1,cr2);
        Courses temp1=(Courses)SeCourse.get(1);
    

    add可以选择插入的位置,如上在0的位置插入则原先0位置的值将往后移,但是选择插入位置的时候不能越界。

    addAll()的使用方法:add(collection c)与addAll(int index,collection c)

     Courses []course={new Courses("3","Math"),new Courses("4","Chinese")};
        SeCourse.addAll(Arrays.asList(course))
    

    需要通过使用Arrays中的方法将couse转为实例。

    将集合中的元素取出

     public void getTest(List SeCourse)
    {
        int size=SeCourse.size();
        for(int i=0;i<size;i++)
        {
            Courses temp=(Courses)SeCourse.get(i);
            System.out.println("取得课程:"+temp.getId()+":"+temp.getName()+"\n");
        }
    }
    

    可以用.size方法取得集合的长度。

    public void testIterator(List SeCourse)
    {
       System.out.println("通过迭代器访问:\n");
       Iterator it=SeCourse.iterator();
       while (it.hasNext())
       {
           Courses cr=(Courses)it.next();
           System.out.println("取得课程:"+cr.getId()+":"+cr.getName()+"\n");
       }
    }
    

    it.hasNext()判断下个元素是否为空,不为空返回true,it.next()取得下一个值。
    简便写法

     private void simple(List SeCourse)
    {
       for(Object o:SeCourse)
       {
           Courses cr=(Courses) o;
           System.out.println("取得课程:"+cr.getId()+":"+cr.getName()+"\n");
       }
    }
    

    修改集合中的某个元素。使用set(int index,Object element)

     public List replace(List SeCourse)
    {
        System.out.println("修改第二个元素\n");
        SeCourse.set(1,new Courses("5","Music"));
        return SeCourse;
    }
    

    删除集合中的某个元素。使用remove语句,使用方法与add相似

    public List remove(List SeCourse)
    {
        System.out.println("移除第二个\n");
        SeCourse.remove(1);
        return SeCourse;
    }
    

    使用removeAll语句与addAll相似

    public List removeAll(List SeCourse)
    {
        System.out.println("移除第一位与第二位\n");
        Courses[] course1={(Courses)SeCourse.get(0),(Courses)SeCourse.get(1)};
        SeCourse.removeAll(Arrays.asList(course1));
        return SeCourse;
    }
    

    在写的时候都是加入Course类型的数据,尝试加入String类型的数据

     public List testtyple(List SeCourse)
    {
        System.out.println("添加一个字符串试试\n");
        SeCourse.add("input a String" );
        return SeCourse;
    }
    

    虽然编译通过了,但是在执行输出的时候String类型不能强转为Course类型。如果想要在编译期间对添加元素进行检查则可以使用泛型。

    public List<Courses> Sleccourse;
    

    在List后用<>中加类型。中间记得要实例化

    protected Listfan()
    {
        this.Sleccourse=new ArrayList<Courses>();
    }
    

    实例化中new ArrayList()也要加类型。使用泛型后如果再向集合中添加String类型的数据时候则会出现编译错误。

    泛型结合可以添加泛型的子类的对象实例。

    CourseChild ccr=new CourseChild();
        ccr.setName("C");
        ccr.setId("5");
        Sleccourse.add(ccr);
    

    使用泛型在输出的时候也可以简便很多不用从Object类型转为Course

     protected void displays()
    {
        for(Courses co:Sleccourse)
        {
            System.out.printf(co.getId() + ":" + co.getName()+"\n");
        }
    }
    

    使用indexOf()方法,从头开始找到元素的索引位置,lastindexOf()方法从尾开始找到元素的索引位置。

    判断List中是否包含某个对象,用.contains()。

    public void Contain()
    {
        Courses c2=(Courses)SeCourse.get(3);
        System.out.println("选课系统中有"+c2.getId()+":"+c2.getName()+"   "+SeCourse.contains(c2)+"\n");
        Courses c1=new Courses();
        c1.setName(c2.getName());
        c1.setId(c2.getId());
        System.out.println("选了系统中有"+c1.getId()+":"+c1.getName()+"   "+SeCourse.contains(c1)+"\n");
    
    }
    

    同样的name与ID但是第二个显示false,因为他们是两个完全不同的对象。如果想通过输入名字就可以判断序列中是否含有这个元素,用for循环虽然可以达到要求但比较麻烦。探究contains的原理,是通过调用每个Course的equals方法比较序列中是否有相同的,只要有相同的则就返回true。如果想要使用contains来直接通过名字判断是否存在,则需要重写Course中的equals的方法。

    @Override
    public boolean equals(Object obj)
    {
        if(this==obj)
            return true;
        if(obj==null)
            return  false;
        if(!(obj instanceof Courses))
            return false;
        Courses courses=(Courses)obj;
        if(this.getName()==null) {
            if (courses.getName() == null)
                return true;
            else
                return false;
        }else {
            if (this.getName().equals(courses.getName()))
            return true;
            else
                return false;
        }
    }
    

    再次运行程序

    set中与List一样通过修改Course中的equals方法。

    2.Set接口的使用

    public Set<Courses>coursese;
    coursese=new HashSet<Courses>();
    

    Set是元素无序并且不可以重复的集合,所以不能用get方法取出元素

    Student stu=new Student(Id,neme);
    System.out.printf(stu.getName()+"所选课程位:\n");
    for(Courses co:stu.coursese)
    {
        System.out.println("选择课程:"+co.getId()+":"+co.getName()+"\n");
    }
    

    get传入键值,如果如果映射关系存在则返回的就是key所对应的value值,否则返回一个空对象。

    3.Map接口的使用

    public Map<String,Student> student;
    student= new HashMap<String,Student>();
    

    通过put进行添加元素

    Student stu=new Student(ID,names);
    student.put(ID,stu);
    

    size则可以取得长度,get(key)如果存在则返回对应的key值,否则返回null,put(key,value),remove(key)

    Set<String>keyset=student.keySet();
        System.out.println("一共有"+student.size()+"个学生\n");
        for(String key:keyset)
        {
            Student info=student.get(key);
            System.out.println(key+":"+info.getName()+"\n");
        }
    

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000 25 100
    第一周 100/200 1/2 3/5
    第二周 300/400 2/3 4/9 使用everything与PowerCmd
    第三周 200/600 3/3 8/17 安装了idea,并将代码上传到gitosc上
    第四周 400/1000 4/4 15/32
    ![](http://images2015.cnblogs.com/blog/886876/201604/886876-20160403164306551-359873055.png)

    https://git.oschina.net/ISAcrystal/java.git

  • 相关阅读:
    二分查找递归和非递归版
    git常用命令记录
    总结下本周所学的建站流程极其经验
    Ubuntu下su命令失败的解决方法,及其环境变量失效解决
    ubuntu下node安装的三种方法
    Markdown学习及如何在博客园中使用
    nmcli使用方法
    Elasticsearch 升级 7.x 版本后,我感觉掉坑里了!
    Spring Data Elasticsearch基本操作自定义查询
    ElasticSearch——聚合
  • 原文地址:https://www.cnblogs.com/crystallin/p/5330244.html
Copyright © 2011-2022 走看看