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