修饰符
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()比较的是常量池中的内容