try 和finally

  1. try 不能单独使用

  2. finally 修饰的语句一定会执行,经常用来开启和关闭流

  3. 将finally与try ---catch连起来使用

     public static void main(String[] args)  {new  FileInputStream file = null;try{file = FileInputStream("C:\\Users\\Administrator\\Desktop\\大三下");System.out.println("main begin");}catch (FileNotFoundException e){System.out.println("xyz begin");}catch(NullPointerException e){System.out.println("sss begin");}finally{//finall 修饰的一定会执行,就算前面的catch语句出现错误,也会执行//为了防止出现空指针异常对它进行判断if(file !=null){try{file.close();//关闭流}catch(NullPointerException e){}}}
    ​}
  4. 只有tuichujava虚拟机能不执行finally

    ew  FileInputStream file = null;try{file = FileInputStream("C:\\Users\\Administrator\\Desktop\\大三下");System.exit(0)//退出java虚拟机//下面的finally不执行}catch (FileNotFoundException e){System.out.println("xyz begin");
  5. 方法体中的规则:

    • 方法体中的代码必须遵循自上而下的顺序依次拙行执行

    • retur语句一旦执行,整个方法必须结束

       public static void main(String[] args) {//调用m方法int x = m();System.out.println(x);//返回的是100不是101}public static int m(){int i = 100;try{//return一定最后执行return i;}finally {i++;}}

    final finally finalize有什么区别

    • final:是一个关键字,表示最终 的 不可以变的

    • finally 也是一个关键字和try联合使用,只用在异常处理机制中,且finally语句块中的代码是一定会执行的

    • finalize()的objrvt类中的一个方法,作为方法名出现,所属finalize是标识符

    自己定义一个异常的步骤

    • 创建一个异常类集成运行时异常或者编译时异常

    • 写无参和有参(带有String参数)两个构造方法

      ​
      public class Exception07 extends RuntimeException{public Exception07() {}
      ​public Exception07(String message) {super(message);}
      ​
      }
      ​
  1. 子类不能抛出比父类更多的异常

    • 父类没有抛出异常子类就不能抛出异常

    • 父类抛出异常,子类在重写父类方法的时候也可以抛出异常,抛出的异常可以说父类异常或者父类异常的子异常(如父类抛出运行时异常,子类可以抛出运行时异常或者空指针异常)

作业

作业一

//程序开始执行时,提升用户输入“用户名”和“密码”信息 //输入信息之后,后台java程序模拟用户注册 //注意:完成注册的方法放到一个单独的类中 //异常自定义即可 //class UserService{ // public void register(String username,String password){ // }//在这个方法中完成注册 // } 编写main方法,在main方法中接受用户输入的信息,在main方法 中调用UserService的register完成注册

  1. HomeWorTest类

public static void main(String[] args) {//创建UserService对象UserService userService = new UserService();//创建获取键盘数据Scanner sc = new Scanner(System.in);//获取键盘数据System.out.println("请用户输入用户名");String username = sc.next();//获取键盘数据System.out.println("请用户输入密码");String password = sc.next();//调用 userService.register方法try {userService.register(username, password);
​} catch (MyException e) {
​System.out.println(  e.getMessage());}
​
​}
}
  1. 异常类

public class MyException extends Exception{// 创建无参构造public MyException(){
​}//创建有参构造public MyException(String s){super(s);}
}
​
  1. UserService类

    public class UserService {
    public void register(String username,String password) throws MyException {
    ​if (username == null ||username.length()<3 ||password.length()<4){//创建异常对象/*  MyException me = new MyException("注册失败");throw me;*/throw new MyException("注册失败");}System.out.println("注册成功");
    ​}
    ​
    ​
    }
    ​

作业二

开放性题目

写一个类Army代表一只军队,这个类有一个属性Weapon数组w(用来存储军队所拥有的所有武器),该类还提供一个构造方法,在构造方法里通过传一个int类型的参数来限定该类所有最大武器数量,并且用这一大小来初始化数组w

该类还提供一个方法addWeapon(Weapon wa),表示吧参数所代表的武器加入到数组w中,在这个类中还定义两个方法attackAll()让w数组中的所有武器攻击:

以及moveAll()让w数组中的所有可移动的武器移动

写一个main方法请测试

提升:

Weapon是一个父类,应该有很多子武器,

这些子武器应该有以下是可移动的,有一些是可攻击的

类在强制转换成接口的时候,可以与接口之间没有继承关系

集合

集合也是一个对象

  1. 什么是集合?有什么用?

    • 数组其实就是一个集合,集合实际上就是一个容器,可以来形容其他类型数据

    • 集合是一个容器,是一个载体,可以一次容纳多个对象

    • 在实际开发中,假设链接数据库,数据库当中有10条记录,那么假设把这10条记录查询出来,在java程序中会将10条,数据封装成10个java对象,然后将10个java对象放在某一个集合当中,将集合传到前段,然后遍历,将一个数据一个数据展示出来

  2. 集合不能直接存储基本数据类型,另外集合也不嫩直接存储java对象,集合当中存储的欧式java对象的内存地址(或者说是存储的引用)

    集合在Java中本身是一个容器,是一个对象,集合中任何时候存储的都是引用

  3. java中每个不同的集合,底层会对应着不同的数据结构,往不同的集合存数据,会存储道不同的数据结构中,不同的数据结构的存储方式不同

  4. java集合分为两大类

    • 一类是单个方式存储元素:

      单个方式存储元素,这一类集合中超级父类接口:java.util.Collection

    • 一类是以键值对的方式存储元素(一对一对的存)

      以键值对的反思存储元素,这一类集合中超级父类接口:java.utile.Map

  5. 迭代的意思是遍历

总结(所有的类实现):

  1. ArrayList:底层是数组

  2. LinkedList:底层是双向链表

  3. Vector:底层是数组,线程安全的,效率低的,使用较少

  4. HashSet:底层是HashMap,放到TreeSet集合中的元素等同于放到TreeMap集合key部分了

  5. TreeSet:底层是TreeMap,放到TreeSet集合中的元素等同于放到了TreeMap的key部分了

  6. HashMap:底层是哈希表

  7. Hashtable:底层也是哈希表,只不过线程安全的,效率低

  8. Properties:是线程安全的,并且key和value智能存储字符串

  9. TreeMap:底层是二叉树,TreeMap集合的key可以自动按照大小顺排列

  10. List集合存储元素的特点

    • 有序可以重复

    • 有序:存进去的顺序和取出的顺序相同,每一个元素都有下标

    • 可以重复:存进去1,可以在存储1

  11. Set(Map)集合存储元素的特点

    • 无序不可以重复

    • 无序:存进去的顺序和取出的顺序不一定相同,另外Set集合中元素没有下标,

    • 不可以重复:存进去1,不能在存储1

  12. SortedSet(SortedMap)集合存储元素特点

    • 首先是无序不可以重复的,但是SortedSet集合中的元素是可以排序的(按大小排序)

    • 无序:存进去的顺序和取出时的顺序不一定相同

    • 不可以重复:存了1,就不能在存1

  13. Collection中的iterrate迭代器例子

      public static void main(String[] args) {//创建一个多态Collection c = new ArrayList();c.add("美国队长");c.add("绿巨人");c.add("幻世");c.add("钢铁侠");c.add("雷神");//创建一个迭代器对象Iterator it = c.iterator();// 遍历    boolean b = it.hasNext();如果 还有违背迭代的元素,则返回true,// 调用  Object next = it.next();获取当前的内存地址boolean b =it.hasNext();
    //it.hasNext()输出的true 和false 如果是true 进入while循环,并且用 Object next = it.next( );请获取当前的值//这里不管里面是对象还是说明,通通输出的是Object类型while(it.hasNext()){//存进去是什么类型,取出来也是什么类型,只不过在打印输出的时候会转成字符串Object next = it.next();System.out.println(next);}
    ​

最新文章

  1. CIO需“野蛮生长” 2017中国CIO高峰论坛7月开幕
  2. ASP.NET MVC Controller激活系统详解:默认实现
  3. 无意义”的标签div和span的区别
  4. B站疯传,年度数据分析+Python资料出炉,错过再等一年!
  5. JavaScript原生对象常用方法总结
  6. c语言求乘法,急!!!!c语言:求n次多项式的加法和乘法
  7. 2016OSC源创会年终盛典-架构与数据专场-杨亮
  8. python 重写抽象类编译错误_从零开始的Java之旅5.0继承、super、this、抽象类
  9. W​o​r​d​P​r​e​ss数据结构分析
  10. 2021级C语言大作业 - 霓虹深渊
  11. 一键卸载MSSQL_1.2 Beta版
  12. Arduino教程六—DS1302时钟模块
  13. java后台json集合传前台js
  14. word2019关闭时无响应
  15. cannot find -l*** 问题的解决办法
  16. 行列式与矩阵的初等变换总结
  17. 播布客视频-Auditing笔记
  18. 【HTML——线条雨落】(效果+代码)
  19. 购物网站制作——头部header(index.html)
  20. matlab在量子力学中的应用,一个关于量子力学中的matlab的问题

热门文章

  1. Eventually Consistent(最终一致性)
  2. ACT8846 和 RK818 驱动
  3. OPENCL异构计算——四大模型
  4. Java基础三:流程控制语句
  5. 快到我跟老婆的结婚纪念日了
  6. Hibernate之代码创建SessionFactory
  7. 采用pci的插槽计算机,从VGA视频采集卡看PCI插槽与PCI-E插槽
  8. 嵌入式linux开发,telnet,telnetd服务移植
  9. dell服务器安装出现 scanning for devices
  10. notifyicondata2