java面试复习 I

1 多线程

在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下好处:

  • 避免点继承的局限,一个类可以继承多个接口。
  • 适合于资源的共享。

2 线程的四个状态

1. 新状态:线程已被创建但尚未执行(start() 尚未被调用)。
      2. 可执行状态:线程可以执行,虽然不一定正在执行。CPU 时间随时可能被分配给该线程,从而使得它执行。
      3. 死亡状态:正常情况下 run() 返回使得线程死亡。调用 stop()或 destroy() 亦有同样效果,但是不被推荐,前者会产生异常,后者是强制终止,不会释放锁。
     4. 阻塞状态:线程不会被分配 CPU 时间,无法执行。

sleep 未放弃锁,wait 放弃锁,需要使用notify才能获得锁。

join是 这个线程执行完了,再执行其他的。

3 string,stringbuffer

String是长度不可变的,StringBuffer和StringBuilder长度都是可以变化的。StringBuffer是线程安全的,StringBuilder不是线程安全的 .StringBuilder 是1.5开始的,建议优先选用它

4  匿名内部类

    匿名内部类是在new 对象的时候在后面接 大括号,实现方法。如

    

interface Person {
    public void eat();
}
 
public class Demo {
    public static void main(String[] args) {
        Person p = new Person() {
            public void eat() {
                System.out.println("eat something");
            }
        };
        p.eat();
    }
}

主要用在多线程处理上。参考文档:http://www.cnblogs.com/nerxious/archive/2013/01/25/2876489.html
 

5  内部类

 

1 访问形式

class Out {
    private int age = 12;
     
    class In {
        private int age = 13;
        public void print() {
            int age = 14;
            System.out.println("局部变量:" + age);
            System.out.println("内部类变量:" + this.age);
            System.out.println("外部类变量:" + Out.this.age);
        }
    }
}
 
public class Demo {
    public static void main(String[] args) {
        Out.In in = new Out().new In();
        in.print();
    }
}

2 静态内部类

只能访问外部类的静态变量。

因为内部类被静态化,因此Out.In可以当做一个整体看

3 私有内部类

只有外部类可控制,访问


 

 

原文地址:https://www.cnblogs.com/brucetie/p/3556316.html