java学习之面试题3

来源:互联网 发布:淘宝80字通用好评 编辑:程序博客网 时间:2024/05/20 22:35

1、“==”和equals方法究竟有什么区别?

答:(1):对于基本数据类型,只能使用"==";

(2):对于引用类型,使用"=="相当于比较两边的对象是否是同一个对象,使用equals方法相当于比较两个对象的内容是否一致。例如:

String str1 = new String("I love java");

String str2 = new String("I love java");

System.out.prinln(str1 == str2);//false,因为str1和str2分别引用了不同的对象。

System.out.println(str1.equals(str2));//true,因为str1和str2,它们所引用的对象里面的内容一样。

(3):对于自定义的类,系统默认是继承了Object的equals方法,而这个默认的方法就是使用了==操作符,也就是判断两个引用变量引用的是否是同一个对象,这个时候使用==和使用equals得到的结果是相同的。所以,一般应用中都要重写equals方法。

2、静态变量和实例变量的区别?

答:(1):静态变量和实例变量都是类的成员变量,在语法上,静态变量前要加static,而实例变量前不加。

(2):实例变量属于对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量,它必须通过实例变量来引用。

(3):静态变量属于类,它不属于某个实例对象,只要程序加载了类的字节码,静态变量就会被分配空间,它可以直接使用类名来引用。

例如:


3:是否可以从一个static方法内部发出对非static方法的调用?

答:不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用式不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何的实例对象,如果从一个static方法中发出对非static方法的调用,那么非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以一个static方法内部不可以直接调用非static方法。

4:Integer与int的区别?

答:(1):int是java提供的8种基本类型之一,Integer是java为int提供的包装类。

(2):int的默认值是0,Integer的默认值是null。也就是说,Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0,则只能选择Integer。

(3):Integer提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数,Integer中还定义了表示整数最大值和最小值的常量。

5:Math.round(11.5)等于多少?Math.round(-11.5)等于多少?

答:round方法,表示“四舍五入”,算法为Math.floor(x + 0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果是12,Math.round(-11.5)的结果是-11。

顺便提一句,Math类中提供了三个与取整有关的方法:floor、ceil、round。其中,floor是向下取整,所以,Math.floor(11.5)的结果是11.0,Math.floor(-11.5)的结果是-12.0。ceil是向上取整,所以,Math.ceil(11.5)的结果是12.0,Math.ceil(-11.5)的结果是-11.0。





0 0