自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 Java 实现数组模拟队列和环形队列

一、概念队列是一个有序列表,可以用数组或链表来实现,遵循先进先出原则二、数组模拟队列1、需要维护的属性maxSize:队列最多存放多少数据front:头指针,指向队列头部的前一个位置,初始化为-1rear:尾指针,指向队列尾部,初始化为-12、队列包含的方法1)isEmpty判断rear == front...

2022-03-17 14:13:52 744

原创 Java 实现稀疏数组

一、稀疏数组1、概念:当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存2、稀疏数组的处理方法:1)记录数组一共有几行几列,有多少不同的值2)把具有不同值的元素的行列及值记录在一个小规模的数组(即稀疏数组)中3、二维数组 -> 稀疏数组1)遍历二维数组,得到有效元素的个数sum2)根据sum创建稀疏数组,sparseArr = new int[sum+1][3]3)将二维数组的有效数据存入稀疏数组4、稀疏数组 -> 二维数组1)

2022-03-17 12:43:56 467

原创 Java Set详解

基本介绍:1)无序、没有索引2)不允许有重复元素,所以最多包含一个nullHashSet:1)HashSet实际上是HashMap(底层是数组+链表+红黑树),在调用构造器时,实际上创建了一个HashMap对象,然后将HashMap中的key作为HashSet中的元素2)向HashSet中添加元素时步骤:a)计算元素的hash值,并将其转换为索引值b)根据索引值查找table中该索引位置是否有元素c)如果没有,直接加入,如果有则通过equals方法比较,如果相同则添加失败

2022-03-11 15:58:07 602

原创 Java中的Collection和List

1、数组的局限性:1)长度开始时必须指定,而且一旦指定,不能更改2)保存的必须为同一类型的元素3)使用数组进行增加/删除元素比较麻烦2、使用集合的好处:1)可以动态保存任意多个对象,使用比较方便2)提供了一系列方便的操作对象的方法3)使用集合添加,删除新元素比较简单3、集合体系图:4、Iterator接口:1)Iterator对象成为迭代器,主要用于集合遍历2)所有实现了Collection接口的集合类都有一个iterator()方法来返回Iterato.

2022-03-11 15:56:31 633

原创 使用ArrayList无参构造器创建集合并添加数据的底层源码分析

1、如果使用无参构造器创建ArrayList,则底层创建一个空数组2、添加元素时,首先ensureCapacityInterna方法确定是否需要扩容,然后再执行赋值3、如果数组为空,则minCapacity为DEFAULT_CAPACITY,即为104、modCount记录集合被修改的次数,与线程安全有关,之后判断是否真的需要扩容5、使用扩容机制确定扩容到多大,第一次newCapacity=10,之后每次扩容1.5倍,最后扩容使用的方法为Arrays.copyOf()

2022-03-11 12:49:41 115

原创 Java接口细节

1、jdk7.0之前,接口的所有方法都是抽象方法且都是用public修饰的2、jdk8.0之后,接口类可以有静态方法,默认方法3、接口可以有属性和方法4、在接口中,抽象方法可以省略abstract和public5、接口中的属性,只能是final的,而且是publicstatic final修饰符举例:6、接口不能继承其他的类,但是可以继承多个别的接口7、接口的修饰符只能是public或者默认8、接口存在多态传递,举例:Java编程基础/day03/interface_..

2022-02-28 10:23:57 192

原创 Java内部类详解

概念:一个类的内部又完整的嵌套了另一个类,被嵌套的类成为内部类。基本语法:class Outer{class Inner{}}内部类的分类:定义在外部类局部位置上:1)局部内部类(有类名,定义在方法或代码块中)Java编程基础/day04/innerclass/LocalInnerClassa)可以直接访问外部类的所有成员,包含私有b)不能添加访问修饰符,因为它的地位就是一个局部变量。但是可以使用final关键字修饰c)作用域:仅仅...

2022-02-26 11:42:31 250

原创 Java中重载和重写的区别

重载和重写的不同可以先用一张表来大致区分:区别点 重载 重写 发生范围 同一个类 子类 参数列表 必须不同 必须相同 返回值类型 可以不同 小于等于父类的返回类型 异常类型 可以不同 小于等于父类的返回类型 访问修饰符 可以不同 大于等于父类的访问修饰符 发生阶段 编译时 运行时 具体解释:发生范围:重载发生在同一个类中,而重写发生在子类继承父类时,需要对父类...

2022-02-24 10:11:36 120

原创 Java中的final关键字

final可以修饰类、属性、方法和局部变量可能会用到final的情况:1)当不希望类被继承时2)当不希望父类的某个方法被子类重写3)当不希望类的某个属性的值被修改4)当不希望某个局部变量被修改细节:1、final修饰的属性 必须赋初值(定义时、代码块、构造器)2、如果final修饰的属性是静态的,则初始化的位置只能在定义时或者静态代码块中3、final不能修饰构造方法4、final和static往往搭配使用,效率更高,因为不会导致类加载,底层编译器做了优化处理举例

2022-02-23 16:31:29 149

原创 单例设计模式

概念:所谓类的单例设计模式,就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法两种单例模式:饿汉式和懒汉式饿汉式单例模式实现步骤:1)构造器私有化=>防止直接new2)类的内部创建静态私有对象3)向外暴露一个静态的公共方法代码实现:验证是否为同一个实例对象:结果为:懒汉式单例模式实现步骤(不考虑线程安全):1)构造器私有化2)定义一个静态属性对象3)提供一个publi...

2022-02-23 16:10:30 141

原创 Java代码块的理解

概念:代码块又称为初始化块,属于类中的成员,类似于方法,将逻辑语句封装在方法体中,通过大括号包围起来。它在加载类时,或创建对象时隐式调用基本语法:[修饰符]{代码};注意:1、修饰符可选,要写的话,只能写static2、结尾分号可以省略代码块的好处:1、相当于另外一种形式的构造器,可以做初始化操作,例如当多个构造器中都有重复的语句,可以抽取到初始代码块中细节:1、static代码块叫做静态代码块,作用就是对类进行初始化,而且它随着类的加载而执行,并且只会执行一次。如果

2022-02-23 15:30:03 283

原创 Java Object类详解一

1、equals方法“==”和equals的区别(1)“==”既可以判断基本数据类型,也可以判断引用数据类型(2)“==”判断基本数据类型时,判断值是否相等(3)“==”判断引用数据类型时,判断地址是否相等,即判定是否是同一个对象(4)equals是Object类中的方法,只能判断引用类型(5)equals默认判断的是地址是否相等,可以在根据业务需求在子类中重写该方法2、hashcode方法(1)提高具有哈希结构容器的效率(2)两个引用,如果指向的是同一个对象,则哈希值.

2022-02-23 11:41:39 65

原创 Java中的动态绑定机制

动态绑定机制:1、当调用对象方法的时候,该方法会和该对象运行时类型绑定2、当调用对象属性时,没有动态绑定机制,哪里声明,哪里使用举例:结果为:

2022-02-22 17:30:05 132

原创 Java中多态的一些细节

多态的具体体现:1、方法的多态:重载和重写2、对象的多态:(1)一个对象的编译类型和运行时类型可以不一致(2)编译类型在定义对象时就确定了,不能改变(3)运行时类型是可以变化的(4)编译时类型看定义时“=”左边,运行时类型看“=”右边3、属性没有重写,属性的值看编译类型举例:结果为:多态的向上转型:1、本质:父类的引用指向子类的对象多态的向下转型:1、语法:子类类型引用名 =(子类类型)父类引用2、只能强转父类的引用,不能强转父类的对象...

2022-02-22 17:08:20 157

原创 Java中有关继承的细节

继承的细节:1、子类继承了所有属性和方法,非私有的属性和方法可以在子类直接访问,但是私有属性和方法不能在子类直接访问,要通过公共的方法去访问举例:2、子类必须调用父类的构造器,完成父类的初始化举例:3、当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用super去指定使用父类的哪个构造器完成对父类的初始化工作4、super在使用时,必须放在构造器的第一行5、super().

2022-02-22 16:22:16 75

原创 Java面向对象中的细节总结一

方法重载:1、方法名必须相同2、形参列表必须不同(参数类型或个数或顺序,至少有一样不同,参数名无要求3、返回类型:无要求可变参数1、Java允许将同一个类中多个同名同功能但参数个数不同的方法,封装成一个方法。就可以通过可变参数实现。2、基本语法:访问修饰符返回类型 方法名(数据类型… 形参名)举例:计算(2个数的和、3个数的和、4个数的和等等)3、可变参数的实参可以为数组举例:4、可变参数可以和普通类型的参数一起放在形参列表,但必须保证可变参数在最后一..

2022-02-22 14:05:06 69

原创 Java的switch分支结构

基本语法:switch(表达式){case常量1:语句块1;breakCase常量2:语句快2;break;…Default:default语句块;}举例:switch细节:1、表达式数据类型,应和case后的常量类型一致,或者是可以自动转成可以相互比较的类型2、switch(表达式)中的表达式的返回值必须是(byte,short,int,char,enum,String...

2022-02-21 16:10:51 185

原创 Java运算符

逻辑运算符:1、短路与(&&)和逻辑与(&):(1)&&短路与:如果第一个条件为false,则第二个条件不会判断,效率高(2)&逻辑与:不管第一个条件是否为false,第二个条件都会判断。效率低(3)开发中,一般使用短路与&&例如:2、短路或(||)和逻辑或(|)(1)||短路或:如果第一个条件为true,则第二个条件不判断,效率高(2)|逻辑或:不管第一个条件是否为true,第二..

2022-02-21 14:45:46 213

原创 Java变量及细节

变量2022年2月21日 星期一上午10:53整型变量细节:1、Java的整型常量默认为int型,声明long型常量,需要在变量后面加"l"或者"L"2、Java各整数类型有固定的范围和字段长度,不受操作系统的影响,保证了Java程序的可移植性浮点型变量细节:1、Java的浮点型常量默认为double类型,声明float型常量,需要在变量后面加"f"或"F"2、同整型变量细节23、科学计数法,5.12e2 = 5.12 * 10^...

2022-02-21 13:55:41 142

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除