.一、基础常识
1、进制转换
二进制转十进制:2的次方与各位数进行相乘相加
10进制转为2进制:与2进行相除,取余数的倒置
2、反码,补码和原码
正数的反码,补码和原码一样;负数得到补码需要先进行反码,在加1,才是补码
负数的原码转为反码时,符号位不变其余,取反
3、 在计算机存放数据的的8为2进制数,为最小的单元,就是字节
8bit = 1byte :8位2进制 表示一个字节
1024b=1kb
1024kb=1mb
1024mb=1G
二、数据类型
1.基本数据类型
没有hashcode
2.引用类型
3.位运算
按位与:&
按位或:|
按位取反:~
按位异或:^
移位操作:<<左移 、>>右移 、>>>无符号右移
数据类型转换
隐式类型
5.数组
User[] u = new User[10];
User[] u = {};
三、类与对象
什么是类:模板
什么是对象:真实存在的个体
1.类的生命周期
加载---->连接(验证,准备,解析)(static在此加载)---->初始化---->实例化---->使用---->卸载
2.类的实例化方式
new,克隆,反序列化,反射
3.对象属性
常量:一旦被赋值,则不可被修改,存储堆中常量池里
静态变量:被static所修饰,依附于类,在类加载阶段就会被初始化,所有类所共享
实例变量:实例变量依赖于实例,当对象分配空间时则实例变量被创建
4.对象行为
static{}:在类初始化时执行,对属性进行赋值
{}:每次实例化时执行
类方法:被static所修饰
成员方法:访问修饰符
类内部 | 本包 | 子类 | 外部包 | |
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
default | √ | √ | × | × |
private | √ | × | × | × |
四、面向对象三大特性:
1.封装
实体类,失血模式
引申:失血模式
在一个类中,有属性和属性对应的setter和getter方法,不涉及到业务是,就是失血模式
2.继承
对已知类进行拓展—>数据结构---->(数组与链表)
extend:
abstract(抽象类)
接口
单例模式
懒(饱)汉模式:
public class SingletonDemo {
private static SingletonDemo instance;
private SingletonDemo(){
}
public static SingletonDemo getInstance(){
if(instance==null){
instance=new SingletonDemo();
}
return instance;
}
}
饿汉模式:
public class SingletonDemo {
private static SingletonDemo instance=new SingletonDemo();
private SingletonDemo(){
}
public static SingletonDemo getInstance(){
return instance;
}
}
装饰器模式
3.多态
静态多态性:重载
动态多态性:重写,动态绑定(父类引用接收子类实例,例List s=new ArrayList();)
重写与重载的区别
1、重载的规则:
①必须具有不同的参数列表。
②可以有不同的访问修饰符。
③可以抛出不同的异常。
2、重写方法的规则:
①参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。
②返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。
③访问修饰符的限制一定要大于被重写方法的访问修饰符。
④重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。
5关系上的区别:
重写是子类和父类之间的关系,是垂直关系;重载是同一个类中方法之间的关系,是水平关系。
五、String API
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bDt6zIaP-1594121615254)(java培训图片/clip_image002.jpg)]
字符串常量池
equals方法
六、StringBuffer与StringBuilder
可变字符串
七、Object类
浅谈object的equals与string类eqauls区别5
object:底层的equals使用==:引用数据类型比较hashcode,基本数据类型直接比较值。
String:重写自object,比较的是String中的成员变量char数组,将个个下标进行匹配,若果成功则返回true表示当前字符串相等。
toString();重写后打印自定义信息(交由集成工具自动生成)
Hashcode():
Equals(): 判断对象是否相等:this.getClass(); 获取class对象 由类在加载时从class字节码文件生成的class对象
克隆clone():
浅克隆,深克隆
克隆流程:
1:需要克隆的类实现cloneable接口(标志接口)
2:重写Object的克隆方法(native本地方法)
创建对象的方式:
①:New 创建实例
②:克隆
八、系统类:时间+arrycopy
九、包装类
类型转换
十、高阶api
1.异常体系
2.IO
**文件类:**抽象路径
输入输出
字符:传输文字
字节:传输音频,文字
3.集合框架
先转成set再用迭代器
collection (
list(arraylist:数组 ,扩容机制1.5倍,线程不安全,查询速度快(数组下标的随机访问),增改删,相对较慢
,linkedlist:链表(双链表) 查询需要依次从头节点或尾部节点进行,增改删:速度较快
,vector:数组 ,线程安全
),set(hashset:底层结构hashmap ,只是用键,值:final new Object(),去重机制:))
Map(双列集合) hashmap:底层数据结构:数组+链表(单链表+红黑树)是以键值对进行存储。
4.线程
创建
生命周期
线程安全