- 博客(38)
- 收藏
- 关注
原创 Set集合相关练习
可以将字符串转换为字符数组,然后遍历字符数组,将每个字符添加到 HashSet (或其他Set实现类)中,因为Set集合的不可重复性,最终Set中保存的就是所有不重复的字符。List集合元素可重复,且元素有序(这里的有序指的是元素的存储顺序和添加顺序一致),同时List集合有索引,可以通过索引操作元素;(1)Set集合的定义:Set是Java集合框架中的一个接口,它继承自Collection接口,用于存储一组不重复的元素。元素无序(这里的无序指的是元素存储顺序和添加顺序不一定一致,且没有索引)。
2025-12-06 18:42:04
117
原创 使用List集合专项实验结论
ArrayList:基于动态数组实现,随机访问(get(index))速度极快(时间复杂度O(1)),但在列表中间插入/删除元素时效率低(需移动大量元素,O(n)),适合读多写少场景。LinkedList:基于双向链表实现,插入/删除元素(尤其是首尾)效率高(O(1)),但随机访问需从头/尾遍历(O(n)),适合写多读少、频繁操作首尾元素的场景。普通for循环仅适合ArrayList,LinkedList使用时会因频繁get(index)导致性能骤降;
2025-12-02 08:42:51
189
原创 使用List集合专项实验
(1)ArrayList:基于动态数组实现,查询(通过索引)效率高(时间复杂度 O(1)),但插入、删除元素时(尤其是中间位置)效率较低(需移动元素,时间复杂度 O(n)),线程不安全。(2)LinkedList:基于双向链表实现,插入、删除元素(尤其是两端)效率高(时间复杂度 O(1)),但查询元素需遍历链表,效率较低(时间复杂度 O(n)),线程不安全。(1)普通for循环:通过索引(index)逐个访问List元素,需先获取集合长度(size())。add(E e) :在集合末尾添加元素。
2025-12-01 09:43:03
249
原创 基于字符串的专项实验
s1 == s2 : s1 指向常量池的“abc”, s2 是 new 创建的新对象(堆内存),地址不同,输出 false。s1 == s3 : s2.intern() 会从常量池获取“abc”, s3 指向常量池与 s1 同地址,输出 true。(2)原因:默认 Object 类的 equals 是判断地址,而字符串实际业务中更关注内容是否一致,因此重写为内容比较。(1)String是不可变的,每次修改都会生成新对象,适用于字符串常量或少量修改的场景,因不可变天然线程安全;// 从串池中获取字符串。
2025-11-27 23:29:04
342
原创 基于字符串的专项实验结论
1. 不可变性:String 类的不可变性是其核心特性,这一特性带来了线程安全、常量池内存优化、哈希值稳定可缓存等优势,但在频繁修改场景下会因大量临时对象产生性能问题,此时需使用 StringBuilder(单线程)或 StringBuffer(多线程)来优化。对于循环拼接等频繁修改操作,使用 StringBuilder 或 StringBuffer 替代 String 的 += 操作,可大幅提升执行效率,避免因 String 不可变性导致的大量临时对象创建和内存浪费。二、操作工具类选择与性能优化。
2025-11-25 18:55:23
186
原创 基于 Obiect 类及包装类的专项实验结论
若仅重写 equals() 而不重写 hashCode() ,会违反“equals为true的对象,hashCode必须相等”的规则,导致集合中出现重复元素或查询效率骤降。重写后可自定义输出对象的核心属性(如 User{id=1, name='Tom'} ),大幅简化调试与日志查看。1. equals() 方法:默认比较对象的内存地址(与 == 效果一致);自定义类若未重写该方法,会导致逻辑上相等的对象(如属性值相同)被判定为不相等,进而影响HashMap、HashSet等集合的去重逻辑。
2025-11-25 10:56:53
131
原创 基于 Obiect 类及包装类的专项实验
这样设计的核心目的是为所有对象提供一套通用的基础行为(如 toString() 用于对象描述、 equals() 用于对象比较、 hashCode() 用于哈希计算等),确保不同类的对象能遵循统一的交互标准,同时简化代码复用和多态实现。对于引用数据类型(如 Object、String、自定义类等):变量存储的是“对象在堆内存中的地址”, == 实际比较的是两个变量是否指向同一个对象(即地址是否相同),而非对象内容。(2)证明“无显式继承的自定义类继承 Object 类”的 3 种方法。
2025-11-25 09:37:41
252
原创 计算机类比赛刷题链接
C语言网(信息学奥赛):https://www.dotcpp.com/oj/ybt-cpp/力扣:https://leetcode.cn/studyplan/primers-list/C语言网(蓝桥杯入门):https://www.dotcpp.com/oj/acm/洛谷:https://www.luogu.com.cn/training/list。牛客:https://www.nowcoder.com/东方博宜: https://oj.czos.cn/
2025-11-11 10:28:42
120
原创 Java 反射和设计模式
工厂设计模式:用于解决程序中对象创建的问题,一个工厂的作用在于完成对象的创建。设计模式:一套被反复使用,多人知晓,并分门别类的编目的一套代码经验总结。类对象,从而获取该类的信息,直接通过类对象进行一系列操作。所以开发时,对于封装的实体类,建议提供无参数的构造方法。类的对象:基于定义好的一个类,创建该类的实例,即利用。进行拆分,符号 左侧作为键的内容,右侧作为值的内容。方法,获取类的对象,默认调用无参数的构造方法。类对象:类加载的产物,封装了一个类的所有信息。通过反射获取类对象,会导致类进行类加载。
2025-11-01 23:13:40
419
原创 Java 多线程
d. 执行的原理:当线程获取临界资源的锁标记时,锁标记空闲,则能获取该对象的锁标记,获取锁标记之后,可以执行同步代码块{}中的代码,而且只有当。同步调用:调用者一旦发生方法的调用,则调用者需要停下,被调用的方法方法先执行,被调用的方法执行完毕之后,返回到调用位置,则调用者才能继续往下执行。中进行加锁,读操作不加任何锁,为了保证线程的安全性:写写操作由于是加锁操作,相互互斥,但是写操作时,会在原有文本的基础上拷贝一个新的文本,2. 线程池的好处:减少创建线程和销毁线程的次数,反复使用池的线程,从而提高效率。
2025-10-28 14:44:30
670
原创 Java IO (位于 java.io 包中)
I. 参数:代表操作文件的路径及文件名,但是如果指定的文件找不到,则系统不会默认创建,直接报错,错误信息为:java.io.FileNotFoundException: (系统找不到指定的文件。III. 注意:如果指定文件不存在,则系统默认创建新的文件,但是如果指定文件夹不存在,则报错,错误信息为:java.io.FileNotFoundException: (系统找不到指定的路径。a. int read() : 一次性从文件中读取一个字节的内容,读取的内容作为返回值返回,如果达到文件的尾部,则返回-1。
2025-10-28 08:54:34
860
原创 Java异常
异常的处理的必要性:减少用户的损失、同时减小给用户带来麻烦,也可以对用户做一些提示信息。(2) 结果:程序中一旦遇到异常,则被终止,不能继续执行异常之后的代码。a. 特点:编译器检测此类异常,编译的时候报的错误。(4) 结果:消极处理异常只是推卸责任,程序还是会因异常而被终止。(1) 产生原因:程序在运行过程中,遇到错误的代码,自动产生异常。(6) 注意:消极处理异常时可以 利用父类型处理其子类型的异常。(5) 作用:消极处理异常可以让非运行时异常在编译阶段通过。b. 处理:可处理,可不处理(
2025-10-23 22:37:10
291
原创 Java集合【开发的重点*】
方法,获取哈希码值,从而获取对应存储下标,如果存储下标上没有存储任何元素,则当前对象直接存储,但是如果存储下标上已经有存储了其他对象,则调用equals方法,进行比较对象的内容是否相同,equals方法的结果为。(1) Collections:用于操作集合元素的工具类,类中提供了大量的静态方法用于操作集合元素,例如元素排序、倒置等操作。(1) 泛型集合:安全性的集合,可以对集合中数据统一管理,并且强制约束集合的元素类型一致。b. Vector: 底层数组实现的,查询操作时效率较高,增删操作效率较低。
2025-10-17 19:52:10
555
原创 Java内部类
(2) 局部内部类对象的创建,必须在定义它的方法内部创建,并且在类的定义位置后面完成对象的创建。(2) 基于一个匿名内部类只能创建该类的一个对象,并且匿名内部类的定义和对象的创建一起完成。(3) 局部内部类的方法中可以访问定义它的方法内部的局部变量,但是要求局部变量必须 被。(5) 静态内部类只能访问外部类的静态成员(静态属性和静态的方法)(1) 匿名内部类的定义必须继承一个类或是实现一个接口。内部类的分类:成员内部类、静态内部类、局部内部类、匿名内部类。(4) 访问静态内部类的静态成员时,可以直接通过。
2025-06-23 14:36:42
602
原创 Java常用类
注意:父类中的equals方法是用于比较两个引用是否同一个对象,但是开发时,通常用equals方法比 较对象的内容,所以父类中equals方法不足以满足子类的 需求,则需要覆盖父类。// 产生两个对象。一个在堆空间中,一个在串池中产生。注意:由于不同的对象在堆空间中有不同的十六进制的地址,所有不同的对象具有不同哈希码值。(1) String的字面值是字面常量,如果在字符串上进行操作,在原有字符串的基础上拷贝一个副文本,在副。(3) String toString() : 返回该对象字符串的变现形式。
2025-06-18 15:04:23
896
原创 编程:定义一个函数,计算一个int类型数组元素的平均值;在main函数中调用并打印输出结果。
【代码】编程:定义一个函数,计算一个int类型数组元素的平均值;在main函数中调用并打印输出结果。
2025-06-18 13:54:52
117
原创 编程:定义一个接口 MathTool
1.定义一个接口 MathTool,接口中有三个抽象方法如下: (1) “long intPower(int m , int n)”方法的功能为:返回两个数据中的较大值 (2) “boolean findFactor(int m,int n)”方法的功能为:判断参数的和是否大于 1002.定义接口的实现类,类名为MathToolImpl3.编写测试类TestMyClass,在main函数中完成对象的创建,调用接口中的 3 个方法,并将调用方法的结果输出。
2025-06-12 21:55:53
105
原创 Java接口
实现类实现接口中的方法时,方法的访问修饰符必须是 public 的访问权限。接口定义好之后,将接口的实现者和接口的使用者分离,借助多态,降低各模块之间的耦合度。注意:遇到接口回调的应用,开发人员需要关注的是根据接口规范,给予接口的实现部分。接口:是一种标准、规范,是接口的实现者和接口的使用者都必须遵循的约定。注意:接口类型的引用指向 实现类的对象,多态的应用。interface 接口{}接口回调:接口定义之后,先有接口的使用者,再有接口的实现者。中的接口之间的继承关系是多继承,一个接口可以有多个父接口。
2025-06-11 13:47:13
456
原创 编程:定义一个交通工具类(Vehicle)类中属性有商标(brand),颜色(color)
【代码】编程:定义一个交通工具类(Vehicle)类中属性有商标(brand),颜色(color)
2025-06-04 13:35:37
81
原创 编程:定义一个网络用户类(User类),需要处理的信息有用户名,用户密码password,邮箱地址(email)
【代码】编程:定义一个网络用户类(User类),需要处理的信息有用户名,用户密码password,邮箱地址(email)
2025-05-28 14:44:47
135
原创 编程:定义一个Book类(代表教材),具有属性名称(title),页数()pageNum
【代码】编程:定义一个Book类(代表教材),具有属性名称(title),页数()pageNum。
2025-05-27 22:58:58
108
原创 Java三个修饰符
初始化父类的属性:---》父类的动态代码块被执行。初始化子类的属性:---》子类的动态代码块被执行。先加载父类:为父类的静态属性分配空间并完成父类静态属性的初始化。再加载子类:为子类的静态属性分配空间并完成子类静态属性的初始化。b. 作用:在类加载时,按照和静态属性定义的先后顺序,完成对静态属性的初始化工作。out:静态的属性,类型为对象类型的属性。b. 作用:在创建对象时,按照和属性定义先后顺序,完成对属性的初始化工作。-> 第一次调用子类中的静态成员:先加载其父类,再加载子类。
2025-05-21 13:56:55
929
原创 面向对象的三大特性(封装、继承、多态)
Iv. 如果子类的构造方法的第一行语句为 this()/this(实参),则JVM完成父类创建时不在当前的子类 的构造方法第一行语句查找 super()/super(实参) ,而是转向 this()/this(实参)指向的构造方法 的第一行查找super()/super(a. 构造方法的方法名必须和类名一样,子类和父类各有不同类名,所以子类继承父类的构造方法不满足 构造方法的语法要求,所以不能继承。b. 子类的属性 和方法要比父类更复杂,所以子类的构造方法需要完成更多的赋值内容,所以父类的构造。
2025-05-14 21:11:31
924
原创 Java面向对象
(5) 开发建议:定义一个类时,通常提供无参数的构造方法和有参数的构造方法,没有特殊说明的情况下,有参数的构造方法的参数个数取决于属性的个数和类型。面向对象:想将程序中所用到的对象找出,作为整体进行应用,利用各对象之间的关系,进行解决问题。(2) this. 用在类中的成员方法或是构造方法中,代表调用当前对象的属性或是成员方法。注意:开发时,类中定义属性,只需定义程序功能所关注的那部分属性即可。// 方法体(方法的实现部分。(1) this() 用在类中构造方法中,代表调用本类的其他构造方法。
2025-05-07 17:59:17
754
原创 Java数组(二)
(2) 显示初始化:数据类型 [] [] 数组名 = new 数据类型 [] []{{ 值 1, 值 2},{ 值 3, 值 4},{ 值 5, 值 6}};b. 数据类型 [] [] 数组名 = {{ 值 1},{ 值 1, 值 2, 值 3},{ 值 1, 值 2}};(1) 声明的同时并分配空间:数据类型 [][] [] [] 数组名 = new 数据类型 [ 行数 ] [ 列数 ];(3) 显示初始化:数据类型 [] [] 数组名 = {{ 值 1, 值 2},{ 值 3, 值 4}};
2025-04-30 15:43:08
282
原创 Java数组(一)
3. // 内层循环控制每一轮具体比较内容:前一个比较项 a[i]5. // 将 a[j] 和 a[j+1] 比较。第二个参数:指定新数组的长度。语法规定:一个函数中最多只能定义一个可变长参数,并且可变长参数必须定义在形参最后一个位置。使用:可变长参数会自动生成对应类型数组,所以在函数中直接将 可变长参数当做数组应用即可。概念: 可以通同时存储多个 相同类型的数据,并且可以对其中的多个数据统一操作。
2025-04-23 15:51:09
523
原创 Java函数
函数的执行原理:程序执行过程中,遇到函数的调用,则程序跳到被调用的函数内部执行,被调用函数执行完。使用:形式参数它相当于 函数的内容的局部变量,在函数内部可以直接通过参数名直接。实参的作用:实参给形参赋值,实参必须和形参 的个数、顺序、类型一致。概念:一个函数的内部调用了自身函数,这种现象称为递归调用。函数的返回值类型、函数名、形参列表称为函数的三要素。函数的嵌套调用:被调函数的内部,又调用了其他的函数。参数:调用者调用函数的时,传递的数据成为参数。返回的结果必须和约定的返回值类型结果一致。
2025-04-16 17:06:33
543
原创 Java循环结构
执行的原理:先执行循环体,同时循环变量进行改变,再判断循环条件是否满足,满足,继续执行循环。接着执行循环变量的改变③,再次判断循环条件②,条件成立,继续执行循环体④,再次改变循环。中的循环变量的定义及初始化可以写在循环的前面,但是定义循环的前面的循环变量,作用范围扩。双层循环可以用于打印输出图形,通常用 外层循环控制图形的行数,内层循环控制图形的列数。体,同时循环变量改变,再判断循环条件,直到循环条件不满足。循环的组成:循环变量的初始化、循环条件、循环变量改变。:结束本次循环,从而的进入下一次循环。
2025-04-10 20:39:40
780
原创 Java分支结构
执行原理:从上往下依次判断,哪一个布尔表达式的结果为。作用范围:从定义位置开始,到定义它的的代码块结束。中的数据和表达式的结果都不匹配时,才执行。重名:在重合作用范围内,不允许命名冲突。执行的原理:如果布尔表达式的结果为。执行的原理:如果布尔表达式结果为。语句没有位置要求,只有当 所有的。语句的下面,并且所有类的上面。概念:定义在函数内部的变量。结构后面的语句继续执行。条件成立的情况下,执行内层。中表达式的结果类型必须是。包中的内容自动导入。执行原理:先判断外层的。使用:先赋值,再使用。
2025-04-10 20:35:51
534
原创 变量、数据类型、表达式
面试题目:分别写出以下代码编译是否通过,不通过,解释原因,通过,打印结果。概念:由变量、运算符、字面值等组成一个式子,通常会有一个结果产生。如果 用关系运算符连接两个变量,用于判断关系是否成立,关系成立。编译报错,违反了两个变量参与运算的提升规则,结果应为。:非短路运算符,不管前面的布尔表达式是否为。相同点:与的关系,两边布尔表达式同时 为。短路运算符,一旦第一个布尔表达式的结果为。原始数据作为表达式的结果,再 将。执行的原理:如果布尔表达式结果为。类型的表达式称为布尔表达式。,后面的布尔表达式不在运算。
2025-04-10 20:33:17
522
原创 变量、数据类型、表达式
概念:计算中的一块存储空间,是存储数据的基本单位。是强类型的语言:对应类型的数据只能存储对应类型的变量中。大数据类型的变量赋值给小数据类型,需要用到强制类型转换。类、接口、字符串、数组等类型的数据都是引用数据类型。小数据类型的变量 可以直接赋值为大数据类型的变量。整数类型的变量中的数据不合理,数据强转结果截断。字面值:程序中可以给某个对应类型变量赋的数据。整数类型的变量中的数据合理,数据强转结果完整。类型的哪一个存储的数据范围大一些?类型的变量不能参与 数据类型的提升。注意:此处的符号都是英文符号。
2025-04-10 20:32:22
570
原创 JAVA环境搭建
函数名、方法名、变量名 第一个单词的首字母小写,其余单词首字母大写,称为驼峰命名法,作用:类似于文件夹,用于管理文件,进行分门别类,不同角色文件进行统一管理。注意: 单行注释不能嵌套多行注释,但是多行注释可以嵌套单行注释。一个源文件中如果定义多个类,编译之后每一个类会生成对应的。通俗的将程序中起名字的地方称为标识符,例如包名、类名等。函数,是程序的入口,一个类中最多只能定义一个主函数。公开类的类名和源文件名一致,源文件名字唯一。修饰符,被它修饰的类称为公开类、公共类。一个源文件中最多只能定义 一个公开类。
2025-04-10 20:25:29
818
原创 Deepseek的认识
DeepSeek的核心是一个强大的语言模型,能够理解自然语言并生成高质量的文本内容,无论是回答问题、撰写文章,还是进行复杂的推理,DeepSeek都能轻松应对。DeepSeek的V3和R1模型因其创新的技术架构和高效的运行效率,极大地降低了训练和推理成本,挑战了西方在AI领域的霸权地位。其技术创新和用户基础的扩大,使得DeepSeek在未来的发展中将继续挑战现有的AI技术格局,推动人工智能技术的进一步普及和应用。联网搜索:它能够实时访问互联网获取最新信息,确保用户获取到的内容是及时且准确的。
2025-03-05 20:25:54
445
原创 初识Java
Java语言认为世界上的万事万物都可以看成对象,并且能够通过编程的方式使这些对象相互协调完成复杂的系统,这些编程模式更符合人类的思维方式。Java语言是由c和c++演变而来的,Java更加好用是因为它省略了C语言中所有难以理解和容易混淆的特性,因此变得更加严谨,简洁,并且能够实现内存中无用单元的自动回收,使用户不必为存储管理问题烦恼,能将更多的时间和精力花费在研究上,更方便人们使用。Java程序可以很好地支持多线程机制。可以用多条线索的方式控制程序的运行,就好像我们在手机上可以同时听音乐和用微信聊天一样。
2025-03-05 20:17:47
191
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅