重点问题总结
类加载的过程
①加载
将文件加载成为.class文件,在获取到.class文件的二进制字节流
②验证
验证此获取到的二进制是否合法
③准备
通过在虚拟机给此.class文件分配内存空间,再给静态的成员变量给与默认值
④解析
将类,接口,方法,成员变量等符号引用变成直接饮用
⑤初始化
在初始化阶段即开始在jvm的内存中构建一个Class对象表示当前这个类完成创建
String Stringbuffer Stringbuild
String是不可变长的,拼接效率低,线程安全
Stringbuffer 是可变长的,效率高,线程安全(其中有专门的负责管理线程的方法通过加锁)创建的时候会在堆空间中直接创建把字符串拼接
Stringbuild是可变长的,效率高线程不安全(没有管理线程的方法)
java的特点:跨平台面向对象简单。跨平台的意思就是java程序都运行在JVM中我们可以再不同的平台上安装jvm屏蔽差异
命名规范:
类名首字母大写
包名全小写
方法名驼峰
常量全大写_分割
变量:是存储在内存的一块空间,是存储数据的单元
byte,short,int,long,double,float,char,Boolean
函数就相当于方法
访问修饰符 返回值类型 函数名(形参列表)
可以返回一个与返回值类型形同的数据也可以返回一个异常
创建数组的方式
int []a =new int[创建几位的]
int []a={数组内容}
arr[0]=1;
数组的扩容
new int[a.length2] || Arrays.copyof(a,a.length2)
面向对象
java独有的理念万物都可以成为对象
this关键字表示调用本类属性方法
super关键字表示调用父类属性方法
构造方法分为:
无参构造,当创建对象没有构造方法时jvm会自动创建自动调用
有参构造,需要自身书写写给成员变量赋值
作用是在创建对象的时候自动调用
在jvm创建对象的时候调用一定可以重载一定不能覆盖
对象创建的过程
①分配空间给属性赋予默认值
②初始化给属性初始值
③调用构造方法给属性赋值
创建对象的过程给成员变量赋值三次
封装的关键字是private私有的只能在本类中使用提供get/set方法给值和拿值
继承是单继承
子类不能继承父类所有的方法因为构造方法不能继承
多态
父类引用指向子类对象
编译时多态:父类引用不能调用子类独有的方法,只可以调用自身的方法
运行时多态:最终执行的子类覆盖的方法
好处是把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。 赋值之后,父类型的引用就可以根据当前赋值给它的子对象的特性以不同的方式运作。也就是说,父亲的行为像儿子,而不是儿子的行为像父亲。
public 到处用
protected 本类 同包 子类
defaut 本类 同包
private 本类
三大修饰符
abstract抽象类
只能别被明引用不能创建对象,当有一个抽象方法一定是抽象类但抽象类不一定有抽象方法可以有构造方法是给子类初始化对象使用的。
相当于子类创建对象时必须加载父类 但是没有构造方法不能进行构造
final
断子绝孙类
修饰变量只能被赋值一次
修饰类不能被继承
修饰方法可以继承可以重载但是不能被覆盖
final finaly finalize
一个三大修饰符
一个异常中必须执行
一个是垃圾回收
static静态的
修饰属性称为类属性
方法称为静态方法不能调用本类的非静态方法静态方法可以调用静态方法
还可以修饰静态代码块只在类加载的时候进行执行一次
接口
是java中的一种规范
接口和接口的关系是继承,接口与类的关系是实现
接口中成员的特点
属性时公开的静态常量
方法时公开的抽象方法
没有构造方法
接口的好处是
弱耦合,扩充子类的功能
接口回调是指先进行接口的定义,再有接口的调用者 再有接口的实现者
内部类
成员内部类
局部内部类
匿名内部类
静态内部类
Object类
其中常用的方法
tostring:返回变成字符串
getclass:返回拿到类对象
hashcode:返回对象在内存中的地址以整数的形式返回
equals:比较两个对象内容是否相同
finalize实现垃圾回收
集合
最大的是Collection集合体系
分为list集合和set集合
list集合分为(有序的有下标可以重复0~N)
ArrayList
底层由数组实现查询快增删慢线程比较不安全运行效率较高
Vertor
底层由数组实现查询快增删慢运行慢
LinkList底层由链表实现查询慢增删快线程不安全效率高
set集合
hashset的去重机制
首先覆盖hashcode方法
覆盖equals方法
原理:首先覆盖hasncode方法拿到哈希值的下标进行判断下标中是否有值没有则存储有则不进行存储在通过equals方法来判断值是否相同相同返回true不相同返回flase
Map集合
采用数组加链式调用使用红黑树
实现类hashmap
键可以为null键不能重复线程不安全效率高
底层原理是通过hash值进行计算再将值再次运算存入到所对应的下标
当两个key发生冲突时会在所对应的位置进行链表,链表存储超过八个以后使用红黑树
hashtable
键不可以为null安全效率低
a++先用再加
++a先加在用
&&逻辑运算符(短路运算符)
&位运算符(非短路运算符)
来源:CSDN
作者:LJZZZZ_
链接:https://blog.csdn.net/weixin_43795573/article/details/104608166