Java编程基础
shengf19951215
这个作者很懒,什么都没留下…
展开
-
Java Set详解
基本介绍: 1)无序、没有索引 2)不允许有重复元素,所以最多包含一个null HashSet: 1)HashSet实际上是HashMap(底层是数组+链表+红黑树),在调用构造器时,实际上创建了一个HashMap对象,然后将HashMap中的key作为HashSet中的元素 2)向HashSet中添加元素时步骤: a)计算元素的hash值,并将其转换为索引值 b)根据索引值查找table中该索引位置是否有元素 c)如果没有,直接加入,如果有则通过equals方法比较,如果相同则添加失败原创 2022-03-11 15:58:07 · 595 阅读 · 0 评论 -
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 · 628 阅读 · 0 评论 -
使用ArrayList无参构造器创建集合并添加数据的底层源码分析
1、如果使用无参构造器创建ArrayList,则底层创建一个空数组 2、添加元素时,首先ensureCapacityInterna方法确定是否需要扩容,然后再执行赋值 3、如果数组为空,则minCapacity为DEFAULT_CAPACITY,即为10 4、modCount记录集合被修改的次数,与线程安全有关,之后判断是否真的需要扩容 5、使用扩容机制确定扩容到多大,第一次newCapacity=10,之后每次扩容1.5倍,最后扩容使用的方法为Arrays.copyOf()原创 2022-03-11 12:49:41 · 102 阅读 · 0 评论 -
Java接口细节
1、jdk7.0之前,接口的所有方法都是抽象方法且都是用public修饰的 2、jdk8.0之后,接口类可以有静态方法,默认方法 3、接口可以有属性和方法 4、在接口中,抽象方法可以省略abstract和public 5、接口中的属性,只能是final的,而且是publicstatic final修饰符 举例: 6、接口不能继承其他的类,但是可以继承多个别的接口 7、接口的修饰符只能是public或者默认 8、接口存在多态传递,举例:Java编程基础/day03/interface_..原创 2022-02-28 10:23:57 · 186 阅读 · 0 评论 -
Java内部类详解
概念:一个类的内部又完整的嵌套了另一个类,被嵌套的类成为内部类。 基本语法: class Outer{ class Inner{ } } 内部类的分类: 定义在外部类局部位置上: 1)局部内部类(有类名,定义在方法或代码块中)Java编程基础/day04/innerclass/LocalInnerClass a)可以直接访问外部类的所有成员,包含私有 b)不能添加访问修饰符,因为它的地位就是一个局部变量。但是可以使用final关键字修饰 c)作用域:仅仅...原创 2022-02-26 11:42:31 · 245 阅读 · 0 评论 -
Java中重载和重写的区别
重载和重写的不同可以先用一张表来大致区分: 区别点 重载 重写 发生范围 同一个类 子类 参数列表 必须不同 必须相同 返回值类型 可以不同 小于等于父类的返回类型 异常类型 可以不同 小于等于父类的返回类型 访问修饰符 可以不同 大于等于父类的访问修饰符 发生阶段 编译时 运行时 具体解释: 发生范围:重载发生在同一个类中,而重写发生在子类继承父类时,需要对父类...原创 2022-02-24 10:11:36 · 116 阅读 · 0 评论 -
Java中的final关键字
final可以修饰类、属性、方法和局部变量 可能会用到final的情况: 1)当不希望类被继承时 2)当不希望父类的某个方法被子类重写 3)当不希望类的某个属性的值被修改 4)当不希望某个局部变量被修改 细节: 1、final修饰的属性 必须赋初值(定义时、代码块、构造器) 2、如果final修饰的属性是静态的,则初始化的位置只能在定义时或者静态代码块中 3、final不能修饰构造方法 4、final和static往往搭配使用,效率更高,因为不会导致类加载,底层编译器做了优化处理 举例原创 2022-02-23 16:31:29 · 140 阅读 · 0 评论 -
单例设计模式
概念:所谓类的单例设计模式,就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法 两种单例模式:饿汉式和懒汉式 饿汉式单例模式实现步骤: 1)构造器私有化=>防止直接new 2)类的内部创建静态私有对象 3)向外暴露一个静态的公共方法 代码实现: 验证是否为同一个实例对象: 结果为: 懒汉式单例模式实现步骤(不考虑线程安全): 1)构造器私有化 2)定义一个静态属性对象 3)提供一个publi...原创 2022-02-23 16:10:30 · 132 阅读 · 0 评论 -
Java代码块的理解
概念: 代码块又称为初始化块,属于类中的成员,类似于方法,将逻辑语句封装在方法体中,通过大括号包围起来。它在加载类时,或创建对象时隐式调用 基本语法: [修饰符]{代码}; 注意: 1、修饰符可选,要写的话,只能写static 2、结尾分号可以省略 代码块的好处: 1、相当于另外一种形式的构造器,可以做初始化操作,例如当多个构造器中都有重复的语句,可以抽取到初始代码块中 细节: 1、static代码块叫做静态代码块,作用就是对类进行初始化,而且它随着类的加载而执行,并且只会执行一次。如果原创 2022-02-23 15:30:03 · 276 阅读 · 0 评论 -
Java Object类详解一
1、equals方法 “==”和equals的区别 (1)“==”既可以判断基本数据类型,也可以判断引用数据类型 (2)“==”判断基本数据类型时,判断值是否相等 (3)“==”判断引用数据类型时,判断地址是否相等,即判定是否是同一个对象 (4)equals是Object类中的方法,只能判断引用类型 (5)equals默认判断的是地址是否相等,可以在根据业务需求在子类中重写该方法 2、hashcode方法 (1)提高具有哈希结构容器的效率 (2)两个引用,如果指向的是同一个对象,则哈希值.原创 2022-02-23 11:41:39 · 55 阅读 · 0 评论 -
Java中的动态绑定机制
动态绑定机制: 1、当调用对象方法的时候,该方法会和该对象运行时类型绑定 2、当调用对象属性时,没有动态绑定机制,哪里声明,哪里使用 举例: 结果为:原创 2022-02-22 17:30:05 · 128 阅读 · 0 评论 -
Java中多态的一些细节
多态的具体体现: 1、方法的多态:重载和重写 2、对象的多态: (1)一个对象的编译类型和运行时类型可以不一致 (2)编译类型在定义对象时就确定了,不能改变 (3)运行时类型是可以变化的 (4)编译时类型看定义时“=”左边,运行时类型看“=”右边 3、属性没有重写,属性的值看编译类型 举例: 结果为: 多态的向上转型: 1、本质:父类的引用指向子类的对象 多态的向下转型: 1、语法:子类类型引用名 =(子类类型)父类引用 2、只能强转父类的引用,不能强转父类的对象...原创 2022-02-22 17:08:20 · 148 阅读 · 0 评论 -
Java中有关继承的细节
继承的细节: 1、子类继承了所有属性和方法,非私有的属性和方法可以在子类直接访问,但是私有属性和方法不能在子类直接访问,要通过公共的方法去访问 举例: 2、子类必须调用父类的构造器,完成父类的初始化 举例: 3、当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用super去指定使用父类的哪个构造器完成对父类的初始化工作 4、super在使用时,必须放在构造器的第一行 5、super().原创 2022-02-22 16:22:16 · 65 阅读 · 0 评论 -
Java面向对象中的细节总结一
方法重载: 1、方法名必须相同 2、形参列表必须不同(参数类型或个数或顺序,至少有一样不同,参数名无要求 3、返回类型:无要求 可变参数 1、Java允许将同一个类中多个同名同功能但参数个数不同的方法,封装成一个方法。就可以通过可变参数实现。 2、基本语法:访问修饰符返回类型 方法名(数据类型… 形参名) 举例:计算(2个数的和、3个数的和、4个数的和等等) 3、可变参数的实参可以为数组 举例: 4、可变参数可以和普通类型的参数一起放在形参列表,但必须保证可变参数在最后一..原创 2022-02-22 14:05:06 · 58 阅读 · 0 评论 -
Java的switch分支结构
基本语法: switch(表达式){ case常量1: 语句块1; break Case常量2: 语句快2; break; … Default: default语句块; } 举例: switch细节: 1、表达式数据类型,应和case后的常量类型一致,或者是可以自动转成可以相互比较的类型 2、switch(表达式)中的表达式的返回值必须是(byte,short,int,char,enum,String...原创 2022-02-21 16:10:51 · 178 阅读 · 0 评论 -
Java运算符
逻辑运算符: 1、短路与(&&)和逻辑与(&): (1)&&短路与:如果第一个条件为false,则第二个条件不会判断,效率高 (2)&逻辑与:不管第一个条件是否为false,第二个条件都会判断。效率低 (3)开发中,一般使用短路与&& 例如: 2、短路或(||)和逻辑或(|) (1)||短路或:如果第一个条件为true,则第二个条件不判断,效率高 (2)|逻辑或:不管第一个条件是否为true,第二..原创 2022-02-21 14:45:46 · 200 阅读 · 0 评论 -
Java变量及细节
变量 2022年2月21日 星期一 上午10:53 整型变量细节: 1、Java的整型常量默认为int型,声明long型常量,需要在变量后面加"l"或者"L" 2、Java各整数类型有固定的范围和字段长度,不受操作系统的影响,保证了Java程序的可移植性 浮点型变量细节: 1、Java的浮点型常量默认为double类型,声明float型常量,需要在变量后面加"f"或"F" 2、同整型变量细节2 3、科学计数法,5.12e2 = 5.12 * 10^...原创 2022-02-21 13:55:41 · 136 阅读 · 0 评论