一,java基础和数据结构
1.equals和==的区别
package testJavaBase; public class TestEquals { public static void main(String[] args) { int i=10; int j=10; System.out.println(i == j);//对于基本数据类型==就是比较其值是否相同,true Person p1 = new Person(); p1.setName("ji"); Person p2 = new Person(); p2.setName("ji"); System.out.println(p1 == p2);//对于引用数据类型==比较的是地址是否相同,false System.out.println(p1.equals(p2));//false //此equals方法是从Object中继承来的 //在Objecy中的定义就是return (this == obj); //当Person重写了equals时就是true了 String str1 = new String ("jiyunfei"); String str2 = new String ("jiyunfei"); System.out.println(str1 == str2);//false,两次new就是两个地址 System.out.println(str1.equals(str2));//true,此equals方法是String类重写的 String str3 = "ji"; String str4 = "ji"; System.out.println(str3 == str4);//true,因为"ji"是在 字符串常量池 中的,str3和str4都指向这块地址 System.out.println(str3.equals(str4));//true,此equals方法是String类重写的 } } class Person{ private String name; public void setName(String name) { this.name = name; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Person other = (Person) obj; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } }
2.abstract修饰的方法不能有方法体
属性 | 抽象是为了让子类重写,属性没有必要 |
私有方法 | 私有方法无法被子类重写,会报错的 |
构造器 | 子类无法重写父类的构造器 |
静态方法 | 静态方法可以用类名直接调用 |
final方法 | final表示不能重写 |
3.final修饰符
final一旦修饰了变量,那么此变量就是一个常量,必须也仅能赋一次值
final修饰类,那么此类不能被继承
final修饰方法,则此方法不能被重写
final若修饰的是一个引用,那么此引用不能再引用其他地址
时间: 2024-10-13 02:56:23