今天看java编程思想,发现有些知识跟自己以前学的不一样,记录下来以供日后复习...
有错误的地方欢迎大家留言或者+qq跟我说:714588944(备注一下,谢谢)
持续更新~~
1.首先改正一下我一直以来的错误观点,==是比较对象的地址,equals()默认也是比较对象的地址
Integer a = new Integer(55);
Integer b = new Integer(55);
System.out.println(a.equals(b));
结果是true,因为这里包装类Integer已经帮我们重写了equals(); 所以这里a.equals(b)比较的是a和b的内容
但是事情并没那么简单,假设创建了自己的类:
public static void main(String[] args) throws Exception {
Dog dog1 = new Dog();
Dog dog2 = new Dog();
dog1.name = "yang";
dog2.name = "yang";
System.out.println(dog1.equals(dog2));
}
答案是false,这里equals比较的是地址,不是内容,因为这个类是自己定义的并没有重写equals方法,equals默认比较的是地址
2. Math.round是在数字上加了0.5,然后向下转型(就是通常说的四舍五入)
System.out.println(Math.round(5.5));//6
System.out.println(Math.round(-5.5));//-5
System.out.println(Math.round(-5.6));//-6
System.out.println(Math.round(-5.2));//-5
System.out.println(Math.round(-5.8));//-6
3.初始化顺序,先执行static静态的,并且只在类加载时执行一次,父类再子类