zoukankan      html  css  js  c++  java
  • java 重新学习 (六)

    一、java7以后,使用带泛型的接口,类定义变量,那么调用构造器创建对象时构造器的后面不必带上泛型。List<String> list = new ArrayList()<>;菱形语法

      java9甚至允许创建匿名内部类时使用菱形语法 A<String> a = new A<>{   }

    二、当创建了带泛型声明的接口或父类后,子类或者实现类继承实现父类接口时,父类与接口不可以在包含泛型形参。 如 A extends B<T> 写T 不允许,指明实际参数

    如 A extends B<String> 或 A extends B 也可以。调用方法时形参必须添加具体形参。

    三、类型通配符  List<?>,Set<?>,Map<?,?> 这种写法支持任何支持泛型声明的接口和类。    但是不能向其中添加对象(除了null)。因为无法确定集合中元素的类型。

      设定类型通配符上限 List< 子类 extends 父类>   但是不能向其中添加对象。因为无法确定集合中元素的类型。Bar是Foo的子类,A<Bar> 相当于 A<? extend Foo>的子类,可已经A<Bar> 赋值给 A<? extends Foo>类型的变量,这种型变方式称为协变。

      List<? extends Foo> list= new ArrayList<>();
    
      List<Bar> barList= new ArrayList<>();
    
      list= barList; //  

      设定类型通配符下限 List< ? super 子类>  ,Foo是Bar的子类,A<Bar>  A<Object> 赋值给 A<? super Foo>,这种型变称之为逆变。能往集合中添加Foo 或者Foo子类的对象。不能添加E的任何父类对象,读取时的对象为Object 类型。。

    List<? super Foo> list= new ArrayList<>();
    
    List<Bar> barList= new ArrayList<>();
    
    list= barList; //  逆变

    四、泛型方法 语法      修饰符 <T,S  多个逗号隔开> 返回值类型 方法名(形参列表){   //方法体}

    五、java7 捕获多种类型的异常是,多种异常类型之间要用  |   隔开。 异常变量有隐式final修饰不能 对 变量二次赋值

    try{
            
    }catch( A  |  B | C 变量){
       // ABC 代表不同的异常类    
      变量 = new Exception("exception"); 错误 变量是隐式final修饰。
    }

    六、异常对象的几个重要方法

      getMessage()  : 返回该异常的详细描述字符串

      printStackTrace() : 该异常的跟踪栈信息输出到标准错误输出。

      printStackTrace(PrintStream s)  将该异常的跟踪栈信息输出到指定输出流

      getStackTrace() 返回该异常的跟踪栈信息。

    七、垃圾回收不会回收任何物理资源,如数据库连接,网络连接,磁盘文件等。这些物理资源必须进行显式回收。

    八、java9 会在try语句块中自动关闭资源。相当于包含了隐式的finanlly块(这个finally块用于关闭资源),因此这个try语句可以没有catch或者finally

    创建对象 A ,B  
    try( A,B){
    
    }
    
    或者
    
    try(创建对象 A ;B  ){
    
    }

    九、check异常   要么显式声明抛出,要么显式捕获并处理。 uncheck异常 runtimeException ,error.

    十、使用throws 声明抛出异常。 在方法上使用 ,void method () throws exception 1,exception2(){}

    十一、throw new Exception("exception"); 

    十二、声明自定义异常都应该继承Exception基类,如果希望定义Runtime异常,要继承RuntimeException基类。定义自定义异常时通常要提供两个构造器

       一个是无参构造器;另一个是带一个字符串参数的构造器(也就是异常对象的getMessag()方法的返回值)。  

    十三、避免把java的异常跟踪栈打印出来。要编写代码处理。

  • 相关阅读:
    155. 最小栈
    160. 相交链表
    PAT 1057 Stack
    PAT 1026 Table Tennis
    PAT 1017 Queueing at Bank
    PAT 1014 Waiting in Line
    PAT 1029 Median
    PAT 1016 Phone Bills
    PAT 1010 Radix
    PAT 1122 Hamiltonian Cycle
  • 原文地址:https://www.cnblogs.com/wenbuzhu/p/10008124.html
Copyright © 2011-2022 走看看