自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java的128陷阱

128陷阱是指在使用Java中的Integer类时,由于默认缓存范围是-128到127,比较两个看似相同的Integer对象(例如通过自动装箱得到的值)时,如果它们的值在这个范围内,比较操作可能会返回true;而超出这个范围时,比较操作可能会返回false,因为它们引用的是不同的对象实例。它涉及到Integer类的自动装箱和缓存机制。

2024-10-11 00:08:29 255 1

原创 抽象类及特点

(10)抽象类可以有构造方法,目的是在初始化子类之前先初始化父类,例如有一个抽象类A,有一个A的子类B,如果要创建一个B类型的对象,那么在new子类构造器之前肯定需要先new父类构造器,这时候就需要抽象类的构造方法了;(6)final不能同时和abstract出现在一个方法上,因为final修饰的方法不能被重写,而abstract强制要求子类重写修饰的方法;(4)抽象类中不一定全是抽象方法,也可以用普通方法,子类不会被强制重写普通方法,但是一定在抽象类中必须是实现好的;

2024-04-22 23:00:35 231

原创 快速排序 归并排序 几种排序的时间复杂度和空间复杂度

快速排序在数量不算太多的情况下排序速度比较快。假设给定一组无序数据 [100,30,200,90,150,-100,-300,22,300,400,210,260,4,1,9,111,222,878],使用快速排序进行排序。

2024-04-16 22:04:04 1785

原创 Static关键字(未完)

有的时候在方法前加static关键字,有的时候不加,是否添加static涉及类的加载顺序。具有static的方法可以调用同样具有static的方法,无法调用没有static的方法,具体原因和Java中类和对象的关系有关。

2024-04-10 21:01:28 377 1

原创 访问类型 面向对象编程和面向过程编程 面向对象编程的特征

预定义类就是由Java JDK给我们提供的一些类。例如:当我们输入一个数组后,如果要对数据进行输出,使用到 " System.out.println(Arrays.toString(arr)) "该项代码时,其中的Arrays就是由JDK给我们提供的预定义类。

2024-04-10 20:53:10 975 1

原创 归并排序 快速排序

归并排序的基本原理是利用递归的方式将数组先进行拆分,直到拆到不能再拆为止再进行合并。假设有一个数组[5,7,4,2,0,3,1,6],要求对其使用归并排序。

2024-04-10 20:40:21 430 1

原创 递归求数组和 递归二分查找 深度优先遍历

假设有一个数组 [5,7,4,2,3,1,6,8,9],利用递归的方式实现从第一个数加到第n个数的和。

2024-04-10 20:03:00 397 1

原创 递归循环和例题

除了for循环和while循环以外还有一种循环叫做递归循环。递归循环所循环的是一个方法,本质是让方法不断地其本身,以实现方法的自我循环。

2024-04-10 19:29:46 184 1

原创 完全二叉树 堆排序

数据是从上到下从左到右依次进行构建。不遵循小的在左大的在右,当一层没有铺满的时候继续往下铺。我们可以发现规律:(1)N[i] 的左子树: N[2i+1];(2)N[i] 的右子树: N[2i+2];(3)N[i] 的父节点:N[(i-1)/2]。(4)如果一个节点有子树,那么一定有左子树。

2024-04-10 19:15:04 356 1

原创 基数排序 插入排序 希尔排序

基数排序是一种来源于桶排序的思想,其核心是先排个位、再排十位、再排十位使其有序。假设有一个无序数组 [8,22,98,103,44,78,93,171,13,42,61,18],对其进行排序。

2024-04-10 18:56:29 460 1

原创 数组 冒泡排序 选择排序

数组的定义:相同类型数据的集合。数组的作用:数组是用来存储相关数据的。

2024-04-10 18:29:00 289 1

原创 B树 B+树 哈夫曼树

我们在进行存储的时候,如果链表过长,就将链表变换成红黑树。红黑树属于二叉树,而多叉树就是所谓的B树,在前面的课程中提到的234树就是B树。

2024-04-10 16:53:27 855 1

原创 234树(4阶B树) 红黑树(最优二叉树)

一个节点最多分出四个叉的树叫做234树,也叫4阶B树,构成234树的核心就是它的节点。234树的节点由单节点、双节点和三节点这三种节点组成,单节点可以分出两个叉(左右各一个),双节点可以分出三个叉(左右中各一个),三节点可以分出四个叉(左右各一个,中间两个),因此叫做234树。

2024-03-31 02:05:33 1114 1

原创 平衡二叉树的旋转

平衡二叉树的四种旋转:LL型、LR型、RR型、RL型。

2024-03-31 01:59:51 1113 1

原创 数据结构 算法 时间复杂度 有序二叉树 平衡二叉树

类和对象(Java中最基本的部分,目前已经学完了) → 练习最基本的数据结构和算法 → Java基础的中阶(封装、继承、多态)→ 高阶(反射代理)

2024-03-31 01:53:21 680 1

原创 类与对象的关系

如果我们在上图的main函数中再加入一条语句 "Student s2 = new Student" ,那么在运行到S2的这一行代码的时候,将会在堆内存中再开辟一块新的Student内存空间,地址假设为0xbbb,在这个空间中同样存有int类型的age;(6)同时,在(5)里所创建的是一块在堆内存里的空间,每一个空间都有自己的地址(比如就叫0x1),再通过 "Student s = new Student();当我们创建数组的时候也是这样使用new创建的,因此我们创建的数组也是在堆中的;

2024-03-31 01:33:04 334 1

原创 Java的运行 线程

我们编写出来的java文件叫做源文件,内部的代码也叫源代码,是我们人能看懂的代码,通过javac指令将它编译为后缀名为class的二进制代码,这两步都是在磁盘中进行的。随后文件再通过java指令被加载到内存中,再给到CPU中进行运行。所有正在运行的软件都在内存中有自己的内存空间,其中就包括JVM。JVM又叫做Java虚拟机,专门用来运行Java程序,java的数据给到JVM,在JVM内部也分为很多的内存空间,包括:方法区、堆、虚拟机栈。JVM相关的后续课程再作教学。

2024-03-31 01:28:28 587 1

原创 输入和输出 控制流程 大数值

每次创建的时候,当我们对它的信息进行改变的时候,例如ab变成abc或者变成abcd,就会更改我们原先的内存,就会造成大量内存的浪费。这种情况下使用StringBuilder或者StringBuffer就可以节省内存。

2024-03-31 01:18:55 323 1

原创 左移运算和右移运算 字符串的不可变性 equals API 构建字符串的方式

a>>x:将a的补码中的每一位数向右移动x位,再在左边补上x个0或1(是0还是1取决于a的正负,其和a的符号位相同),相当于a除以2^x。a>>>x:将a的补码中的每一位数向右移动x位,再在左边补上x个0,相当于a除以2^x的绝对值。

2024-03-31 00:13:03 667 1

原创 位运算 磁盘 CPU

首先将运算的两个数转换成二进制,然后按照与、或、非、异或的计算规则对于每一位:在每一位上,两个数都是1的时候,该位记为1,只要有一个数是0,则记为0;:在每一位上,只要有一个数是1,该位记为1,两个数都是0的时候,则记为0。:在每一位上,当两个数相同时,该位记为0,当两个数不同时,则记为1。(使用异或运算可以不引入第三个变量的情况下交换两个数):将进行运算的数的每一位都进行取反,得到的结果是补码的形式。

2024-03-30 23:47:23 774

原创 数据类型转换 数据的自增自减 三目运算符

自动类型转换指的是,数据可以从小的类型转换成大的类型。但是因为int存储数据占用31bit,float存储数据占用23bit,因此由int转换成float的过程中,当转换的数据过大时,会存在精度丢失。而int转换为double的时候不会出现精度丢失的问题,但是long转换为double的时候会出现精度丢失的问题。强制类型转换强制类型转换指的是无视数据存储空间的大小,强制将一种数据类型转换为另一种数据类型,这样的方式容易造成精度丢失。数据的自增(++)和自减(--)

2024-03-30 23:37:40 162

原创 浮点数据的存储 精度丢失 字符与字符串类型数据 显示器显示数据的方法

浮点类型分为float和double,数据以科学计数法的方式存储。:大小为32bit,其中1bit表示符号位(即数值的正负,0代表正数,1代表负数),8bit表示阶位(即小数点的位置,用移码的形式表示),23bit表示数值位(即数值,用补码的形式表示)。:大小为64bit,其中1bit表示符号位,11位表示阶位,52bit表示数值位。

2024-03-30 23:24:54 1008

原创 第一课 数据类型 计算机存储数据的方式

注:给long赋值时默认输入的类型是int类型,如果该数据超过了int的有效范围,则会报错,因此在给long赋值时最好在数据的最后加上一个"L"或"l"。将十进制的数除以2,记下余数,再将商继续除以2,再记下余数,直到最后的商是1或者0,再从商开始倒着将每一个记下的余数按顺序排列,即可得到该数的二进制表示。00101101+11010010=11111111(反码)→转换为源码→10000000(源码)= -0。即结果为:00000000(补码)→转换为源码→00000000(源码)=0。

2024-03-30 23:09:36 758

空空如也

空空如也

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

TA关注的人

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