这是一次对Java基础知识的总结,Java的知识点其实非常多,并且有些知识点比较难以理解,有时候我们自以为理解了某些内容,可能只是停留到了表层,还是那句古话,经济基础决定上层建筑,要深入地理解底层的实现原理,这对初学者很实用。
JAVA---------面向对象的三大特性
继承:一般类继承方式仅有单继承的,内部类实现多继承,接口可以多继承。
封装:访问权限控制public>protected>packge>private 内部类 也是一种封装。
多态:编译时多态,体现在向上转型和向下转型,通过引用类型判断调用哪个方法(静态分派)。运行时多态,体现在同名函数通过不同参数实现多种方法(动态分派)。
JAVA---------基本数据类型
1.基本类型位数,自动装箱,常量池。
2.例如byte类型1byte可以表示8位,可以表示的数字是-128到127,由于还有一个0,加起来总共256,也就是二的八次方。32位和64位机器的int是四个字节也就是32位,char1个字节就是8位,float是4个字节,double是8个字节,long是8个字节。
3.基本数据类型的包装类只是在数字范围-128到127中会用到常量池,会自动拆箱装箱,其余数字范围的包装类则会新建实例。
JAVA---------String及包装类
1.String类型是final类型,在堆中分配空间后内存地址不可变。
2.底层是final修饰的char[]数组,数组的内存地址同样不可变。但实际上可以通过修改char[n]='a'来进行修改,不会改变String实例的内存值,不过在jdk中,用户无法直接获取char[],也没有方法能操作该数组。所以String类型的不可变实际上也是理论上的不可变。所以我们在分配String对象以后,如果将其='abc',那也只是改变了引用的指向,实际上并未改变了原来的对象。
3.StringBuffer和StringBuilder底层是可变的char[]数组,继承父AbstractStringBuilder的各种成员变量和方法,实际上的操作都是由父类方法来完成的。