- 博客(56)
- 收藏
- 关注
原创 第六章 LinkedList与链表
LinkedList 的官方文档LinkedList的底层是双向链表结构,由于链表没有将元素存储在连续的空间中,元素存储在单独的节点中,然后通过引用将节点连接起来了,因此在在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。LinkedList实现了List接口;LinkedList的底层使用了双向链表;LinkedList没有实现RandomAccess接口,因此LinkedList不支持随机访问;LinkedList的任意位置插入和删除元素时效率比较高,时间复杂度为O(1);
2023-05-26 11:53:55
778
原创 第五章 ArrayList与顺序表
在集合框架中,ArrayList是一个普通的类,实现了List接口,具体框架图如下:说明ArrayList是以泛型方式实现的,使用时必须要先实例化;ArrayList实现了RandomAccess接口,表明ArrayList支持随机访问;ArrayList实现了Cloneable接口,表明ArrayList是可以clone的;ArrayList实现了Serializable接口,表明ArrayList是支持序列化的;和Vector不同,ArrayList不是线程安全的。
2023-05-26 11:52:23
1017
原创 向上转移和向下转型
向上转型其中,fatherClass 是父类名称或接口名称,obj 是创建的对象,sonClass 是子类名称。向上转型就是把子类对象直接赋给父类引用,不用强制转换。使用向上转型可以调用父类类型中的所有成员,不能调用子类类型中特有成员,最终运行效果看子类的具体实现。向下转型其中,fatherClass 是父类名称,obj 是创建的对象,sonClass 是子类名称。
2023-05-15 08:58:30
393
原创 StringBuilder和StringBuffer
由于String的不可更改特性,为了方便字符串的修改,Java中又提供StringBuilder和StringBuffer类。这两个类大部分功能是相同的。// 追加:即尾插-->字符、字符串、整形数字 sb1 . append(' ');// 获取0号位上的字符:h System . out . println(sb1 . length());// 获取字符串的有效长度:14 System . out . println(sb1 . capacity());
2023-05-15 08:56:41
555
原创 抽象类和接口的区别
如之前写的 Animal 例子,此处的 Animal 中包含一个 name 这样的属性, 这个属性在任何子类中都是存在的,因此,此处的Animal 只能作为一个抽象类,而不应该成为一个接口。抽象类存在的意义是为了让编译器更好的校验,像 Animal 这样的类我们并不会直接使用,而是使用它的子类。抽象类中可以包含普通方法和普通字段,这样的普通方法和字段可以被子类直接使用(不必重写);抽象类和接口都是 Java 中多态的常见使用方式。接口中不能包含普通方法,子类必须重写所有的抽象方法。
2023-05-15 08:52:22
59
原创 深拷贝和浅拷贝
如上代码,我们可以看到,通过clone,我们只是拷贝了 Student 对象,但是 Student 对象中的 Money 对象并没有拷贝。通过 student2 这个引用修改了 money 的值后,student2 这个引用访问 money 的时候,值也发生了改变。创建一个新对象/新数组,将原对象/原数组的各项属性的“值”(数组的所有元素)拷贝过来,是“值”而不是“引用”。(修改新对象/新数组。将原对象/原数组的引用直接赋给新对象/新数组,新对象/新数组只是原对象/原数组的一个引用。(修改新对象/新数组。
2023-05-15 08:50:43
60
原创 重写和重载的区别
在自然语言中,一个词语如果有多重含义,那么就说该词语被重载了,具体代表什么含义需要结合具体的场景。在Java中方法也是可以重载的。最好的方式是:重新定义一个新的类,来重复利用其中共性的内容,并且添加或者改动新的内容。重写是子类对父类非静态、非private修饰、非final修饰、非构造方法等的实现过程进行重新编写,重写的好处在于子类可以根据需要,定义特定于自己的行为,也就是说子类能够根据需要实现父类的方法。方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。
2023-05-15 08:49:30
591
原创 第十一章 异常
Java 中虽然已经内置了丰富的异常类,但是并不能完全表示实际开发中所遇到的一些异常,此时就需要维护符合我们实际情况的异常结构。例如, 我们实现一个用户登陆功能if(!} if(!} System . out . println("登陆成功");} }此时我们在处理用户名密码错误的时候可能就需要抛出两种异常。我们可以基于已有的异常类进行扩展(继承),创建和我们业务相关的异常类。自定义异常类,然后继承自Exception 或者 RunTimeException。
2023-05-14 19:01:55
568
原创 第十章 String 类
由于String的不可更改特性,为了方便字符串的修改,Java中又提供StringBuilder和StringBuffer类。这两个类大部分功能是相同的。**方法 **说明str)在尾部追加,相当于String的+=,可以追加:boolean、char、char[]、double、float、int、long、Object、String、StringBuff的变量获取index位置的字符获取字符串的长度获取底层保存字符串空间总的大小扩容char ch)将index位置的字符设置为ch。
2023-05-14 19:01:01
733
原创 第四章 List接口
在集合框架中,List是一个接口,继承自Collection。Collection也是一个接口,该接口中规范了后序容器中常用的一些方法,具体如下所示:Iterable也是一个接口,表示实现该接口的类是可以逐个元素进行遍历的,具体如下:站在数据结构的角度来看,List就是一个线性表,即n个具有相同类型元素的有限序列,在该序列上可以执行增删改查以及变量等操作。List中提供了好的方法,具体如下:**方法 **解释尾插 e将 e 插入到 index 位置尾插 c 中的元素。
2023-05-13 21:27:35
815
原创 第三章 包装类&泛型
JAVA 推出泛型以前,程序员可以构建一个元素类型为Object的集合,该集合能够存储任意的数据类型对象,而在使用该集合的过程中,需要程序员明确知道存储每个元素的数据类型,否则很容易引发异常。方法限定符 < 类型形参列表 > 返回值类型 方法名称(形参列表) {. . . }
2023-05-13 21:26:45
497
原创 第二章 时间和空间复杂度
一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。实例4基本操作执行最好N次,最坏执行了(N*(N-1))/2次,通过推导大O阶方法+时间复杂度一般看最坏,时间。时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间。实例1基本操作执行了2N+10次,通过推导大O阶方法知道,时间复杂度为 O(N)。实例2基本操作执行了M+N次,有两个未知数M和N,时间复杂度为 O(N+M)实例6执行了N次,每次执行1此,时间复杂度为O(N)。
2023-05-13 21:25:11
561
原创 第一章 集合框架
官方教程Java 集合框架,又被称为容器container,是定义在java.util包下的一组接口 interfaces和其实现类 classes。其主要表现为将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储 store 、检索 retrieve 、管理 manipulate ,即平时我们俗称的增删查改CRUD。例如,一副扑克牌(一组牌的集合)、一个邮箱(一组邮件的集合)、一个通讯录(一组姓名和电话的映射关系)等等。
2023-05-13 21:22:46
609
原创 this和super
this引用指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该引用去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。this引用的是调用成员方法的对象。
2023-05-10 11:32:03
645
原创 第八章 继承和多态
成员方法没有同名时,在子类方法中或者通过子类对象访问方法时,则优先访问自己的,自己没有时再到父类中找,如果父类中也没有则报错。
2023-04-28 08:09:10
1053
原创 第七章 类和对象
Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。面相对象程序设计关注的是对象,而对象是现实生活中的实体,比如:洗衣机。但是洗衣机计算机并不认识,需要开发人员告诉给计算机什么是洗衣机。上图左侧就是对洗衣机简单的描述,该过程称为对洗衣机对象实体进行抽象。
2023-04-23 10:59:12
1200
原创 第六章 数组的定义与使用
数组:是相同类型元素的一个集合。在内存中是一段连续的空间。比如现实中的车库:1. 数组中存放的元素其**类型相同**2. 数组的空间是**连续存放**的3. 每个空间有自己的编号,其实位置的编号为0,即数组的**下标**
2023-04-18 12:37:20
574
原创 第五章 方法
就是一个代码片段,类似于 C 语言中的 “函数”。是能够模块化的组织代码(当代码规模比较复杂的时候).做到代码被重复使用, 一份代码可以在多个位置使用.让代码更好理解更简单.直接调用现有方法开发, 不必重复造轮子.方法语法格式// 方法定义 修饰符 返回值类型 方法名称([ 参数类型 形参 . . . ]) {方法体代码;[ return 返回值 ];**示例:**实现一个函数,检测一个年份是否为闰年。
2023-04-17 10:58:31
252
原创 第四章 逻辑控制
①②④③—>②④③—>②④③—>②④③—>②④③—>②④③—>…—>②为false,循环结束。if-else语句如果不加大括号{},则只能写一条语句,且else与最近的if匹配。如果布尔表达式结果为true,则执行if中语句,否则执行else中语句。表达式1成立,执行语句1,否则表达式2成立,执行语句2,否则执行语句3。先执行循环语句, 再判定循环条件,循环条件成立则继续执行,否则循环结束。如果布尔表达式结果为true,执行if中的语句,否则不执行。循环条件为 true,则执行循环语句;
2023-04-15 18:47:24
645
原创 第三章 运算符
int a = 10;int b = 20;a + b;a < b;上述 + 和 < 等就是运算符,即:对操作数进行操作时的符号,不同运算符操作的含义不同。作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。Java中运算符可分为以下:算术运算符(+ - * /)、关系运算符(< > ==)、逻辑运算符、位运算符、移位运算符以及条件运算符等。
2023-04-13 12:46:01
552
原创 第二章 数据类型与变量
常量即程序运行期间,固定不变的量称为常量。以上:100、3.14、A、true、false都是常量,将其称为字面常量。字面常量的分类:注意:字符串、整形、浮点型、字符型以及布尔型,在Java中都称为数据类型。在Java中数据类型主要分为两类:基本数据类型和引用数据类型。基本数据类型有四类八种:注意:在程序中,除了有始终不变的常量外,有些内容可能会经常改变,比如:人的年龄、身高、成绩分数、数学函数的计算结果等,对于这些经常改变的内容,在Java程序中,称为变量。而数据类型就是用来定义不同种类变量的。定义变量
2023-04-13 12:43:52
415
原创 第一章 初始Java
Java 是一种优秀的程序设计语言,它具有令人赏心悦目的语法和易于理解的语义。不仅如此,Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。
2022-05-30 21:06:50
497
原创 2022-05-21_编程练习
文章目录第 1 题(编程题)第 2 题(编程题)第 3 题(编程题)第 4 题(编程题)第 5 题 最小公倍数第 6 题 倒置字符串第 1 题(编程题)题目名称:BC100-有序序列合并题目内容:BC100-有序序列合并点击题目链接,做题int main(){ int n = 0; int m = 0; int arr1[1005] = { 0 }; int arr2[1005] = { 0 }; int arr3[2010] = { 0 };
2022-05-29 11:19:17
139
原创 2022-05-16_调试技巧(初阶)
文章目录第 1 题(单选题)第 2 题(单选题)第 3 题(单选题)第 4 题(单选题)第 5 题(单选题)第 6 题(简答题)第 7 题(编程题)第 8 题(编程题)第 9 题(编程题)第 1 题(单选题)题目名称:C程序常见的错误分类不包含:( )题目内容:A .编译错误B .链接错误C .栈溢出D .运行时错误栈溢出是运行时错误的一种,因此C程序为将栈溢出单独列出,栈溢出包含在运行时错误中。第 2 题(单选题)题目名称:关于VS调试快捷键说法错误的是:( )题目内容:A
2022-05-29 10:53:51
613
原创 第一章 数据在内存中的存储
文章目录1. 数据类型介绍1.1 类型的基本归类:1.2 有符号和无符号整型取值范围2. 整形在内存中的存储2.1 原码、反码、补码2.2 大小端介绍2.3 练习3. 浮点型在内存中的存储3.1 一个例子3.2 浮点数存储规则1. 数据类型介绍基本的内置类型有:char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数double //双精度浮点数//C语言
2022-05-29 10:12:03
310
原创 2022-05-13 结构体
文章目录第 1 题(单选题)第 2 题(单选题)第 3 题(单选题)第 4 题(单选题)第 5 题(单选题)第 6 题(单选题)第 7 题(编程题)第 1 题(单选题)题目名称:如有以下代码:struct student{ int num; char name[32]; float score;}stu;则下面的叙述不正确的是:( )题目内容:A .struct 是结构体类型的关键字B .struct student 是用户定义的结构体类型C .num, score 都是
2022-05-29 10:06:59
1394
原创 2022-05-13 结构体
文章目录第 1 题(单选题)第 2 题(单选题)第 3 题(单选题)第 4 题(单选题)第 5 题(单选题)第 6 题(单选题)第 7 题(编程题)第 1 题(单选题)题目名称:如有以下代码:struct student{ int num; char name[32]; float score;}stu;则下面的叙述不正确的是:( )题目内容:A .struct 是结构体类型的关键字B .struct student 是用户定义的结构体类型C .num, score 都是
2022-05-21 16:43:41
811
原创 2022-05-11 指针概念
文章目录第 1 题(单选题)第 2 题(单选题)第 3 题(单选题)第 4 题(单选题)第 5 题(单选题)第 6 题(单选题)第 7 题(编程题)第 8 题(编程题)第 9 题(编程题)第 10 题(编程题)第 11 题(编程题)第 1 题(单选题)题目名称:关于指针的概念,错误的是:( )题目内容:A .指针是变量,用来存放地址B .指针变量中存的有效地址可以唯一指向内存中的一块区域C .野指针也可以正常使用D .局部指针变量不初始化就是野指针A:正确,指针变量中存储的是一个地址,指
2022-05-21 16:09:34
460
原创 2022-05-09_算术转换
文章目录第 1 题(单选题)第 2 题(单选题)第 3 题(单选题)第 4 题(编程题)第 5 题(编程题)第 6 题(编程题)第 1 题(单选题)题目名称:下面代码的结果是:( )#include <stdio.h>int main(){ int i = 1; int ret = (++i)+(++i)+(++i); printf("ret = %d\n", ret); return 0;}题目内容:A .10B .12C .9D .程序错误
2022-05-18 15:14:12
346
原创 2022-05-08_操作符的使用
文章目录第 1 题(单选题)第 2 题(单选题)第 3 题(编程题)第 4 题(编程题)第 5 题(编程题)第 6 题(编程题)第 1 题(单选题)题目名称:下面哪个是位操作符:( )题目内容:A .&B .&&C .||D .!A. & 是按位与操作符,正确B. && 是逻辑与,不是按位与,错误C. || 是逻辑或,错误D. ! 是逻辑反操作符,错误第 2 题(单选题)题目名称:下面代码的结果是:( )#include &
2022-05-18 15:03:08
61
原创 结构体的学习
文章目录1. 结构体的声明1.1 结构的基础知识1.2 结构的声明1.3 结构成员的类型1.4 结构体变量的定义和初始化2. 结构体成员的访问3. 结构体传参1. 结构体的声明1.1 结构的基础知识结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。1.2 结构的声明struct tag{ member-list;}variable-list;例如描述一个学生:typedef struct Stu{ char name[20];//名字 int age
2022-05-15 20:56:47
93
原创 指针的学习
文章目录1. 指针是什么?2. 指针和指针类型2.1 指针+-整数2.2 指针的解引用3. 野指针3.1 野指针成因3.2 如何规避野指针4. 指针运算4.1 指针+-整数4.2 指针-指针4.3 指针的关系运算5. 指针和数组6. 二级指针7. 指针数组1. 指针是什么?指针是什么?指针理解的2个要点:指针是内存中一个最小单元的编号,也就是地址平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量总结:指针就是地址,口语中说的指针通常指的是指针变量。那我们就可以这样理解:
2022-05-15 20:06:23
87
原创 2022-04-27 编程练习
目录第 1 题(编程题)第 2 题(编程题)第 3 题(编程题)第 4 题(编程题)第 5 题(编程题)第 6 题(编程题)第 7 题(编程题)第 1 题(编程题)题目名称:BC117-小乐乐走台阶题目内容:BC117-小乐乐走台阶点击题目链接,做题#include <stdio.h>int f(int n){ if(n <= 2) return n; else return f(n - 1) + f(n - 2);}
2022-05-12 20:37:36
90
原创 操作符的学习
文章目录原码反码补码1. 操作符分类:2. 算术操作符3. 移位操作符3.1 左移操作符3.2 右移操作符4. 位操作符5. 赋值操作符6. 单目操作符6.1 单目操作符介绍6.2 sizeof 和 数组7. 关系操作符8. 逻辑操作符9. 条件操作符10. 逗号表达式11. 下标引用、函数调用和结构成员原码反码补码原码:最高位表示符号位,其他位存放该数的二进制的绝对值。例如:+7的原码是:00000000 00000000 00000000 00000111 -7的原码是:1000000
2022-05-09 17:22:49
66
原创 2022-04-24_数组的定义和初始化
文章目录第 1 题(单选题)第 2 题(单选题)第 3 题(单选题)第 4 题(单选题)第 5 题(单选题)第 6 题(单选题)第 7 题(单选题)第 8 题(单选题)第 9 题(编程题)第 10 题(编程题)第 1 题(单选题)题目名称:关于一维数组初始化,下面哪个定义是错误的?( )题目内容:A .int arr[10] = {1,2,3,4,5,6};B .int arr[] = {1,2,3,4,5,6};C .int arr[] = (1,2,3,4,5,6);D .int arr
2022-05-04 16:12:40
886
1
原创 2022-04-22_函数(三)
文章目录第 1 题(单选题)第 2 题(单选题)第 3 题(编程题)第 4 题(编程题)第 5 题(编程题)第 6 题(编程题)第 7 题(编程题)第 8 题(编程题)第 9 题(编程题)第 1 题(单选题)题目名称:关于递归的描述错误的是:( )题目内容:A .存在限制条件,当满足这个限制条件的时候,递归便不再继续B .每次递归调用之后越来越接近这个限制条件C .递归可以无限递归下去D .递归层次太深,会出现栈溢出现象递归的两个条件:将问题转化为其子问题,子问题要与原问题具有相同的
2022-05-04 16:07:40
177
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人