equals与==,覆盖和重载,static,final基本规则

String a=new String("foo");
String b=new String("foo");
两条 new语句创建了两个对象,然后用 a,b这两个变量分别指向了其中一个对象,这
是两个不同的对象,它们的首地址是不同的,即 a 和 b 中存储的数值是不相同的,所以,
表达式 a==b 将返回 false,而这两个对象中的内容是相同的,所以,表达式
a.equals(b)将返回 true。


“==”比较的是内存地址。   equals比较的是内存地址里面存储的值


方法的覆盖和重载
覆盖:
    1. 覆盖方法不能比它所覆盖的方法访问性差(访问权限不能缩小)。
    2. 覆盖方法不能比它所覆盖的方法跑出更多的异常。
    3. 相同的方法名,返回值类型,参数列表。一个方法覆盖掉了另一个方法
重载:
    1. 方法名必须相同
    2. 参数列表不同
    3. 方法的返回值类型可以相同也可以不同。仅仅是返回类型不同不足以称为方法的重载。
    4. 使用相同的名字创建多个方法(返回值类型,参数列表不同)
       
多态是同一个行为具有多个不同的表现形式或形态的能力。


static:
    1. 在同一个类中,静态方法只能访问静态属性或静态方法。
    2.  在同一个类中, 静态方法不能直接调用非静态方法。
    3. 静态方法中不存在当前对象,所以不能使用this和super关键字。
    4. 静态方法不能被非静态方法覆盖
    5. 构造方法不能声明为静态的。
    6. 局部变量不能使用static修饰。

final:
    1. 标记的类不能被继承。
    2. 标记的方法不能被子类重写。
    3. 标记的变量(成员变量或局部变量)成为常量,只能赋值一次。
    4. 标记的成员变量必须在声明的时候赋值,如果在声明的时候没有赋值那么只有一次赋值的机会,而且再能在构造方法中赋值,然后才能使用。
    5. 标记的局部变量可以只声明不赋值,然后再进行一次的赋值。
    

String,StringBuffer,StringBuilder,StringHelper区别:
         String:字符串常量,是final修饰的是不可变的对象。
         StringBuffer:线程安全的可变字符序列。
         StringBuilder:非线程安全的。
         StringHelper:字符串处理的辅助类。


















猜你喜欢

转载自blog.csdn.net/weixin_39513166/article/details/78695220