自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JavaSE:多态

先看一段代码:为何这个代码不报错。就是因为使用了向上转型:父类引用引用子类对象向上转型一共有三种方式可以实现向上转型:1.直接赋值,2.通过传参,3.返回值1.直接赋值:2.通过传参:通过func1的参数进行向上转型。3.返回值:通过func2的返回值来向上转型。从上面代码中可以看出,第二个对象animal进行了向上转型,向上转型之后,animal就不能调用子类bark的方法。对于进行了向上转型的对象,通过父类的引用,调用子类特有的方法,是无法直接调用的,这里只能调用父类自己有的。

2024-06-28 11:46:56 571 1

原创 C语言:生命周期和作用域,static和extern

通常定义在程序开头,所有函数都能访问,一个全局变量在程序中只有一个拷贝,所以当一个函数修改了这个变量的值之后,其他函数都能看到这个新值。4.extern用来声明外部符号的: 如果一个全局符号在A文件中定义,想要在B文件中使用,就可以用extern进行声明,然后使用。,在这个代码块中,使用这个变量时会优先使用局部变量的值,不是全局变量的值。:通常在函数内部声明,只能在某个函数或者代码块中访问的变量。:普通的局部变量储存在栈区的,但是经过static修饰过的局部变量储存在静态区,在经过它的作用域。

2024-06-21 15:14:19 377

原创 JavaSE:继承

在谈继承之前,我们先观察下面这个代码:那能不能将这些重复的部分进行抽取呢?面向对象的思想中提出了继承的概念,专门用来进行共性抽取,实现代码复用。

2024-06-20 00:47:37 808

原创 JavaSE:类与对象(2)

使用包的主要原因是确保类名唯一性,假如有两个程序员不约而同的建立了Employee类,只要将这些类放置在不同的包中,就不会产生冲突,为了保证包名的唯一性,要用一个因特网域名(这显然是唯一的)以逆序的方式作为包名,然后对于不同的工程使用不同的子包。比如:域名horstmann.com。如果逆序来写,就得到包名com.horstmann。然后追加一个工程名,如com.horstmann.corejava。

2024-06-13 19:04:28 718

原创 JavaSE:类与对象(1)

面向对象的程序设计关注的是对象,但在现实生活中,对象都是实体,比如洗衣机这个对象,而计算机并不认识,需要开发人员告诉计算机什么是洗衣机。洗衣机:牌子:樱花,洗涤功率:540w,脱水功率:250w,洗涤容量:15kg,脱水容量:6.8kg,洗涤模式:半自动。等等上面对洗衣机进行了简单的描述,该过程将一个对象(实体)进行抽象(对一个复杂事物重新描述),然后程序员用编程语言告诉计算机,比如用java语言。//创建类filed //字段(属性)成员变量,定义在方法外面,类的里面。

2024-05-20 16:57:14 790 1

原创 C语言:浮点数在内存中的储存

这里给一段代码:假设浮点数和整数在内存中储存方式相同: 由此得出:整数的储存和浮点数在内存中的储存方式不一样。 上面这个代码,n1和*pfloat1,n2和pfloat2里面都是储存的是同一个数,为什么打印出来的结果大不一样。要理解这个结=结果,我们要知道浮点数在内存中的储存方式。根据国际标准IEEE(电气电子工程师学会)754,任意一个二进制浮点数V可以表示成以下形式:对于M和E的特别规定:一个整数n=9,其在内存中储存方式是:一个浮点数9.0,在内存中储存方式为:(-1)^0 * 1.001

2024-04-14 16:05:17 1675 2

原创 C语言:部分操作符讲解

此章节是在32位cpu地址线下讲解。的二进制表示方法一共有三种,即原码,反码,补码。的三种二进制表示方法又和两部分,最高位的1被当做符号位,其余的都是数值位。如果最高位是1,就代表这个数是负数,如果是0,则这个为是正数。上面这个二进制翻译为十进制是-1。的最高位是数值位。原码:就是将整数按照正负数的形式翻译成二进制得到的就是原码。1.正整数的原码,反码,补码都是相同的。2.负整数的原码,反码,补码不相同。负整数的反码:将原码的符号位不变其余数值位按位取反(0变为1,1变为0)。

2024-04-10 12:52:22 820 1

原创 C语言:内存动态管理函数

calloc函数也是用来动态内存分配的,calloc原型:size_t。

2024-03-31 20:08:22 627 1

原创 C语言:自定义类型:结构体

我们声明了结构体,就创建了一种新的结构体,然后我们就可以用这种结构体类型定义新的变量,定义结构体变量的方式有三种:第一种:(先声明结构体类型,再定义结构体变量)//学生名字int age;//学生年龄float high;//学生身高//在结构体声明之后定义变量这里的s1和s2都是结构体变量,且它们都是struct student类型。(在声明结构体的同时定义结构体变量)int age;float high;}s1,s2;//声明结构体类型的同时定义变量第三种:(匿名结构体类型)

2024-03-22 15:08:39 708 2

原创 C语言:指针(3)

字符串数组arr含有五个字符串,每个字符串长度要小于20,这里要包括结尾的\0,即使包括\0,像China,Japan加上\0,字符串长度也为6,但内存为它们分配一个20字节固定大小,有点浪费空间。为了节省空间,可以使用,其每个元素都是指针类型的,在数组里存放字符指针,根据指针找到对应的字符串。运行结果:这里很容易混淆,让人误以为是把“Chinese”放到test[0]里面了,但是char*类型是存不下这么大的字符串,所以本质是把字符串Chinese首字符的地址。

2024-03-14 14:51:11 785

原创 C语言:指针(2)

在定义一维数组时,系统会向内存中为其分配一段储存空间,数组名就是数组在内存中的首地址。若再定义一个指针变量,并将数组的首地址传给指针变量,则该指针就指向了这个一维数组。这里的a是数组名,也是数组的首地址因为a[0]的地址就是数组首地址,所以上面两条赋值语句,操作效果完全相同。输入你要打印在屏幕上的五个数(1)p=&a[0]表示将数组首地址赋给指针(2)p+i和a+i都表示a[i]的地址,即&a。(3)*(p+i)和*(a+i)都表示a[i]的值。a+i表示数组元素地址。

2024-03-14 14:48:48 341

原创 C语言:指针(1)

如有错误,请大家提出来,你的支持就是我的动力。,这种类型指针可以用来接受任何类型地址,但也有局限性,void*不能直接进行指针的+-整数和解引用的运算。const放在*右边,修饰的是指针变量本身,保证了指针变量的内容不能修改,但是指针指向的的内容,可以通。的意思就是通过p中存放的地址,找到所指向的对象,其实*p就是a变量,所以*p=0,就相当于a=0。概念:野指针是指针指向的位置不可知的(随机的,不正确的,没有明确限制的)const如果在*的左边,修饰的是指针所指向的内容,保证指针指向的内容。

2024-03-14 14:44:49 1572

原创 C语言:qsort函数以及qsort函数模拟实现

1.了解qsortqsort函数是C语言中的一个标准库函数,它的头文件#include<stdlib.h>,用来对于数组内的元素进行快速排列。它可以对任意数据类型进行排列,但前提是要提供相应的比较函数即可。qsort原形是:void qsort(void *base,size_t nitems,size_t size,int (*compar)(const void*,const void*))1.base用来指向数组的指针,因为我们不知道比较的数据类型,所以用通用的数据类型voi

2024-03-09 18:55:41 769 1

原创 C语言:汉诺塔递归的代码讲解

不管A柱有多少个盘子,想要让A上所有盘子移到C柱上,必须要让最大的圆盘先移到C柱上,只有将大盘子上面所有的小盘子移到B上,才有机会将最下面的大盘子移到C柱上。三个参数代表的柱子都在不断的改变,所以函数printf里面的从A到C进行输出,其实真正打印出来的各种移动情况都有,这里很容易混淆,导致看不懂代码。时,已经不能再细分了,经过步骤2,将最后一个圆盘直接移到C(终点),也就完成移动了。将n-1个盘子从A柱通过C柱,移到B柱,因此就需要调用自身。函数目的是将n个盘子从A柱通过B柱,移到C柱。

2024-01-29 00:00:00 1688 2

原创 C语言:用函数和数组实践-扫雷游戏

这里我们肯定有办法解决,比如:雷和非雷的信息不要使用数字,使用某些字符就行,这样就避免冲突了,但是这样做棋盘上有雷和非雷的信息,还有排查出的雷的个数信息,就比较混杂,不够方便。这样就互不干扰了,把雷布置到mine数组,在mine数组中排查雷,排查出的数据存放在show数组,并且打印show数组的信息给后期排查参考。如果排查(8,6)这个位置的雷,此时我们会发现一个问题,如果(8,6)这个位置不是雷,统计周围雷的数量时(如上图所示)会发现下面一部分已经越界了,为了解决这个问题,我们可以将二维数组扩大一圈。

2024-01-21 12:00:46 430 2

空空如也

空空如也

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

TA关注的人

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