Java随记
# 一、Java基本数据类型、包装类和常量池
1、整型 byte 、short 、int 、long
2、浮点型 float 、 double
3、字符型 char
4、布尔型 boolean
Java 基本类型的包装类的大部分都实现了常量池技术,即 Byte,Short,Integer,Long,Character,Boolean;前面 4 种包装类默认创建了数值[-128,127] 的相应类型的缓存数据,Character 创建了数值在[0,127]范围的缓存数据,Boolean 直接返回 True Or False。如果超出对应范围仍然会去创建新的对象。
# 二、Object对象的方法
equals
public boolean equals(Object obj) { return (this == obj); }
1
2
3Object中equals比较的是地址,而String中equals先比较地址,其次比较长度,最后逐个比较字符
hashCode
该方法主要用于获取对象的散列值。Object 中该方法默认返回的是对象的堆内存地址。
toString
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
1
2
3getClass
获取对象的运行时 class 对象
clone 拷贝
finalize
主要用于在 GC 的时候再次被调用
wait
public final void wait() throws InterruptedException { wait(0); }
1
2
3wait(long timeout)
wait 方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait() 方法一直等待,直到获得锁或者被中断。wait(long timeout) 设定一个超时间隔,如果在规定时间内没有获得锁就返回
wait(long timeout, int nanos)
notify
唤醒一个在此对象监视器上等待的线程
notifyAll
唤醒在此对象监视器上等待的所有线程
# 三、Java中访问控制修饰符
访问范围 | private | friendly(默认) | protected | public |
---|---|---|---|---|
同一个类 | 可访问 | 可访问 | 可访问 | 可访问 |
同一包中的其他类 | 不可访问 | 可访问 | 可访问 | 可访问 |
不同包中的子类 | 不可访问 | 不可访问 | 可访问 | 可访问 |
不同包中的非子类 | 不可访问 | 不可访问 | 不可访问 | 可访问 |
每个类文件中都有 package 语句。在这种情况下,访问修饰符符合主流的定义
public(共享)
1、修饰属性、方法、类
2、无访问限制
protected(受保护的)
1、修饰属性和方法,不能修饰类。
2、具有包访问性:能被同一包中的其他类可访问
3、具有继承访问性:任意路径下的类,通过继承共享类,便能访问父类中的受保护的成员。
这里的继承访问是指子类中访问父类中的受保护的成员
friendly (默认)
1、修饰属性、方法、类
2、具有包访问性
在packageA中定义一个默认类A,再定义一个public类B 继承A
在packageB中可以通过B访问A类的public方法,但是不能通过B访问protected方法
private(私有的)
1、修饰属性和方法,不能修饰类。
2、私有属性和方法,只有类自身可访问,外部不可访问。
注意:Java的访问控制是停留在编译层的,也就是它不会在.class文件中留下任何的痕迹,只在编译的时候进行访问控制的检查。其实,通过反射的手段,是可以访问任何包下任何类中的成员,例如,访问类的私有成员也是可能的