String、StringBuffer和StringBuilder的区别
都可以储存和操作字符串。其中String是只读字符串(被定义为final型的,不可被继承),意思是String引用的字符串内容是不能改变的,而StringBuffer和StringBuilder类表示的字符串对象可以直接进行修改,StringBuilder和StringBuffer方法完全相同,区别在于StringBuilder是单线程环境下使用的,没有被synchronized修饰,因此执行效率比StringBuffer略高,但线程不安全。
Exception和Error区别
Error表示系统的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的状况;Exception表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是说,它表示如果程序运行正常,从不会发生的情况。
Java面向对象的三个特征与含义
1)继承
2)多态:要实现多态需要做两件事:1.方法重写(子类继承父类并重写父类中已有的或抽象的方法);2.对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为);
3)封装:把数据和操作数据的方法绑定起来,对数据的访问只能通过它定义的接口。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口。
Overload:重载,方法名相同,但参数类型、个数存在不同。
Override:重写,在子类继承父类的时候子类中可以定义某方法与其子类有相同的名称和称呼,当子类在调用这一方法时自动调用子类的方法,而父类相当于被重写了。
overload是编译期多态的表现,override是运行期多态的表现。
内部静态类和非静态内部类的区别
内部静态类不需要有指向外部类的引用,而非静态内部类需要有指向外部类的引用。内部静态类只能调用外部类中的静态成员,不能调用非静态成员。非静态内部类可以调用外部类的所有静态和非静态成员。一个非静态内部类不能脱离外部类实体被创建。
反射机制
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取信息以及动态调用对象的方法的功能称为java语言的反射机制。
作用:1)运行时取得类的方法和字段的相关信息;2)创建某个类的新实例(.newInstance());3)取得字段引用直接获取和设置对象字段,无论访问修饰符是什么。
用处:1)观察或操作应用程序的运行时行为;2)调试或测试程序,因为可以直接访问方法、构造函数或成员字段;3)通过名字调用不知道的方法并使用该信息来创建对象和调用方法。
泛型的优缺点
优点:使用泛型类型可以最大限度地重用代码、保护类型的安全以及提高性能。泛型最常见的用途是创建集合类。
缺点:在性能上不如数组快。