- 博客(49)
- 收藏
- 关注
原创 MySQL基础篇的补充
如下图:其实有全外连接,但是MySQL不支持。查询语句的书写顺序查询语句的执行顺序重要的事情说三遍,虽然这些东西可能在实际上运用的很少,但是我们也必须了解,毕竟技多不压身。
2024-09-21 12:01:31 676
原创 C++类和对象(二)类的默认成员函数:取地址及const取地址重载 | 初始化列表 | 友元 | 隐式类型转换
我们要多去使用才能更好的掌握,加油吧各位!
2024-05-09 18:33:26 1486
原创 实现日期类
没啥总结,就是有空再写一遍,这里给出全部代码:class Date//设置友元函数声明//流插入初始为全局函数//流提取public://缺省函数在定义的时候给//直接定义在类里面,默认是inline(内联)//频繁调用//默认平年//判断闰年,先判断2月再判断闰年return 29;else//检查日期合法性// d1 - d2//为了区分,构成重载//强行给后置++ 增加了一个int形参//流插入。
2024-05-08 23:13:22 433 1
原创 C++类和对象(一)this指针 | 默认成员函数 | 运算符重载 | 访问权限
其实任何东西,只要你想学,没人能挡得住你,而且其实学的也很快。那么本篇开始学习类和对象(C++的,由于作者有Java基础,可能有些东西过得很快)。
2024-05-08 19:50:12 1267 1
原创 初始C++(一)
C语言学好了,现在当然要进阶了,那么就是从C++开始。C++兼容C,支持其中90%的语法。可能有很多同学听说过C#,C#和C没有关系,是微软研究出来对标Java的语言。C++有63个关键字。今天就到这,加油各位!
2024-05-07 23:35:47 813
原创 初始Linux(一)基础命令
Linux就是操作系统,我们一般使用的是Windows操作系统。嗯……接下来就涉及计算机组成原理了。所以操作系统也是软件!这个软件大家可以理解为管理设备驱动和硬件的软件,我们平时用的软件是在操作系统上使用的。这里有一些区别:Windows中:\是路径分隔符Linux:/是路径分隔符OK了,结束,这只是基础,下节更精彩!
2024-05-07 19:24:06 931
原创 贪吃蛇(C语言超详细版)
如果你通过该文章完成了一次,其实你会发现,也没那么难,无非就是根据游戏的进程一步一步去实现每个最微小的步骤。其实所有的难题,都是聚沙成塔的,只要你一步一个脚印去实现,真的没有难题!API帮助了我们实现了贪吃蛇,我们可能不知道其内部的实现,但是我们只需要去学会使用它即可。如果你可以独立完成一次,那么恭喜你,你已经彻底学会了C语言,接下来就可以往更高的地点出发。
2024-03-23 21:04:25 4070 8
原创 预处理详解
define 机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏(macro)。宏参数和#define 定义中可以出现其他#define 定义的符号。但是对于宏,不能出现递归。条件编译:在编译一个程序的时候我们如果要将一条语句编译或放弃是很方便的,因为可以使用条件编译指令。比如我们调试代码,删除可惜,保留又碍事,所以我们可以选择性的编译。虽然编译和执行我们一般并不会关注,但是预先善其事必先利其器,我们身为程序员,应当有一种庖丁解牛的精神,对于哪怕在细小的细节也应该关注。
2024-03-13 20:33:19 775 1
原创 Java反射、枚举类和lambda表达式
看枚举之前,我们先来看自定义枚举类,此时我们自己定义一个枚举类。/** 1.构造器私有化* 2.本类内部创建一组对象 四个 春夏秋冬* 3.对外暴露对象 -> 通过为对象前加 public final static 修饰符* 4.可以提供 get 方法 但是只读不写(没有set方法)* *///自定义枚举类//特点//对外暴露public static final TestEnum SPRING = new TestEnum("春天","花香");
2024-03-10 12:10:11 827 6
原创 Map和Set(搜索二叉树和哈希表)
TreeSet和TreeMap背后都是一颗搜索树(红黑树)。如果要学好他们,我们要先学二叉搜索树,之后学习AVL树(高度平衡的二叉搜索树),最后学习红黑树。接下来我们就来完成一个搜索二叉树,首先我们先定一个搜索二叉树的类。//创建根节点里面定义一个内部类,就是树的节点。因为是二叉树,索引要记录节点的左边和右边,构造方法只需要给定一个val。为了方便我们找到其他节点,我们定义一个根节点。多加练习就可以记住,这里有一个技巧:HashSet底层是HashMap;TreeSet底层是TreeMap。
2024-03-09 18:18:35 963
原创 顺序表、链表(ArrayList、LinkedList)
本篇我们来讲解数据结构中的顺序表和顺序表,因为Java有集合框架,所以可以直接使用类创建对象来完成。我们定义head成员,是为了保存头结点。//节点使用内部类来写//定义一个链表的成员的头结点。
2024-02-10 17:28:56 1935
原创 Java图书管理系统
因为Java是面向对象的语言,所以相对C语言,实现一个图书管理系统是相对容易的,这一篇我们来讲解图书管理系统(当然是简易版的)。先介绍一下这个图书管理系统,它有两个身份,一个图书管理员,一个普通用户。每一个对应的操作权限不一样。并且这个系统有借阅和归还功能。我们想好整体框架以后,再去完善细节就会比较轻松。
2024-01-19 11:35:20 580 5
原创 Java中的异常处理
应该都听说过Java中的异常处理,其实不止Java中有异常处理,我们学过的其他语言中的报错是不是也是异常呢?对,是,但是Java中的异常为什么要学习?因为它可以当程序真的报错而崩溃时,我们进行异常处理可以使其跳过,程序还能正常的往下执行。像C语言,如果程序报错就会崩溃,而Java可以得知这个异常,可以继续正常运行。异常就是异于常态,和正常情况不一样,有错误。在Java中,阻止当前方法或作用域的情况,称之为异常。Java中所有异常类都继承于Throwable类,对,你没听错,这些异常都是类。
2024-01-15 21:36:28 1041
原创 String引用类型
我们这一篇来讲解String相关的概念,及其一些相关函数。注意字符串是不可修改的,我们每次执行上面的操作,只要对字符串进行修改,就会产生新的字符串。
2024-01-15 18:37:54 924
原创 Java中的内部类
我们都已经学过了,但是没有讲过什么是内部类,那么这一篇我们就来填上最后一个缺口——内部类。当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整结构又只为外部事物提供服务,那么这个内部完整结构最好使用内部类。在Java中,可以将一个类定义在另一个类或者一个方法的内部,前者称为内部类,后者称为外部类。内部类也是封装的一种体现。
2024-01-15 17:13:25 863
原创 多态、抽象类和接口(深拷贝和浅拷贝)
多态:多种形态,去完成某个行为,不同对象去完成时产生不同形态。有一种看人说话的感觉,都是说同一种事物,但是根据不同的对象说话的方式不同。要想实现多态,需要满足几个条件:1.继承关系上:向上转型2.子类和父类有同名 覆盖/重写 方法3.通过父类对象的引用,去调用这个重写的方法。我们我们来逐一介绍。System.out.println(this.name + "正在吃饭");System.out.println(this.name + "汪汪叫");a.eat();
2024-01-11 21:39:11 920
原创 继承和final关键字
当我们创建两个类时,发现这两个类都有公共特征时,就可以利用继承,减少相同的代码量。我们定义两个类,一个狗类一个猫类,他们都有相同的几个属性:姓名、年龄。一个相同的方法:吃饭。class Dog{System.out.println(this.name + "正在吃饭");System.out.println(this.name + "正在汪汪叫");class Cat{System.out.println(this.name + "正在吃饭");
2024-01-03 17:34:38 775 1
原创 封装(static的性质、代码块)
我们知道面向对象语言有三大特征:封装,继承,多态。在此之前我们也知道了什么是类和对象(一定要有这些基础知识,详情请看Java中的类和方法(方法重载)-CSDN博客这一篇我们就来详细讲解封装和继承。为了更好的管理类,我们提出了一个包的概念,把多个类收集在一组,称为软件包。包其实就是文件夹下的一个类。在同一个工程中,允许存在相同名称的类,只要处在不同的包中即可。我们平时输入要用到Scanner这个类,用到这个类需要导包。//不导包只能这样指定使用//导入包以后就可以这样使用。
2024-01-03 10:51:30 1019
原创 Java中的类和方法(方法重载、this关键字)
什么叫面向对象?什么叫面向过程?(如果你只学过C语言,那么说你之前写的代码都是面向过程)其实这两个概念也不用一直去纠结。比如把大象装进冰箱。面向对象就会1.打开冰箱2.塞进大象3.关上冰箱。而面对过程1.如何打开冰箱?2.如何塞进大象?3.如何关上冰箱?面向对象需要:找对象 创建对象 使用对象。这其实是一个抽象的概念,类似于C语言中的结构体。我们一般使用的都是基本数据类型(char、double、int之类的),但是定义一本书该怎么办?和C语言一样,需要自定义一种类型,之后一个具体的类叫做对象。
2024-01-02 18:01:27 1097
原创 Java中的数据类型和操作符
和C语言比较像,分为基础类型和引用类型(类似于指针)。基础类型分为8大类,引用类型我们这里先知道String。因为Java的int无论在那个机器上都是4个字节,就增强了可移植性。为了方便,没有像C语言一样分为long和long long类型,只有一个long类型,占据8个字节。IDEA编译器会识别很多错误,但是有些是难以发现的,类似于Bug。为了区分int和long类型,一般建议long类型变量的初始值后加L(大写易区分)。和C语言一样,整数计算时出现小数,需要在其中以数字上加上.0。
2024-01-02 14:14:58 852
原创 初始Java
从今天开始,我们就进入Java的学习了,前期有很多语法是和C语言相同的,所以有些细节肯能会跳过(希望各位有一门语言基础,最好是C)。
2023-12-30 21:19:49 392
原创 typedef的使用
因为好不容易认识了C语言中所有的关键字(就是类型吧,像啥int,char,long,int arr[],char*等等等),但是有时候却出现了Student a,TreeTypeData node之类的语句,这些语句一看就令人头皮发麻。我们可以观察a、b的大小来验证,他们都是同一种类型,是整形,所以占4字节空间。好吧,不得不说,这种总是给出部分代码的文章,确实很容易让新手退坑,其实在C语言中,也确实没有这种类型,但是此时我们的主角就登场了,他们都是通过使用typedef来重命名的。算了,就这样吧,不学了。
2023-12-15 12:06:23 412
原创 柔性数组(结构体成员)
柔性数组?可能你从未听说,但是确实有这个概念。听名字,好像就是柔软的数组,是不是意味着这个数组大小是可以变化的?但是不是只有C99才有可变数组吗?动态内存函数-CSDN博客。
2023-12-15 10:29:55 1279
原创 数据的存储(类型的提升)
其实每个类型都会有这样的一个循环,我们学习内存的存储是为了从底层理解,这样即使出现很奇怪的数字也可以理解是什么原因。double类型的精度比float精度更高。因为对于小数,有时候会一直乘二进制拼凑成其十进制的小数,可能会超出M的极限,所以会近似取值,就是对于有些小数无法精确保存。所以两个浮点数比较大小时,直接使用 == 可能存在问题。
2023-12-10 13:21:04 870 3
原创 联合体和枚举
枚举和define很像。顾名思义就是列举。因为现实生活中,总有一些东西是可以被一一列举的,比如星期,月份等。//枚举的关键字enum Sex//这里列举枚举enum Sex的可能取值MALE,FEMALE,SECRETint main()return 0;{}中的内容是枚举类型中可能取的值,也叫枚举常量。打印出出的是常数,这些可能取值都是有值的,默认从0开始,依次增加1,当然定义的时候也可以赋初值。每个类型都有存在的意义,我们以后在生活中总会使用到它,之后我们会逐渐顿悟其具体的功能。
2023-12-10 00:13:32 668 2
原创 结构体和位段
C语言中,我们之前使用的都是C语言中内置的类型,比如整形(int)、字符型(char)、单精度浮点型(float)等。但是我们知道,我们现实世界中,还有很多其他类型。比如书,水杯,人等各种类型。
2023-12-09 22:02:49 968 4
原创 指针(进阶)
当指针接收的是字符串时,打印这个指针所指向的字符串不需要解引用;可是当要打印首个元素时,需要解引用。在这个例子中,字符串“abcdef”,储存在连续的无名储存区中,通过语句ch=“abcdef”,将无名储存区的首地址赋给指针ch,也就是说:指针变量ch指向无名储存区域的首地址,而不是把无名储存区域的内容保存在ch中,因为它们各自所占空间大小不同(指针变量大小是固定的)。道理同上,打印字符串不需要解引用,打印首元素需要解引用。此时我们想修改其中一个字符。
2023-12-06 22:30:47 768 2
原创 数组指针(指针数组)
整形数组里面存放的元素是整形,同理,指针数组里面存放的是指针。先看一下指针数组:指针数组本质上是数组,数组里面存放的是指针,所以要加*,由于数组名是首元素地址,所以相当于指针。这是指针类型的数组,数组里面存档的是指针。我们来用指针数组模拟二维数组:实际上并非是二维数组,因为每个指针不是连续存放的。
2023-12-06 19:27:52 326 1
原创 进制的转换
同理,16进制就是0~15,但是,一个16进制位只能用一位来表示,所以将10用A来表示。还有一种算法:第一位乘2之后加上第二位,之后再乘2,之后加上第三位,再之后乘2,直到加上最后一位便不再乘2。而一个字节正好是8个比特位,我们能用两个16进制位表示,因为内存地址为了方便表示就用16进制位来表示的。因为8进制每一位是0~7,各自写成2进制,最多有3个2进制位。我们要学好编程语言,就一定要知道进制的转换,16进制也是必须知道的。所以二进制转8进制从右往左每3个2进制位换算成一个8进制位。
2023-12-04 23:10:01 385 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人