摘要:
== 基本数据类型比较时,比较的是值本身 引用类型比较时,比较的是对象的引用地址是否一致(栈中引用地址,堆中是否是同一区域) equals 不能用于基本数据类型比较,没有重写之前,底层代码就是== 重写之后比较的是两个对象的属性是否相同,所有类都可以重写该方法 注 1.注意空指针异常,用常量比较变量 阅读全文
摘要:
索引 索引的基本原理 索引用来快速查找那么具有特定值的记录,如果没有索引,一般就要查询遍历整张表。 索引的原理:将无序的数据变成有序的查询 把创建了索引的列的内容进行排序 对排序结果生成倒排表 在倒排表内容上拼上数据地址链 在查询的时候,先拿到倒排表内容,在取出数据地址链,从而拿到具体数据 索引的设 阅读全文
摘要:
内部类就是在一个类的内部定义一个类。 内部类自动具有外部类的所有成员的访问权,使用范围从内到外,不能从外到内。 选择: 对外不想要这个类被访问,根据作用范围来选择内部类,类的内部--静态内部类,某个方法 匿名内部类 对内,想要访问某些内部数据,比如私有属性 成员内部类 可以访问外部成员的属性,方法, 阅读全文
摘要:
底层 首先 CopyOnWriteArrayList内部也是通过数组来实现的,在向 CopyOnWriteArrayList 添加元素时,会复制一个新的数组,写操作在新数组上进行,读操作在原数组上进行 并且,写操作会加锁,防止出现并发写入丢数据的问题 写操作结束之后会把原数组指向新数组 CopyOn 阅读全文
摘要:
程序-进程-线程 程序:代码 进程:正在运行的程序,程序的一次执行过程 进程是程序运行和资源分配的基本单位,一个程序至少有一个进程,一个进程至少有一个线程。 进程是资源分配的最小单位,线程是程序执行的最小单位(资源调度的最小单位) 线程:进程可进一步细分为线程,程序内部的一条执行路径。 进程在执行过 阅读全文
摘要:
面向对象:注重的是 对象(参与者)需要做什么,更易于复用。扩展和维护 https://blog.csdn.net/guorui_java/article/details/121178242 封装 封装性就是尽可能的隐藏对象内部细节,对外形成一道边界,只保留有限的接口和方法与外界进行交互。 封装的原则 阅读全文
摘要:
类型转换 引用类型,判断一个对象是什么类型 obj instanceof Class 其中 obj 为一个对象,Class 表示一个类或者一个接口 左边的引用类型是否与右边的引用类型的类型是否相同,或左边引用类型是右边引用类型的子类或实现类(右边引用类型可以是类、抽象类、接口) 注意 左边的对象实例 阅读全文
摘要:
abstract 抽象 类:不能具体实例化的类,不能创建对象。 1.不能new这个抽象类。只能靠子类去实现它:约束! 所以我们不能用final修饰 我们所谓的new是指:抽象类类名 抽象类对象名 = new 抽象类类名(参数可能有可能无) 这种形式 一个类继承抽象类之后,必须重写抽象类中的抽象方法, 阅读全文
摘要:
Static 静态 静态 ,对象层级变为了类层级,不用创建对象,直接通过类名.调用 1.静态属性 通常成员变量属于对象层级,每创建一个对象就会创建与之对应的成员属性,开辟内存空间。但是有一些属性应用于整个类,所以我们可以他变成类层级,被所有对象共享,该成员变量随着类加载而创建,与对象是否创建(new 阅读全文
摘要:
this 1.获取当前对象的引用 内存地址 public class Student { public Student B(){ return this; } public static void main(String[] args) { Student s = new Student(); 阅读全文