编程语言
首页 > 编程语言> > Java学习随笔小计(1)

Java学习随笔小计(1)

作者:互联网

Java中 == 和 equals() 有何区别

==

equals()

重写equals()方法

class User {
        String name;
        int age;

        //重写其equals()
        public boolean equals(Object obj) {
            if (obj == this) {
                return true;
            }
            if (obj instanceof User) {
                User u = (User) obj;
                return this.age == u.age && this.name.equals(u.name);
            }
            return false;
        }
    }

Java垃圾回收机制

finally代码块执行情况

try-catch-finally代码块的执行顺序

finally代码块不执行的情况

public class Test {
    public static void main(String[] args) {
        Thread t = new Thread(new Task());
        t.setDaemon(true); //置为守护线程
        t.start();
        try {
            TimeUnit.SECONDS.sleep(1);
        } catch (InterruptedException e) {
            throw new RuntimeException("the " + Thread.currentThread().getName() + " has been interrupted", e);
        }
    }
}

class Task implements Runnable {
    @Override
    public void run() {
        System.out.println("enter run()");
        try {
            System.out.println("enter try block");
            TimeUnit.SECONDS.sleep(5); //阻塞5s
        } catch (InterruptedException e) {
            System.out.println("enter catch block");
            throw new RuntimeException("the " + Thread.currentThread().getName() + " has been interrupted", e);
        } finally {
            System.out.println("enter finally block");
        }
    }
}
/**
 * 控制台打印如下
 * enter run()
 * enter try block
 */

finally代码块存在的意义就是一定会被执行的代码块,因此只需知道finally代码块何时不会被执行,尽量避免该类操作

标签:Java,代码,equals,小计,finally,线程,回收,return,随笔
来源: https://blog.csdn.net/echo_hjk/article/details/122152295