java基本知识归集

时间:2021-12-27 15:32:46

类中可以有几种东西:属性,方法,构造器,初始化块



new创建对象时,

1.类属性和类初始化块分配空间。

2.执行默认初始化

如有父类,先为父类执行父类自己的1和2步骤,再执行上面的1和2。

一个类执行new多个对象,类属性和类初始化块只初始化一次。





private:属性和方法只能在该类内访问

default:同一个包的其他类可以访问

protected:同一个包的其他类可以访问;不同包的子类也可以访问

public:都行





子类继承父类,除private外,其他都有。



子类改变继承过来的方法时,叫重写。

重写后父类的这个方法便被隐藏了。

如果要调用这个隐藏的方法:

1.子类强制转换为父类

2.通过super





构造器中的this表示当前正在初始化的对象引用。

方法中的this表示当前正在调用此方法的对象引用。

super()和this()不可以同时出现在构造函数中,并且一定要写在第一行。

final类 不能被继承

final方法 不能被重写,但如果父类的final方法为private,子类中的final这个方法,就相当于一个新的方法。

final变量(包括包括类属性、对象属性、局部变量和形参) 需要进行显示初始化,并且之后不能修改。



native方法  不是java语言实现的,而是操作系统提供的动态库。



equals  表示对象内容(特征和属性)相同,不能作用于基本数据类型

==      变量值相同 两个new出来的对象,有不同的hash,所以用这个就会false,但equals是ture





wait             当前线程等待,直到其他线程调用此方法的主调的notify或notifyAll,可指定超时时间

notify/notifyAll 唤醒此对象监视器上等待的单个或全部线程。

wait/notify/notifyAll  方法只能在同步代码(synchronized)块中才能使用





String是不可变字符串对象,s="abcd";s="fde";后"abcd"和"fde"会一直在堆内存里。

StringBuffer线程安全

StringBuilder非线程安全



intern  查找常量池中的对象引用,如果没有,则创建





Strong reference  任何引用=null时,回收内存

Soft Reference    引用1=null,引用2!=null,不回收内存

Weak Reference    引用1=null,弱引用2可能不是null