- 博客(18)
- 收藏
- 关注
原创 告别循环!用Stream优雅处理集合
也叫Stream流,是jdk8新增的一套API(java.util.stream.*)可以用于操作集合或者数组的数据。优势:Stream流大量的结合了Lambda语法的风格编程,提供了一种更加强大,更加简单的方式操作或者数组中的数据,代码更简洁,可读性更好。
2025-04-08 22:56:38
850
原创 Java时间处理入门:从老Date到新LocalDate
用Instant.now()获取当前时间对象,再用时间对象调用atZone方法,因为atZone方法不是静态的,我们只能用对象去调用。原子钟:利用铯原子的震动的频率计算出来的时间,作为世界标准时间(UTC)9,192,631,720次 = 1秒。3.获取到时间的毫秒值之后,我们可以对时间进行计算操作,接着在此基础上我们要加上一年的毫秒值即可。Calendar代表了系统当前时间的日历对象,可以单独修改,获取时间中的年月日。会把时间中的纪元,年,月,日,时,分,秒,星期,等等的都放在一个数组当中。
2025-03-05 10:28:10
608
原创 认识接口和适配器设计模式
接口用关键字interface来定义public interface 接口名{}接口不能实例化(创建对象)接口和类之间是实现关系,通过implements关键字表示public class 类名 implements 接口名 {}作用:解决接口升级问题public default 返回值类型 方法名(参数列表){}范例接口默认方法的注意事项默认方法不是抽象方法,所以不强制被重写,但是如果被重写,重写的时候去掉default关键字。代码演示创建一个接口,包含默认方法和抽象方法。
2025-01-26 19:52:59
998
原创 抽象类和抽象方法
public abstact 返回值类型 方法名(参数列表);public abstract class 类名{}抽象类和抽象方法的注意事项抽象类不能实例化(创建对象)我们先创建了一个抽象类进行测试,在测试类中尝试创建对象,明显代码显示错误。//创建对象抽象类中不一定有抽象方法,有抽象方法一定是抽象类我们将抽象方法注释掉,在抽象类中创建了一个有方法体的方法,代码没报错。但是如果把抽象类中的abstract删掉,那么抽象方法在里面就会报错。可以构造方法//可以构造方法。
2025-01-23 22:52:57
598
原创 Java升级版的学生成长管理系统
为了学生管理系统书写一个登录、注册、忘记密码的功能。只有用户登录成功之后,才能进入学生管理系统中进行增删查改操作。
2025-01-22 23:31:59
985
原创 自定义类型:结构体
4.如果嵌套了结构体的情况,嵌套的结构体成员对齐到自己的成员中最大对齐数的整数倍处,结构体的整数大小就是所有最大对齐数(含嵌套结构体中成员的对齐数)的整数倍。显然不行,因为Node是对前面的结构体类型的重命名产生的,但是在匿名结构体内部提前使用Node类型来创建成员变量,这是不行的。要想知道S4结构体总大小,就要先知道S3里面的最大对齐8,S3对齐数到8的倍数就行,S3的总体(结构)为16,输出:32。3.对齐数总大小为最大对齐数(结构体中每个变量成员都有一个对齐数,所有对齐数中最大的)的整数倍。
2024-12-16 23:31:20
830
原创 C语言内存函数
函数memcpy从source的位置开始向后复制num个字节的数据到destination指定的内存位置。这个函数在遇到‘\0’的时候并不会停下来如果source和destination有任何的重叠,复制的结果都是未定义的。多余的空间用0补齐重叠的情况:arr+2:首元素地址向后移动两个元素,3,4会被1,2覆盖对于重叠的内存,交给memmove来处理memcpy函数的模拟实现memcpy函数拷贝结束之后,会返回目标空间的起始地址void*的指针什么地址都能接收。
2024-05-20 10:29:19
344
原创 认识指针(4)
如果你把函数的指针(地址)作为参数传给另一个函数,当这个指针被用来调用其 所指向的函数,被调用的函数就是回调函数。回调函数不是由该函数的实现方直接调用,而是在待定的事件或条件发生时有另外的一方调用的,用于对该事件或条件进行响应。两个整数可以直接使用(大于号,小于号)比较,但是两个字符串,结构体不能使用(大于号,小于号)比较。对于重复的代码,虽然执行计算的逻辑是有区别的,但是输入输出是多余的,可以进行适当的简化。void*base:指针,指向的是待排序的数组的第一个元素。库函数:底层使用的是快速排序的方式。
2024-05-15 15:08:31
229
原创 认识指针(2)
使用指针访问数组的内容时,我们使用了以下方法访问我们使用&arr[0]的方式拿到了数组第一个元素的地址,但要知道数组名本来就是地址,而且是数组首元素的地址。结论:数组名就是数组首元素地址但是有两个例外除此之外,任何地方使用数组名都表示首元素的地址。三个打印的结果一模一样,arr和&arr有什么区别呢这里我们发现&arr[0]和&arr[0]+1相差4个字节,arr和arr+1相差4个字节,是因为&arr[0]和arr都是首元素的地址,+1就是跳过一个元素。
2024-04-04 16:11:16
680
1
原创 认识指针(1)
要知道计算机CPU在处理数据的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中,就相当于一个仓库。可以把内存划分为一个个的内存单元,每个内存单元的大小取1个字节(1byte=8bit)。每个内存单元也都有编号(相当于门牌号),便于CPU的快速访问。生活中我们把门牌号叫地址,在计算机中我们把内存单元的编号也叫地址。C语言中给地址起的名字叫:指针。
2024-03-20 15:50:36
943
1
原创 认识与运用数组
数组是一组相同类型元素的集合;(1)数组中存在的是一个或者多个数据,但是数组元素个数不能为0.(2)数组中存在的多个数据,类型是相同的。数据分为一维数组和多维数组,多维数组一般比较多见的是二维数组。
2024-01-08 19:31:57
352
原创 初步认识函数
函数定义的一般格式数据类型 函数名(形式参数说明)//数据类型指函数返回值的类型,不能是数组,也不能是函数,可以是:char、int、long、float、指针或结构。函数的类型可以省略,默认为int类型。{ 说明语句执行语句形式参数说明的两种形式://函数定义的头部,进行形式参数说明{......}或://函数定义的头部,给出形式参数列表int x , y;//单独进行参数说明{......}用{}括起来的部分是函数的主体,称为函数体。
2024-01-06 14:25:04
950
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人