Q1 ‘==’与equals()方法区别?
‘==’用法
case1:用于比较基本类型变量的值是否相等
case2:如果变量所指为对象类型,则比较的是否引用同一对象
例:Object obj=new Object();//变量obj存放在栈中,其值为所指对象内存首地址,new Object() 对象存放在堆内存中
equals()方法
比较两个独立对象的值是否相等
例:
String str1=new String("hh");
String str2=new String("hh");
str1.equals(str2);//结果是true 因为两个字符串的值一样
str1==str2;//结果是false 引用不同
备注:如果一个类没有equals方法则默认继承Object类的equals方法如下
boolean equals(Object o){
return this==o;//可以看出默认还是'=='这就是为什么对两个对象equals一直为false
}
所以如果比较两个对象值需要覆写equals方法,自己可以定义规则,决定什么时候判定两个对象相等。
Q2:static成员变量与实例变量区别?
1.静态成员变量也称类变量,只要程序加载了该类的字节码,即使没有生成对象,也可为该变量分配内存,也可使用(通过类名访问)
2.实例变量也称对象变量只能实例对象才可使用
public class Obj
{
public static int var1=0;
public int var2=0;
public Obj()
{
var1++;//没new 一个对象时 var1的值加1,且这个变量是所有该对象共享的,可以统计生成对象个数
var2++;//每次new 一个对象值都为1
}
备注:static 方法不可以调用内部非静态方法(非静态方法必须生成实例对象才可调用,而static方法不需要生成对象就可以调用)
Q3;基本类型封装类与基本类型的区别?
1.int 与Integer
1.默认int 为0 ,Integer为赋值为Null(因此Integer可以区分是否赋初值,在JSP开发时页面默认显示为空字符串,而int显示为0)、
2.Integer包含了操作整数相关的方法,如将一个字符串转换为整数,获取int类型值得范围
Q4:Math中三个取整方法区别?例10.5 与-10.5
ceil() 向上取整 11 -10
floor() 向下取整10 -11
round() 等效于floor(x+0.5) 11 -10
Q5:Overload () 与Override()方法的区别?
Overload 重载 :一个类中可以有多个同名的方法,参数列表不同。参数的个数,参数的类型不同与返回值的类型,抛出的异常多少无关。
1.jvm根据不同的参数类型,个数,或顺序(需要类型不同)
2.不可通过返回值类型、异常书面、权限重载方法
3.若继承时父类方法为private则子类不能重载只是定义一个新方法
Override 重写:子类可以重写父类的方法,或者接口实现。
1.子类的方法可以与父类的方法名及参数相同,通过子类实例对象调用此方法,是调用的子类方法。
2.子类方法 只能抛出比父类更少的异常或者异常的子类(原因:子类可以解决父类的问题,但不能比父类有更多的问题)
3.父类方法为private则此方法不成为Override方法,是一个新的方法
4.返回值必须相同
5.面向对象编程中多态的一种体现