java中一些基础却又非常重要,容易忽略的小知识
程序员文章站
2024-03-17 18:02:46
...
java基础非常重要,最近一段时间面试碰到的问题,现在做了个总结
1、关于接口方面
1-1、接口中的所有属性都是final类型的
1-2、接口中不能含有静态方法,抽象类中也不能。可以总结为,static方法只能存在于具体实现类中(static,abstract 不能同时修饰一个方法)
2、关于构造函数
2-1
class MyClass2{
public static void main(String[] args) {
new MyClass2();
}
public MyClass2() {
MyClass2 m1=this;
MyClass2 m2=this;
synchronized (m1) {
System.out.println("enter in synchronized");
try {
m2.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("class load all");
}
}
以上程序运行后会一直阻塞
2-2、
class MyClass2{
public static void main(String[] args) {
new MyClass2();
}
public MyClass2() {
System.out.println("...");
MyClass2 m=new MyClass2();
// MyClass2 m1=this;
// MyClass2 m2=this;
// synchronized (m1) {
// System.out.println("enter in synchronized");
// try {
// m2.wait(3000);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
// }
// System.out.println("class load all");
}
}
以上函数运行一段时间后会抛出java.lang.*Error,堆栈溢出,若换成以下版本则不会抛异常
class MyClass2{
static long i=0;
public static void main(String[] args) {
new MyClass2();
}
public MyClass2() {
System.out.println("...");
i++;
MyClass2 m=null;
if(i<1000)
m=new MyClass2();
}
}