自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 第六章 LinkedList与链表

LinkedList 的官方文档LinkedList的底层是双向链表结构,由于链表没有将元素存储在连续的空间中,元素存储在单独的节点中,然后通过引用将节点连接起来了,因此在在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。LinkedList实现了List接口;LinkedList的底层使用了双向链表;LinkedList没有实现RandomAccess接口,因此LinkedList不支持随机访问;LinkedList的任意位置插入和删除元素时效率比较高,时间复杂度为O(1);

2023-05-26 11:53:55 742

原创 第五章 ArrayList与顺序表

在集合框架中,ArrayList是一个普通的类,实现了List接口,具体框架图如下:说明ArrayList是以泛型方式实现的,使用时必须要先实例化;ArrayList实现了RandomAccess接口,表明ArrayList支持随机访问;ArrayList实现了Cloneable接口,表明ArrayList是可以clone的;ArrayList实现了Serializable接口,表明ArrayList是支持序列化的;和Vector不同,ArrayList不是线程安全的。

2023-05-26 11:52:23 854

原创 向上转移和向下转型

向上转型其中,fatherClass 是父类名称或接口名称,obj 是创建的对象,sonClass 是子类名称。向上转型就是把子类对象直接赋给父类引用,不用强制转换。使用向上转型可以调用父类类型中的所有成员,不能调用子类类型中特有成员,最终运行效果看子类的具体实现。向下转型其中,fatherClass 是父类名称,obj 是创建的对象,sonClass 是子类名称。

2023-05-15 08:58:30 344

原创 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 492

原创 抽象类和接口的区别

如之前写的 Animal 例子,此处的 Animal 中包含一个 name 这样的属性, 这个属性在任何子类中都是存在的,因此,此处的Animal 只能作为一个抽象类,而不应该成为一个接口。抽象类存在的意义是为了让编译器更好的校验,像 Animal 这样的类我们并不会直接使用,而是使用它的子类。抽象类中可以包含普通方法和普通字段,这样的普通方法和字段可以被子类直接使用(不必重写);抽象类和接口都是 Java 中多态的常见使用方式。接口中不能包含普通方法,子类必须重写所有的抽象方法。

2023-05-15 08:52:22 47

原创 深拷贝和浅拷贝

如上代码,我们可以看到,通过clone,我们只是拷贝了 Student 对象,但是 Student 对象中的 Money 对象并没有拷贝。通过 student2 这个引用修改了 money 的值后,student2 这个引用访问 money 的时候,值也发生了改变。创建一个新对象/新数组,将原对象/原数组的各项属性的“值”(数组的所有元素)拷贝过来,是“值”而不是“引用”。(修改新对象/新数组。将原对象/原数组的引用直接赋给新对象/新数组,新对象/新数组只是原对象/原数组的一个引用。(修改新对象/新数组。

2023-05-15 08:50:43 36

原创 重写和重载的区别

在自然语言中,一个词语如果有多重含义,那么就说该词语被重载了,具体代表什么含义需要结合具体的场景。在Java中方法也是可以重载的。最好的方式是:重新定义一个新的类,来重复利用其中共性的内容,并且添加或者改动新的内容。重写是子类对父类非静态、非private修饰、非final修饰、非构造方法等的实现过程进行重新编写,重写的好处在于子类可以根据需要,定义特定于自己的行为,也就是说子类能够根据需要实现父类的方法。方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。

2023-05-15 08:49:30 535

原创 第十一章 异常

Java 中虽然已经内置了丰富的异常类,但是并不能完全表示实际开发中所遇到的一些异常,此时就需要维护符合我们实际情况的异常结构。例如, 我们实现一个用户登陆功能if(!} if(!} System . out . println("登陆成功");} }此时我们在处理用户名密码错误的时候可能就需要抛出两种异常。我们可以基于已有的异常类进行扩展(继承),创建和我们业务相关的异常类。自定义异常类,然后继承自Exception 或者 RunTimeException。

2023-05-14 19:01:55 387

原创 第十章 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 584

原创 第四章 List接口

在集合框架中,List是一个接口,继承自Collection。Collection也是一个接口,该接口中规范了后序容器中常用的一些方法,具体如下所示:Iterable也是一个接口,表示实现该接口的类是可以逐个元素进行遍历的,具体如下:站在数据结构的角度来看,List就是一个线性表,即n个具有相同类型元素的有限序列,在该序列上可以执行增删改查以及变量等操作。List中提供了好的方法,具体如下:**方法 **解释尾插 e将 e 插入到 index 位置尾插 c 中的元素。

2023-05-13 21:27:35 802

原创 第三章 包装类&泛型

JAVA 推出泛型以前,程序员可以构建一个元素类型为Object的集合,该集合能够存储任意的数据类型对象,而在使用该集合的过程中,需要程序员明确知道存储每个元素的数据类型,否则很容易引发异常。方法限定符 < 类型形参列表 > 返回值类型 方法名称(形参列表) {. . . }

2023-05-13 21:26:45 485

原创 第二章 时间和空间复杂度

一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。实例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 552

原创 第一章 集合框架

官方教程Java 集合框架,又被称为容器container,是定义在java.util包下的一组接口 interfaces和其实现类 classes。其主要表现为将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储 store 、检索 retrieve 、管理 manipulate ,即平时我们俗称的增删查改CRUD。例如,一副扑克牌(一组牌的集合)、一个邮箱(一组邮件的集合)、一个通讯录(一组姓名和电话的映射关系)等等。

2023-05-13 21:22:46 548

原创 this和super

this引用指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该引用去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。this引用的是调用成员方法的对象。

2023-05-10 11:32:03 608

原创 第九章 抽象类和接口

包含抽象方法的类我们称为。

2023-05-05 11:11:57 492

原创 JDK、JRE、JVM之间的关系?

Java程序运行需要经过编译,运行两个阶段。● 编译:javac 命令。● 运行:java 命令。

2023-04-28 08:11:52 70

原创 第八章 继承和多态

成员方法没有同名时,在子类方法中或者通过子类对象访问方法时,则优先访问自己的,自己没有时再到父类中找,如果父类中也没有则报错。

2023-04-28 08:09:10 863

原创 第七章 类和对象

Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。面相对象程序设计关注的是对象,而对象是现实生活中的实体,比如:洗衣机。但是洗衣机计算机并不认识,需要开发人员告诉给计算机什么是洗衣机。上图左侧就是对洗衣机简单的描述,该过程称为对洗衣机对象实体进行抽象。

2023-04-23 10:59:12 565

原创 第六章 数组的定义与使用

数组:是相同类型元素的一个集合。在内存中是一段连续的空间。比如现实中的车库:1. 数组中存放的元素其**类型相同**2. 数组的空间是**连续存放**的3. 每个空间有自己的编号,其实位置的编号为0,即数组的**下标**

2023-04-18 12:37:20 271

原创 第五章 方法

就是一个代码片段,类似于 C 语言中的 “函数”。是能够模块化的组织代码(当代码规模比较复杂的时候).做到代码被重复使用, 一份代码可以在多个位置使用.让代码更好理解更简单.直接调用现有方法开发, 不必重复造轮子.方法语法格式// 方法定义 修饰符 返回值类型 方法名称([ 参数类型 形参 . . . ]) {方法体代码;[ return 返回值 ];**示例:**实现一个函数,检测一个年份是否为闰年。

2023-04-17 10:58:31 130

原创 第四章 逻辑控制

①②④③—>②④③—>②④③—>②④③—>②④③—>②④③—>…—>②为false,循环结束。if-else语句如果不加大括号{},则只能写一条语句,且else与最近的if匹配。如果布尔表达式结果为true,则执行if中语句,否则执行else中语句。表达式1成立,执行语句1,否则表达式2成立,执行语句2,否则执行语句3。先执行循环语句, 再判定循环条件,循环条件成立则继续执行,否则循环结束。如果布尔表达式结果为true,执行if中的语句,否则不执行。循环条件为 true,则执行循环语句;

2023-04-15 18:47:24 476

原创 第三章 运算符

int a = 10;int b = 20;a + b;a < b;上述 + 和 < 等就是运算符,即:对操作数进行操作时的符号,不同运算符操作的含义不同。作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。Java中运算符可分为以下:算术运算符(+ - * /)、关系运算符(< > ==)、逻辑运算符、位运算符、移位运算符以及条件运算符等。

2023-04-13 12:46:01 417

原创 第二章 数据类型与变量

常量即程序运行期间,固定不变的量称为常量。以上:100、3.14、A、true、false都是常量,将其称为字面常量。字面常量的分类:注意:字符串、整形、浮点型、字符型以及布尔型,在Java中都称为数据类型。在Java中数据类型主要分为两类:基本数据类型和引用数据类型。基本数据类型有四类八种:注意:在程序中,除了有始终不变的常量外,有些内容可能会经常改变,比如:人的年龄、身高、成绩分数、数学函数的计算结果等,对于这些经常改变的内容,在Java程序中,称为变量。而数据类型就是用来定义不同种类变量的。定义变量

2023-04-13 12:43:52 186

原创 typora颜色设置

typora颜色设置

2023-02-08 19:27:17 208

原创 第一章 初始Java

Java 是一种优秀的程序设计语言,它具有令人赏心悦目的语法和易于理解的语义。不仅如此,Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。

2022-05-30 21:06:50 163

原创 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 120

原创 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 455

原创 第一章 数据在内存中的存储

文章目录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 183

原创 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 1193

原创 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 677

原创 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 433

原创 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 246

原创 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 54

原创 结构体的学习

文章目录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 84

原创 指针的学习

文章目录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 72

原创 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 77

原创 操作符的学习

文章目录原码反码补码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 56

原创 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 633 1

原创 2022-04-22_函数(三)

文章目录第 1 题(单选题)第 2 题(单选题)第 3 题(编程题)第 4 题(编程题)第 5 题(编程题)第 6 题(编程题)第 7 题(编程题)第 8 题(编程题)第 9 题(编程题)第 1 题(单选题)题目名称:关于递归的描述错误的是:( )题目内容:A .存在限制条件,当满足这个限制条件的时候,递归便不再继续B .每次递归调用之后越来越接近这个限制条件C .递归可以无限递归下去D .递归层次太深,会出现栈溢出现象递归的两个条件:将问题转化为其子问题,子问题要与原问题具有相同的

2022-05-04 16:07:40 152

原创 数组的学习

文章目录1. 一维数组的创建和初始化。1.1 数组的创建1.2 数组的初始化1.3 一维数组的使用1.4 一维数组在内存中的存储2. 二维数组的创建和初始化2.1 二维数组的创建2.2 二维数组的初始化2.3 二维数组的使用2.4 二维数组在内存中的存储3. 数组越界4. 数组作为函数参数4.1 冒泡排序函数的错误设计4.2 数组名是什么?4.3 冒泡排序函数的正确设计1. 一维数组的创建和初始化。1.1 数组的创建数组是一组相同类型元素的集合。数组的创建方式:type_t arr_name

2022-04-29 15:18:31 93

空空如也

空空如也

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

TA关注的人

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