线程阶段测试分析

来源:互联网 发布:叉叉助手获取数据失败 编辑:程序博客网 时间:2024/06/14 20:40

修饰符
public:成员变量可以被项目中的任何方法访问。
protected:只能被同包下的方法访问,但可以被子类可以访问。
private:只能在当前类被访问。
default:只能被同一个包下的方法访问。

抽象类和接口
这里写图片描述

静态变量与实例变量
static变量就相当于C++中的全局变量,在类装载时就初始化。不管有没有创建它的对象。每当编译了一个新类,就会产生一个Class对象(即被保存在同名的.class文件中).在运行时当我们想生成这个类的对象时,运行这个程序的jvm会首先检查这个类的Class对象是否已经加载.如未加载,jvm就会根据类名查找.class文件,并将其载入。如果已经载入了,就不会再次被加载。
实例变量则是创建的时候才被才加载。

这里写图片描述

sleep()、suspend()、wait()的区别
这里写图片描述

线程状态:
1、new
2、Runnerable:可执行状态
3、waiting:等待
4、timeed-waiting:有时间的等待
5、blocked:阻塞
6、terminated:终止
wait()可以让线程从运行状态进入阻塞状态。

传值、传引用
传值:基本数据类型
传引用:类类型+数组

public class Test {    String string = "good";    char[] a = { 'a', 'b', 'c' };    public static void main(String[] args) {        Test test = new Test();        test.change(test.string, test.a);        System.out.print(test.string + " ");        for (int i = 0; i < test.a.length; i++) {            System.out.print(test.a[i]);        }    }    public void change(String string, char a[]) {        string = "test ok";        a[0] = 'g';    }}

运行结果:good gbc
执行过程:
这里写图片描述
str=”test ok”这一句是浅复制,并没有改变栈内存中的地址。

==与equals()的区别
1、==比较的是地址,看是在栈内存还是在常量池中
2、equals()比较的是常量池中的内容

0 0