- 博客(62)
- 收藏
- 关注
原创 ArrayList与顺序表
1.线性表(linear list) 是n个具有相同特性的数据元素的有序数列.线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表,链表,栈,队列...线性表在逻辑上是线性结构的,也就是说是一条连续的直线.但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式储存。顺序表是用一段物理地址连续的储存单元依次存储数据的线性结构,一般情况下采用的数组储存.在数组上完成增删改查。ArrayList底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表。
2024-12-28 21:16:08
211
原创 Java 中的ArrayList常用方法总结
在指定的位置插入指定的元素。返回列表中最后一次出现的指定元素的索引,如果未找到则返回-1。返回列表中第一次出现的指定元素的索引,如果未找到则返回-1。从指定的位置开始,将指定集合中的所有元素插入到列表中。返回一个包含列表中所有元素的数组,数组类型为指定类型。将指定集合中的所有元素添加到列表的末尾。用指定的元素替换列表中指定位置的元素。移除列表中所有包含在指定集合中的元素。仅保留列表中包含在指定集合中的元素。返回一个包含列表中所有元素的数组。将指定的元素添加到列表的末尾。返回列表中指定位置的元素。
2024-12-22 23:00:55
711
原创 Java中通过ArrayList扩展数组
与传统的数组不同,ArrayList 不需要预先指定大小,并且提供了许多方便的方法来操作集合中的元素。2. 扩容机制:当添加元素超过当前容量时,ArrayList 会创建一个新的数组,其大小为原数组的 1.5 倍(具体实现可能因Java版本而异),然后将原数组的元素复制到新数组中。数组(Array):在Java中,数组的大小是固定的,一旦创建就无法更改其大小。如果需要存储更多元素,必须创建一个更大的新数组,并将原数组的元素复制到新数组中。大小可变:ArrayList 可以动态调整大小,而普通数组大小固定。
2024-12-19 22:34:18
968
原创 Java的应用场景
丰富的开源库和框架:Java 拥有庞大的开源社区,提供了丰富的库和框架,如 Apache Commons、Google Guava、Hibernate、JUnit 等。Java 的跨平台性、强大的性能和丰富的生态系统使其成为开发各种类型应用的理想选择。无论是企业级应用、移动应用、桌面应用,还是大数据处理、游戏开发、金融科技等领域,Java 都能提供高效、可靠的解决方案。Java 是一种广泛使用的编程语言,因其强大的功能、跨平台性和丰富的生态系统,在多个领域都有广泛的应用。1. Web 应用开发。
2024-12-18 21:30:18
296
原创 Java中的LIst
List subList(int fromIndex, int toIndex): 返回列表的子列表。E set(int index, E element): 替换指定位置的元素。boolean remove(Object o): 删除第一个匹配的元素。int indexOf(Object o): 返回第一个匹配元素的索引。E remove(int index): 删除指定位置的元素。提供了push(), pop(), peek()等方法。E get(int index): 获取指定位置的元素。
2024-12-17 21:17:17
868
原创 JavaSe部分总结
我们先来了解一下Java语言,JavaSE是Java编程语言的标准版,主要是来学习Java的基本语法,书写方式,以及一些简单的逻辑循环和判断,包括一些关键字,特殊类(抽象类),特殊的方法(static修饰的方法,final修饰的方法)等等,最重要的是Java语言是比较C语言和C++语言是比较简单的,Java是面向对象的语言,面向对象的语言的三大特性"封装","继承","多态",Java作为面向对象语言的一种,也是具有这样的特性的。1.逻辑类型:也就是boolean类型的"true""false"
2024-12-16 22:32:59
1055
原创 Java算法小练
对于数组 {1, 3, 5, 7, 9, 3, 5, 7, 11},最长的无重复子数组是 {1, 3, 5, 7, 9},长度为 5。当 n = 5 时,dp[5] = dp[4] + dp[3] + dp[2] = 7 + 4 + 2 = 13,输出13。当 n = 3 时,dp[3] = dp[2] + dp[1] + dp[0] = 2 + 1 + 1 = 4,输出4。子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组。
2024-12-15 19:17:24
566
原创 Java代码实现“杨辉三角“
创建一个二维数组triangle来存储杨辉三角的数值。数组的大小为rows x rows,因为杨辉三角的第i行有i+1个数字。杨辉三角(Pascal's Triangle)是一个经典的数学结构,其特点是每一行的数字是其上方两个数字之和。内层循环填充中间的数字,计算方法为上一行的左右两个数字之和。调用printTriangle方法打印生成的杨辉三角。其他位置的数字是其左上方和右上方数字之和。提示用户输入杨辉三角的行数,并读取输入。1. 使用二维数组存储杨辉三角的数值。每一行的开头和结尾的数字也是1。
2024-12-14 23:23:51
448
原创 Java中的包装类
虽然在这种情况下所有的类型都可以存放,但是在跟多的情况下我们只希望它只有一类数据类型比如数值型的是一类.而不是同时有这么多的类型.所以,泛型的主要目的:指定当前的容器,要有什么样的数据类型.让编译器去检查.此时,就需要把类型,作为参数传递.需要什么类型,就传入什么类型。一般的类和方法,只能使用具体的类型:要么就是基本类型,要么就是自定义的类.如果要编写可以应用与多种类型的代码,这种刻板的限制对代码的束缚就会非常大.注意的是:泛型只能接受类,所有的基本数据类型必须使用包装类!1.4装箱和拆箱的小题。
2024-12-13 23:36:07
722
原创 Java中的“泛型“
泛型允许我们在定义类、接口或方法时使用一个或多个类型参数,这些类型参数在使用时会被具体的类型替换。例如,List 是一个泛型接口,其中 E 是一个类型参数。泛型是Java中一个强大的特性,它通过提供类型参数增强了代码的类型安全性和重用性。类型参数不能是基本类型:例如,不能使用 List,只能使用 List。无界通配符 :表示任何类型。泛型类型信息在运行时不可用:由于类型擦除,运行时无法获取具体的类型参数信息。代码重用:泛型允许编写更通用的代码,可以处理不同类型的数据。
2024-12-12 21:19:29
719
原创 Java数据结构“时间复杂度“和“空间复杂度“
时间复杂度的定义:在计算机科学中,算法的时间复杂度是⼀个数学函数,它定量描述了该算法的运 ⾏时间。⼀个算法执⾏所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上 跑起来,才能知道。⼀个算法所花费的时间与其中语句的执⾏次数成正⽐例,算法中的 基本操作的执⾏次数,为算法的时间复杂度。时间复杂度主要衡量的是⼀个算法的运⾏速度,⽽空间复杂度主要衡量⼀ 个算法所需要的额外空间,在计算机发展的早期,计算机的存储容量很⼩。O(1) 常数空间复杂度: 算法使用的空间是固定的,不随输入规模变化。
2024-12-10 18:35:32
381
原创 认识Java中的异常
通过上述代码进行比较:我们可以看出我们可以使用Exception来进行处理抛出的异常,但是用Exception是无法准确表达异常信息的一般我们是不建议使用的,还有就是Exception是上面三个异常的父类,而在catch时 Exception是是不能放在它子类前面的否则会发生报错。像上述代码就是属于,防御型的异常处理,在我们为了防止异常的出现提前设置好相应异常的处理方式. 这种代码格式会使正常的代码和处理错误的代码混和在一起,显的代码比较混乱。
2024-12-09 23:26:27
1405
原创 Java中的String类用法详解
注意的是:尽量避免对String类型直接进行修改,因为String类是不能修改的,所有的修改都会创建新对象,效率非常低下.tirm()会去掉首尾的所有空白字符串(空格,换行,制表符等)可以把一个完整的字符串按照规定的分隔符拆分为若干个子字符串。实例:字符串的部分拆分。实例:字符串的拆分处理。4.字符串大小写转换。
2024-12-08 18:13:58
408
原创 Java中的String类
上述代码中的s1,s2,s3输出的内容都是"Hello",我们在实际中最长使用的就是是一种字符串的构造方法,s1所指的"Hello"是放在"常量池"中的,s2中的"hello"是通过"new"出来的,在java编程体系中,只要是通过"new"出来的都是放在"堆"上面的,s3同s2一样是如此。我们通过结果可以看出把s1和s2放在compareTo的不同位置会得到不同的结果,计算过程一般是this就是"."前面的会减去"()"这里面的,得出的计算结果。使用一个指定的新的字符串替换掉已经有的原字符串。
2024-12-07 20:53:33
752
原创 Java中的深拷贝和浅拷贝
在Java中,浅拷贝(Shallow Copy)和深拷贝(Deep Copy)是两种不同的对象复制方式。当person2的address.city被修改时,person1的address.city保持不变,这就是深拷贝的特性。浅拷贝会创建一个新对象,但对于对象内部的引用类型属性,仍然复制其引用而不是创建一个新的独立对象。深拷贝会创建一个新对象,并且递归地复制对象内部的所有引用类型属性,使得新对象与原对象完全独立。深拷贝适用于需要完全独立的对象副本,确保原对象和新对象之间没有引用共享的情况。
2024-12-06 21:57:25
671
原创 接口使用实例接口“Compareable“的实现以及“compareTo“方法的实现从
要想正确通过编译我们可以让Student类去实现Comparable接口,并实现compareTo方法 ,在sort方法中会自动调用compareTo方法,compareTo的参数是Object,其传入的参数就是Student类型的对象.然后比较当前对象和参数对象的大小关系。我们创建了类名为"StudentComparator"去实现了接口"Comparator"与一般接口不同的就是中放入的是我们的主函数的类名 这样我们可以在Student2这个类中就可以调用进行比较判断。
2024-12-05 20:43:28
338
原创 Java中的“接口”补充
动物类”鸭子“在这里进行了多接口的实现,在类中创建了构造方法,并且调用了父类”Animal“的构造方法,并获取的参数”name“3.上面的代码展示类Java面向对象编程中常见的方法,子类继承父类,并且实现多个接口。第三个动物”鸭子“会跑,游泳以及飞所以我们要进行多个接口的实现。,而我们要实现多继承的问题是在类中无法的到解决的,我们。第二动物是“鱼”是会游泳的我们要实现。,在java中式可以实现多个接口的。我们创建几个具体的动物。第一个动物“猫”是会跑的,(双接口实现)分别同时实现。接口三:表示会游泳的。
2024-12-04 17:57:02
287
原创 Java中的“接口“详解
原因是: 重写的方法的权限是不可以比接口中的抽象方法更低的权限,因为接口中的权限是"public",重写方法的权限也只能是"public"接口的定义格式与类的定义格式相同,将"class"关键字换成"interface"关键字,就定义了一个接口.下面写一个简单的USB接口用鼠标去实现这个接口。实现接口的类"Mouse"
2024-12-03 16:48:40
589
原创 Java中的“抽象类“详解
抽象类的概念是比较抽象的,比如现在有一个"父类"是"动物类",继承这个父类的子类中有"狗","猫",我们在子类中在去定义不同的特征,比如"年龄","名字","品种",但是这些特征在父类"动物类"中是不存在的,是抽象的,不容易理解的.在面向对象的概念中,所有的对象都是通过,类来描述的,但是反过来,不是所有的类都是用来描述对象的,如果一个类中没有包含足够的信息来描述一个具体的对象,这样的类就是抽象类。抽象类本身不能被实例化, 要想使用, 只能创建该抽象类的子类. 然后让子类重写抽象类中的抽象方法.
2024-12-02 22:29:11
1284
原创 Java中的“抽象类“与“接口“之间的关系
抽象类和接口都是Java中用于实现抽象的重要工具,但它们有不同的适用场景和设计理念。在Java中,抽象类和接口都是用于实现抽象的机制,但它们在设计目的、使用方式以及功能上有一些不同。Animal抽象类实现了AnimalBehavior接口,并实现了sleep()方法,同时声明了一个抽象方法makeSound()。Animal是一个抽象类,包含一个抽象方法makeSound()和一个具体方法sleep()。类可以实现多个接口,实现类必须实现接口中所有的抽象方法。接口用于定义类的行为规范,强调实现类的功能。
2024-12-01 18:33:01
543
原创 Java中的运算符“instanceof“详解
在Java中,instanceof运算符用于检查一个对象是否是某个特定类的实例,或者是否实现了某个特定接口。由于myDog是Dog的对象,条件为true,可以安全地调用Dog类的方法。由于myCat是Cat的对象,条件为true,可以安全地调用Cat类的方法。在使用instanceof进行类型检查后,最好进行类型转换(强制类型转换),以确保后续代码可以安全地调用对象的方法。instanceof运算符不仅检查对象的类是否与指定的类相同,还会检查是否是其子类的实例。instanceof运算符的语法。
2024-11-30 23:00:37
945
原创 Java中的“封装“详解
它通过将数据和操作数据的方法绑定在一起,并隐藏对象的内部实现细节,只提供有限的访问接口来实现。这种机制不仅提高了代码的安全性,还增强了代码的可维护性和可重用性。访问控制: 通过公共的getter和setter方法,外部代码可以安全地访问和修改私有属性,同时可以在这些方法中添加数据验证逻辑。通过这种方式,类的内部实现细节被隐藏,外部代码只能通过公共接口来访问和修改对象的状态,从而实现了封装的优势。2. 提供公共的getter和setter方法: 为每个私有属性提供公共的方法来访问和修改这些属性。
2024-11-29 21:53:19
687
原创 Java中的“多态“详解
多态(Polymorphism)是面向对象编程(OOP)中的一个核心概念,它允许同一个接口或方法在不同对象上具有不同的实现方式。多态性使得程序在运行时可以根据对象的实际类型来决定调用哪个方法,从而提高代码的灵活性和可扩展性。通过父类 Animal 的引用,可以指向不同的子类对象,调用 makeSound 方法时,会根据对象的实际类型执行相应的方法。通过接口类型的引用,可以指向不同的实现类对象,调用 draw 方法时,会根据对象的实际类型执行相应的方法。通过接口和抽象类,可以实现更加灵活的多态。
2024-11-28 21:27:48
603
原创 Java中的继承详解
在Java编程中,继承(Inheritance)是一种面向对象编程(OOP)的核心概念,它允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法。创建 Dog 类的对象 myDog,并调用其方法 eat() 和 bark(),展示了继承和方法重写的效果。Dog类拥有Animal类的name属性和eat()方法,同时新增了自己的breed属性和bark()方法。子类(派生类):继承自父类的类,可以拥有自己的属性和方法,也可以重写(Override)父类的方法。
2024-11-27 21:25:13
894
原创 Java中的final关键字详解
Java中的final关键字是一个修饰符,它可以用于变量.方法和类,下面我通过文字和代码的形式来讲解final关键字。final变量表示一旦被赋值后,就会变成常量,不能改变.使用基本数据类型和引用数据类型。当一个方法被声明final时,它不能被任何子类覆盖。当一个类被声明为final时,它不可以有任何子类。final修饰的方法是是不可以被子类重写的。3.final修饰的类不可以被继承。final修饰的变量,值不可以修改。final修饰的方法,不可以被重写。final修饰的类.不可以被继承。
2024-11-26 16:12:42
619
原创 Java中的super关键字详解
访问父类的成员变量: 在 Child 类中,name 是子类的一个成员变量,而 Parent 类中也有一个同名的 name成员变量。调用父类的构造方法: 在 Child 类的构造方法中,super(name) 用于调用父类 Parent 的构造方法,并传递参数 name。3. 默认调用: 如果在子类的构造方法中没有显式调用 super,Java 会自动调用父类的无参构造方法。1. 必须放在构造方法的第一行: 在子类的构造方法中,super 调用父类构造方法时,必须放在构造方法的第一行。
2024-11-25 21:06:37
575
原创 Java二分查找+冒泡排序
主要思想是:根据数组具有下标的特点来分别计算,最左边的索引,以及最右边的索引,在判断目标元素与中间元素的大小,如果目标元素小于中间元素,我们可以判断出,目标元素在中间元素的左边,我们此时更新左右索引,在计算出新的中间元素,在次进行判断,如果目标元素不在数组中就会出现left>right的情况,退出循环,并返回-1.二分查找在编程中是用来查找目标元素在有序数组中的位置,并返回目标元素的索引。先给定一个有序数组,在创建一个方法来进行二分。
2024-11-22 21:06:43
606
原创 Java小练(数组)
如果捕获到异常,会提示用户重新输入,并使用scanner.next()清除错误的输入,然后通过i--重新请求当前位置的输入。如果输入有效,则将数字作为键存入countMap,并更新其对应的值(出现次数)。遍历countMap中的条目,寻找值为1的条目,即只出现一次的数字。创建了一个Scanner对象用于读取用户输入,以及一个HashMap对象用于存储每个数字及其出现的次数。题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。输入: [4,1,2,1,2]输入: [2,2,1]
2024-11-21 18:22:51
633
原创 Java小练(数组)
先声明一个 boolean 类型的 flag 元素命名为 false 然后通过for()循环遍历数组里面的元素,在for()循环的内部嵌套if()条件判断条件是“如果arr[i]除以2的余数不等于0并且arr[i+1]除以2的余数不等于0并且arr[i+2]除以2的余数不等于0” 当这三个条件同时都满足才会进入if()的内部,如果有满足条件的整数,在if()内部会把 flag 的结果改为 ture 并输出结果。如果没有满足条件的整数,此时flag=flase 我们在if()判断的时判断!
2024-11-20 17:57:17
443
原创 Java小练习(数组部分)
方法签名:public static void findTwoNumbers(int[] nums, int target) 定义了一个名为findTwoNumbers的公共静态方法,接受一个整数数组和一个整数目标值作为参数。给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。内层循环:再次遍历数组nums,索引为j,用于查找与nums[i]配对的另一个数。输出这两个数的索引,格式为`[i, j]`。
2024-11-19 20:41:05
627
原创 java中的super关键字(用supre操作被隐藏的成员变量和方法)
子类一旦隐藏了继承的成员变量,那么子类创建的对象就不再拥有该变量,该变量该归关键字super所拥有.同样,子类一旦隐藏了继承的方法,那么子类创建的对象级就不能调用被隐藏的方法,该方法的调用是super关键字负责.因此如果想在子类中使用被子类隐藏的成员变量或方法,就需要用super关键字。主类test_11_18。
2024-11-18 15:32:12
379
原创 java小练习
小练3.实现一个方法 transform, 以数组为参数, 循环将数组中的每个元素 乘以 2 , 并设置到对应的数组元素上. 例如 原数组为 {1, 2, 3}, 修改之后为 {2, 4, 6}小练1.用while语句计算1+1/2!+...+1/20!小练2.计算8+88+888..的前12项之和.(for循环)
2024-11-17 21:51:02
438
原创 在c语言中不创建中间变量来交换输入的两个数的数值
例如,如果 a = 5(二进制 0101)和 b = 3(二进制 `0011`),那么 a = 5 ^ 3 = 6(二进制 0110)。例如,a = 6(二进制 0110),b = 3(二进制 0011),那么 b = 6 ^ 3 = 5(二进制 `0101`)。例如,a = 6(二进制 0110),b = 5(二进制 0101),那么 a = 6 ^ 5 = 3(二进制 `0011`)。此时的 a 是 a ^ b,所以b = (a ^ b) ^ b = a。"交换律":a ^ b = b ^ a。
2024-11-15 17:52:40
895
原创 在java中实现用“*“打印图形“X“(小练)
判断当前字符位置 (i, j) 是否在X的斜线上:如果 j == i,说明在正斜线上。如果 j == (n - 1 - i),说明在反斜线上。如果满足上述任一条件,打印 *,否则打印空格。内层循环 for (int j = 0;j++) 控制每行的列数。外层循环 for (int i = 0;i++) 控制行数。检查输入是否在2到20之间。如果不在范围内,提示用户重新输入。使用 Scanner 类从控制台读取用户输入的整数 n。
2024-11-14 21:30:41
480
原创 java代码小练习
练习二:编写代码模拟三次密码输入的场景。最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序。练习一:计算1/1-1/2+1/3-1/4+1/5 ……+ 1/99 - 1/100 的值。
2024-11-13 23:37:56
252
原创 JAVA中求最大公约数与最小公倍数
在Java中,计算两个整数的最大公约数(Greatest Common Divisor,GCD)和最小公倍数(Least Common Multiple,LCM)可以通过辗转相除法(也称欧几里得算法)来实现。每次循环中,我们用`a % b`得到余数,然后将b赋值给a,将余数赋值给b。1. 辗转相除法:算法基于这样一个事实:两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。36和60的最大公约数是12(36 = 12 * 3,60 = 12 * 5)。最小公倍数是180。
2024-11-13 11:09:39
620
原创 JAVA完成猜数字小游戏
如果用户输入的数字等于随机数,输出“猜对了”,并通过 break 语句退出循环。7. 进入一个无限循环 while(true),这个循环会一直运行直到用户猜对数字。1. 导入必要的类:Scanner用于读取用户输入,Random 用于生成随机数。8. 循环内部提示用户输入一个数字,然后读取用户输入的整数存放在变量 num 中。3. 类中定义一个公共静态方法 main,这是程序的入口点。- 如果用户输入的数字小于随机数,输出“猜小了”。- 如果用户输入的数字大于随机数,输出“猜大了”。
2024-11-11 23:55:47
595
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人