11、"=="和equals方法究竟有什么区别?
他们的区别主要存在在引用数据类型上
==为比较两侧的对象是否同一对象,是用内存地址来比较的
equals是对象的方法,默认是用内存地址比较,重写后,主要是用来比较两侧的对象的值是否相同,和equals方法中的实现有关
==是运算符,可以两侧都为null,但equals左侧的引用指向的对象不能空,不然有NullPointerException
除非需要比较两个引用指向的对象是同一对象,一般都使用equals方法进行比较。尤其是String之类的值对象,另外,常量尽量放在比较的左侧
12、静态变量和实例变量的区别?
在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。
在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。
总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
13、是否可以从一个static方法内部发出对非static方法的调用?
不可以。非static方法即实例对象方法,是属于某个对象的,必须在对象被创建后才能被调用,成员方法的内部其实隐藏着一个this引用;而static方法是属于类对象的,不属于实例对象,因此static方法在执行时,不能获得当前对象的this引用,从而不能直接调用实例对象的方法。
14、Integer与int的区别
int是java提供的8种原始数据类型之一,占用4个字节,直接存值;
Integer是引用数据类型,是int的封装类。
1. 默认值:int的默认值为0,Integer的默认值为null。例如考试成绩为0,表示参加了考试,但成绩为0分,但null意味未参加考试。
2. JSP开发中,Integer的默认值为null,在EL表达式时,文本框显示的值为空白;如果使用int默认值为0,文本框显示的值是0。int不适合在展示层使用。
3. 在Hibernate中,如果将自增ID字段设置成Integer类型,如果值为null,则表示临时对象,保存时,会自动升成ID值。而使用int类型,则需要在hbm映射文件中,设置unsaved-value属性的值为0。
4. Integer提供了许多跟整数运算相关的操作方法,例如与字符串的转换,还定了一些整数的最大值和最小值的转换。
15、Math.round(11.5)等于多少? Math.round(-11.5)等于多少?
Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。
Math类提供了三个与取整有关的方法:ceil、floor、round
方法名^英文意思^功能^示例
ceil^天花板^向上取整^ceil(11.5)=12; ceil(-11.5)=-11
floor^地板^向下取整^floor(11.5)=11; cell(-11.5)=-12
round^圆形^四舍五入^Round(11.5)=12; round(-11.5)=-11