JAVA小问题总结

来源:互联网 发布:java file 绝对路径 编辑:程序博客网 时间:2024/06/08 16:46

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.面向对象编程中多态的一种体现



0 0