Java-Basic-易混淆的概念与方法

来源:互联网 发布:娇医有毒知婉孩子谁的 编辑:程序博客网 时间:2024/05/16 10:34

1.什么是泛型,使用泛型有何优点?泛型List和普通List有什么不同

泛型是对java语言中数据类型的一种扩展,以支持创建可以按类型进行参数化的类。
所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中, 分别称为泛型类、泛型接口、泛型方法。
Java语言引入泛型的好处是安全简单。

优点:提高java的类型安全,在获取集合元素时消除强制类型转换,提高代码重用率。

泛型List可以实例化为只能存储某种特定类型的数据,普通List可以实例化为存储各种类型的数据。

2.重写和重载的区别。

重载(Overloading)
(1)多个同名函数同时存在,具有不同的参数个数/类型。
(2)在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。
(1)父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写
(Overriding)。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。
重写
(1)子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。
(2)若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。
(3)子类函数的访问修饰权限不能少于父类的;

3.throw和throws的区别

throw是语句抛出一个异常。 语法:throw (异常对象);
throw e; throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常) 语法:(修饰符)(方法名)([参数列表])[throws(异常类)]{……}
public void doA(int a) throws Exception1,Exception3{……} 两者都是用于抛出异常的功能。

4.迭代器(iterator)和增强for循环

(1)增强for循环本质上就是调用了iterator实现的,但 增强for循环有缺点,不能动态的删除集合内容,不能获取下标等。
(2)ArrayList由于使用数组实现,因此下标明确,最好使用普通循环。
(3)而对于 LinkedList 由于获取一个元素,要从头开始向后找,因此建议使用 增强for循环,也就是iterator。

5.Java 中堆和栈有什么区别?

JVM中堆和栈属于不同的内存区域,使用目的也不同。栈常用于保存方法帧和局部变量,而对象总是在堆上分配。栈通常都比堆小,也不会在多个线程之间共享,而堆被整个
JVM 的所有线程共享。

6.poll() 方法和 remove() 方法的区别?

poll() 和 remove() 都是从队列中取出一个元素,但是 poll() 在获取元素失败的时候会返回空,但是 remove()
失败的时候会抛出异常。

7.“a==b”和”a.equals(b)”有什么区别?

8、abstract class和interface有什么区别

如果 a 和 b 都是对象,则 a==b 是比较两个对象的引用,只有当 a 和 b 指向的是堆中的同一个对象才会返回 true,而
a.equals(b) 是进行逻辑比较,所以通常需要重写该方法来提供逻辑一致性的比较。例如,String 类重写 equals()
方法,所以可以用于两个不同对象,但是包含的字母相同的比较。

9.抽象类和接口的区别

*声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract
类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。

*接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。instanceof运算符可以用来决定某对象的类是否实现了接口.

10.EJB与JAVA BEAN的区别?

Java Bean 是可复用的组件,对JavaBean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于JavaBean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常JavaBean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。

0 0
原创粉丝点击