java小问题

来源:互联网 发布:定制音乐盒淘宝 编辑:程序博客网 时间:2024/06/04 18:29

1.  面向对象编程有哪些特点?

封装、继承、多态

封装:就是隐藏对象的属性和实现细节,仅对外提供公共访问方式。

封装的好处:隐藏类的实现细节;让使用者只能通过程序员规定的方法来访问数据;可以方便的加入存取控制语句,限制不合理操作

继承:是 java中实现代码重用的重要手段之一.java中只支持单继承,即每个类只能有一个父类.继承表达的是 is a 的关系,或者说是一种特殊和一般的关系.

多态:多态的三个条件:

    1.继承的存在(继承是多态的基础,没有继承就没有多态).

    2.子类重写父类的方法(多态下调用子类重写的方法).

    3.父类引用变量指向子类对象(子类到父类的类型转换).

子类转换成父类时的规则:

 将一个父类的引用指向一个子类的对象,称为向上转型(upcastiog),自动进行类型转换.

此时通过父类引用调用的方法是子类覆盖或继承父类的方法,不是父类的方法.

此时通过父类引用变量无法调用子类特有的方法.

2.  StringStringBufferStringBuilder之间区别。

三者在执行速度方面的比较:StringBuilder >  StringBuffer >  String

StringBuilder:线程非安全的

StringBuffer:线程安全的

3.  Integerint有什么区别

为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer

4.  String类能否被继承?

不可以,因为String类有final修饰符,final修饰的类是不能被继承的

5.  finalfinallyfinalize的区别

1final为关键字;

2finalize()为方法;

3finally为为区块标志,用于try语句中;

6.  equals==的区别

1.基本数据类型:byte,short,char,int,long,float,double,boolean.

他们之间的比较,应用双等号(==,比较的是他们的值。

2.复合数据类型()

当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。

对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是基于他们在内存中的存放位置的地址值的,因为Objectequals方法也是用双等号(==)进行比较的,所以比较后的结果跟双等号(==)的结果相同。

参考:http://www.cnblogs.com/zhxhdean/archive/2011/03/25/1995431.html

7.  java的参数是地址传递还是值传递?

值传递(JAVA中的参数传递全是以值传递的。是基本类型,就拷贝一个基本类型传进方法;是引用,就拷贝一个引用变量传进去方法)

8.  数据库为什么要使用索引?

创建索引的好处

–帮助用户提高查询速度

–利用索引的唯一性来控制记录的唯一性

–可以加速表与表之间的连接

–降低查询中分组和排序的时间

创建索引的坏处

–存储索引占用磁盘空间

–执行数据修改操作(INSERTUPDATEDELETE)产生索引维护

9.  Spring事务管理

spring的事务管理分为声明式跟编程式。声明式就是在Spring的配置文件中进行相关配置;编程式就是用注解的方式写到代码里。

参考:http://www.cnblogs.com/newsouls/p/3988216.html