- 捕捉到异常时 , 程序就会停止运行 ,抛出异常
- 重载 :仅返回值类型不同时, 不足以构成重载 。
重载的基本条件- 参数类型不同
- 参数次序不通过
- 参数个数不同
- 重写 : 函数名, 函数参数,返回值 应该相同
- true false null sizeof 不是java的关键字 , 但是也不能当成java标识符用
const goto 是java的保留字(关键字) - boolean 的默认值是false
- this() 和 super() 为构造方法,作用是在jvm 堆中构建出一个对象 。因此避免多次创建对象,同一个方法中只能调用一次this( ) 和super() . 且必须在第一行实现,避免操作对象时,对象还未构建成功。
- 实例一个内部类
- 异常通常分为编译时异常, 运行异常 。编译时异常需要手动进行捕捉处理(文件不存在),运行时异常只有在编译器编译运行才会出现,不需要自己手动捕捉(空指针异常,溢出)
- 对于外部类来说 , 只有两种修饰,public 和默认(default )
- A instanceOf B ,是判断对象A 是否属于B 或B的子类,子类接口实现类,实现类的实例。
- final 类型的变量一定要初始化 , 因为final 的变量不可更改。
- java 类是单继承 ,java 接口可以多继承。
- static 方法只能使用 static 变量 , 想使用非静态变量, 只能通过实例化对象 ,再通过对象引用
- 堆区 : 只存放类对象 , 线程共享 类中的成员变量, 存放在堆区
栈区 : 存放局部变量,线程不共享
方法区 : 静态存储区, 存放class文件 和静态数据。线程共享 - 静态语句块中变量为局部变量,不影响静态变量的值。
- 权限登记 :public > protected> default> private
- 在JDK1.7中,如果通过无参构造的话,初始数组容量为0(应该也是10),当真正对数组进行添加时,才真正分配容量。
每次按照1.5倍(位运算)的比率通过copeOf的方式扩容。
在JKD1.6中,如果通过无参构造的话,初始数组容量为10.每次通过copeOf的方式扩容后容量为原来的1.5倍加1.以上就是动态扩容的原理。
/**
jdk8
*/
private void grow(int minCapacity) {
// overflow-conscious code
int oldCapacity = elementData.length;
int newCapacity = oldCapacity + (oldCapacity >> 1);
if (newCapacity - minCapacity < 0)
newCapacity = minCapacity;
if (newCapacity - MAX_ARRAY_SIZE > 0)
newCapacity = hugeCapacity(minCapacity);
// minCapacity is usually close to size, so this is a win:
elementData = Arrays.copyOf(elementData, newCapacity);
}
jdk1.8后 关于arrayList 初始化和扩容详解
18.
public:具有最大访问权限。 可以被同一项目下的任何类所调用,一般用于对外的情况。
protected:与public不同的是不同包下的类是不能使用的,但是其子孙类除外。所以我认为这是特意为子类设计的。
default:它是针对本包设计的,它所修饰的在本包下的其他类都访问。
private:只为类本身提供。是一种封装的体现