快速加载类的方法:
Class cl1=Random.class;
Class cl2=int.class;
Class cl3=Double[].class;
//快速创建一个类的实例
String s="java.util.Random"
Object m=Class.forName(s).newInstance();
异常的类型:未检查异常和已检查异常
接口:接口不是类,不能实例化一个接口对象
但是声明接口变量:Comparable x;接口变量必须引用实现了接口的类 x=new xxx()[xxx实现了Comparable接口]
接口中方法默认我public,但是在实现接口的时候一定要将方法的修饰词写位public。
接口与抽象类的区别:
参数 | 抽象类 | 接口 |
默认方法的实现 | 有默认的方法实现 | 不可以有具体的实现方法 |
实现 | extends | implements |
构造器 | 可以有构造器 | 不可以 |
访问修饰符 | 抽象方法可以有public、protected和default这些修饰符 | 只能是public(默认) |
main方法 | 抽象方法可以有main方法并且我们可以运行它 | ava8以后接口可以有default和static方法,所以可以运行main方法 |
多继承 | 只能继承一个抽象类 | 可以实现多个接口 |
添加新方法 | 增加方法后,提供默认实现,不需要修改代码 | 必须实现新增加的方法 |
Lambda表达式(尚未搞清楚,研究ing)
(String first,String second) ->
{
if(first.length()<second.length()) return -1;
else if(first.length()>second.length()) return ;
else return 0;
}
//
System.out::println ===== x->System.out.println(x)
::操作符分隔方法名与对象或者类名
object::instanceMethod
Class::staticMethod
Class::instanceMethod
内部类:指定义在一个类中的类。
内部类可以访问该类定义所在的作用域中的数据。
内部类可以对同一包中的其他类隐藏。
当想要定义一个回调函数且不愿意编写大量代码的时候,使用匿名内部类比较便捷。
任何非静态内部类中,都不能有静态数据,静态方法或者又一个静态内部类。但是静态内部类中可以拥有一切。
局部内部类:局部内部类不能使用public或者private访问说明符进行声明。它的作用域被限定在声名这个局部内部类的块中。局部内部类对于外界是绝对隐藏的。
public void start(){
class inner{
System.out.println("局部内部类");
}
}
其中的inner局部内部类只有start方法知道它的存在。
局部内部类只能访问被定义为final类型的变量。
匿名内部类:匿名内部类不能有构造器,匿名内部类将构造器传给超类构造器。
匿名内部类用来实现事件监听和其他回调。
静态内部类:使用静态内部类只是为了把一个类隐藏在另外一个类的内部,并不需要内部类引用外围内部类对象,所以可以将内部类定义为static对象。
只有内部类可以声明为static,静态内部类可以有静态方法和静态域。
声明在接口中的内部类自动成为static和public类。