今日新了解:包装类128陷阱;
高频区域数据缓存
byte,int ,short,long 包装类,数据在Byte范围内[-128-127]内,character数据(0-127),boolean使用static final 定义,就会返回静态值;JVM不会重新创建空间分配新对象,而会覆盖,超过范围会新分配空间;double 和 float没有高频区域缓存;
integer a1=1;
integer a2=1;
system.out.println(a1==a2);
true;
integer a3=133;
integer a4=133;
system.out.println(a3==a4);
false;
今日练习:冒泡排序 二分查找 单列模式
StringBuffer和StringBuilder及区别
通常与append 一起使用 append(xxx)把xxx拼在string最后
StringBuffer:线程安全 同步速度慢 使用synchonized修饰
StringBuilder:线程不安全 同步速度快
集合:arraylist和linkedlist区别及用法
arratlist基于数组实现,增删改慢,查询快
linkedlist基于链表实现,增删改查快,查询慢
list和set集合区别 及遍历方法
list:有序可重复
set:无序不可重复;
map集合遍历方法 及hashmap线程是否安全?不安全有哪些?
不安全 hashtable安全 使用synchonized修饰 保证同步
concurrenthashmap安全 jdk1.7使用分段锁 1.8使用cad自旋锁
简答:== 和.equals方法区别?
==可以比较基本数据类型,也可以比较引用数据类型
比较基本数据类型时 比较的是值是否相等
比较引用数据类型时,比较的地址是否相等
equals方法是object类中的方法 只能比较引用类型
默认判断的时地址是否相等,子类往往重写该方法用来判断内容是否相等;
抽象类和接口区别?
抽象类是类的实例,接口是实例的行为
抽象类只能单继承,接口可以多继承
抽象类中可以有属性,接口中只能有常量
抽象类的abstrct可以省略不写 可以含有非抽象方法,接口只能有抽象方法
fianl finally 和fianlize区别?
fianl修饰属性 属性必须初始化且不可变
fianl修饰方法 方法不可重写
final修饰类 类不可被继承
finally通常放在try/catch语句的最后 代表一定会执行 通常用来关闭流;
finalize是一种方法,在jvm中会有一个优先级较低的线程,来判断对象有没有引用指向,如果没有,该线程会调用对象的finalize方法,回收分配给该对象的内存
什么是静态?
static 修饰属性 代表属性共享 在类被载入时创建 类存在 变量就存在
修饰方法 可以直接通过类名调用该方法
修饰代码块 优先于构造方法被调用
类被载入时机?
new创建新对象时
类名调用静态属性和方法时
class.forname(“全类名”)会触发类的加载
多态?及形成多态必要条件?
父类引用指向子类对象 通过父类引用调用方法 在程序运行时才能确定方法的形态功能
条件:父类引用指向子类对象
有继承和实现关系
需要重写方法
重载和重写区别?
重载:方法名相同,参数不同(个数不同 类型不同 顺序不同) 返回值可以相同 可以不同
重写:方法名相同 参数相同 返回值相同
子类的访问权限范围大于等于父类的访问权限范围
重载在一个类中是水平关系
重写在父子类中是垂直范围
面向对象基本特征?并解释
继承:子类继承父类 会继承父类的属性和方法 也会扩展自己的属性和方法
封装:使用访问权限修饰符对类的属性方法进行隐藏限制的设置过程
private:只有当前类可以访问
default:当前类和当前包中的类可以访问
protected:当前类和当前包中的类 以及其他包中的子类可以访问、
public:在当前项目中的所有类可以访问
多态
父类引用指向子类对象,当父类引用调用方法时 只有在 程序执行时才能确定方法的形态功能



