首页 > 代码库 > 就业准备

就业准备

一,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修饰的方法不能有方法体

以下是不能用abstract修饰的
属性 抽象是为了让子类重写,属性没有必要
私有方法 私有方法无法被子类重写,会报错的
构造器 子类无法重写父类的构造器
静态方法 静态方法可以用类名直接调用
final方法 final表示不能重写

  3.final修饰符

    final一旦修饰了变量,那么此变量就是一个常量,必须也仅能赋一次值

    final修饰类,那么此类不能被继承

    final修饰方法,则此方法不能被重写

    final若修饰的是一个引用,那么此引用不能再引用其他地址

就业准备