- 博客(42)
- 收藏
- 关注
原创 【数据结构】--lambda表达式
如果我们在某个接口上声明了 @FunctionalInterface 注解,那么编译器就会按照函数式接口的定义来要求该接口,这样如果有两个抽象方法,程序编译就会报错的。所以,从某种意义上来说,只要你保证你的接口中只。在上述代码当中的变量a就是,捕获的变量。这个变量要么是被final修饰,如果不是被final修饰的 要保证在使用之前,没有修改。有一个抽象方法,你可以不加这个注解。7. 在非并行计算中,很多计算未必有传统的 for 性能要高。如果一个接口只有一个抽象方法,那么该接口就是一个函数式接口。
2022-08-25 09:42:02
496
原创 【数据结构】---反射
Java文件被编译后,生成了.class文件,JVM此时就要去解读.class文件 ,被编译后的Java文件.class也被JVM解析为一个对象,这个对象就是java.lang.Class .这样当程序在运行时,每个java文件就最终变成了Class类对象的一个实例。在反射之前,我们需要做的第一步就是先拿到当前需要反射的类的Class对象,然后通过Class对象的核心方法,达到反射的目的,即:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;第三种,使用类对象的 getClass() 方法。
2022-08-24 16:29:35
152
原创 【数据结构】---哈希表
该方式即为哈希(散列)方法,哈希方法中使用的转换函数称为哈希(散列)函数,构造出来的结构称为哈希表(Hash Table)(或者称散列表),用该方法进行搜索不必进行多次关键码的比较,因此搜索的速度比较快。开散列法又叫链地址法(开链法),首先对关键码集合用散列函数计算散列地址,具有相同地址的关键码归于同一子集合,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头结点存储在哈希表中。已知哈希表中已有的关键字个数是不可变的,那我们能调整的就只有哈希表中的数组的大小。哈希函数应该比较简单。
2022-08-24 14:31:55
203
原创 【数据结构】---二叉搜索树&&map&&set
可能在查找时进行一些插入和删除的操作,即动态查找,那上述两种方式就不太适合了,Map和Set是一种适合动态查找的集合容器。Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。而Map中存储的就是key-value的键值对,Set中只存储了Key。
2022-08-24 11:06:30
202
原创 【数据结构】---优先级队列和堆
(2). PriorityQueue中放置的元素必须要能够比较大小,不能插入无法比较大小的对象,否则会抛出。(3). 如果容量超过MAX_ARRAY_SIZE,按照MAX_ARRAY_SIZE来进行扩容;(6). PriorityQueue默认情况下是小堆—即每次获取到的元素都是最小的元素;(2). 如果容量大于等于64,是按照oldCapacity的1.5倍方式扩容的;(1). 如果容量小于64时,是按照oldCapacity的2倍方式扩容的;(1). 使用时必须导入PriorityQueue所在的包;
2022-08-22 15:11:49
268
原创 【数据结构】--二叉树
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。
2022-08-19 17:25:15
67
原创 【多线程】初步了解(1)
线程是操作系统中的概念,操作系统内核实现了线程这样的机制, 并且对用户层提供了一些 API 供用户使用;Java 标准库中 Thread 类可以视为是对操作系统提供的 API 进行了进一步的抽象和封装;
2022-08-17 09:10:07
73
原创 【数据结构入门】----ArrayList与顺序表
ArrayList实现了Serializable接口,表明ArrayList是支持序列化的。ArrayList实现了RandomAccess接口,表明ArrayList支持随机访问。ArrayList实现了Cloneable接口,表明ArrayList是可以clone的。ArrayList底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表。......
2022-08-10 22:38:21
120
原创 图书管理系统
一、首先,定义Book类,类里面定义与书相关的属性public class Book { private String name;//书名 private String author;//作者 private int price;//价格 private String type;//类型 private boolean isBorrowed;//是否被接触 //自动生成的构造方法 public Book(String name, String au
2022-05-23 11:17:07
131
原创 Comparable接口和Comparator接口
1、Comparable接口class Student implements Comparable<Student>{ public String name; public int age; public double score;//2 实现Comparable接口的方法 @Override public int compareTo(Student o) { return this.age-o.age;//从小到大;这里this 和o
2022-05-21 15:04:45
163
原创 关于深克隆和浅克隆
1、实现了深拷贝class Person implements Cloneable{ public int age=10; //1 generate-OM @Override protected Object clone() throws CloneNotSupportedException { return super.clone(); } @Override public String toString() {
2022-05-21 14:52:45
62
原创 实现多个接口
实现多个接口abstract class Animal{ public String name; public int age; public Animal(String name, int age) { this.name = name; this.age = age; } public abstract void eat();}//1 实现多个接口,把这个接口也给狗和鸟了interface IRunning{ vo
2022-05-21 14:50:01
621
原创 关于抽象类
1、抽象方法:使用abstract修饰的方法2、 包含抽象方法的类,必须设计为抽象类,使用abstract修饰这个类3、 抽象类不可以实例化,但是可以被继承4、抽象方法要被重写,否则代码不能通过编译5、如果一个抽象类A继承另外一个抽象类B,那么此时这个抽象类A可以不重写B当中的抽象方法6、抽象类必须被继承,并且继承后子类要重写父类中的抽象方法,否则子类也是抽象类,必须要用abstract修饰7、抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量abstract class Shap
2022-05-21 14:46:02
1182
原创 关于继承当中多态的初步认识
1、方法要是不想被重写,就加上final:public final void eat此时就是一个密封方法,被final修饰的类就不能被继承了,2、发生多态的前提:向上转型,发生动态绑定;3、组合class Animal{ private String name; private int age;//1 自动生成的构造方法 public Animal(String name, int age) { this.name = name; this.
2022-05-21 14:35:57
95
原创 类的继承中关于同名成员的访问
1、tostring方法打印类的成员属性class Person{ public String name; public int age; //1 自己生成的 @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age +
2022-05-21 11:53:25
97
原创 关于各种内部类的初步认识(包括静态内部类、局部内部类、匿名内部类)
1、拿到静态内部类的对象2、不能在静态内部类当中直接访问外部类当中非静态的成员,只能直接访问外部类当中静态的成员,如果非要访问非静态的,需要创建一个外部类的对象class OuterClass{ //外部类的成员属性 public int data1=1; private int data2=2; public static int data3=3; //静态内部类 static class InnerClass{ public int
2022-05-21 11:47:21
101
原创 初识类和对象的初步认识
1、实例化一个对象2、通过.给属性赋值3、成员变量的引用class WashMachine{ public String brand; public double weight; public void WashClothes(){ System.out.println("洗衣功能"); } public void dryClothes(){ System.out.println("脱水功能"); }}//2 狗类
2022-05-21 11:31:24
56
原创 类和对象:外部类和内部类的理解
下方知识点提要:1、实例内部类当中,不能定义静态的成员变量,非要定义的话:要被final修饰;2、实例内部类当中,不能定义静态的成员方法;3、怎么拿到实例内部类;4、拿到实例内部类的普通方法;5、实力内部类可以访问内部和外部所有的成员;class OuterClass{ public int data1=1; public int data2=2; public static int data3=3; class InnerClass{ publi
2022-05-12 10:10:43
142
原创 类和对象:关于代码块的理解
1、静态代码块;2、实例化代码块:类的里面,成员方法的外面;3、构造方法;程序执行顺序:静态代码块–实例化代码块–构造方法;class Student{ public String name; public int age; public double score; public static String classes="105java"; public Student(String name, int age, double score) {
2022-05-12 09:55:36
103
原创 类和对象中:static修饰成员方法
一般数据类中的成员都设置为private,而成员方法设置为public,设置之后,怎么在类外访问呢? 下方代码知识点提要: 1、静态成员变量的设置以及引用; 2、静态成员方法的设置以及引用; 3、静态成员常量; 4、静态的方法当中,不能直接访问非静态的数据,非要访问的话,就要创建对象; 5、静态成员不依赖对象;class Student{ //普通成员变量 public String name; public ...
2022-05-12 09:50:56
168
原创 初识类和对象
java是一门纯面向对象的语言,在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象直接的交互完成一件事情。用面向对象的思想来设计程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。 下面通过一段代码将相应的知识点串起来,加深理解,我认为直接在代码中理解相应的知识点更加容易和深刻。 下面代码涉及主要知识点提要: 1、怎么创建一个类; 2、怎么实例化一个对象; 3、怎么引用成员变量,怎么引用成员方法; 4、通过.给成员属性...
2022-05-12 09:34:47
53
原创 strlen的模拟实现:计数器方法、指针-指针方法、递归方法
#define _CRT_SECURE_NO_WARNINGS 1//1、计数器模拟实现strlen#include<stdio.h>int my_strlen(char* p){ int count = 0; while (*p != '\0') { count++; p++; } return count;}int main(){ char arr[] = "abcdef"; int sz=my_strlen(arr); printf("%d", s
2022-03-30 20:36:11
93
原创 浅理解一下回调函数
回调函数回调函数是一个通过函数的指针调用的函数,如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就算这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件发生时由另外一方调用的,用于对该事件或者条件进行响应。下面我们举例深入理解一下:举例1:举例2:实现加减乘除举例3:利用qsort函数改造的冒泡排序:...
2022-03-17 11:37:12
761
原创 浅理解一下回调函数
回调函数回调函数就是一个通过函数指针调用的函数。如果把函数的指针(地址)作为参数传递给另外一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或者条件发生时由另外一方调用的,用于对该事件或条件进行响应。下面通过例子理解一下:举例1:举例2:实现加减乘除举例3:通过qsort库函数改造冒泡排序...
2022-03-17 11:27:03
57
原创 sizeof与strlen用法区别
写在前面数组名通常来说是数组首元素的地址,但是有两个例外:1、sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小;2、&数组名,这里的数组名表示整个数组,取出的是整个数组的地址;关于sizeofsizeof是一个操作符,计算的是对象所占的内存的大小,单位是字节,不在乎内存中存放的是什么,只在乎内存大小。举例:1、整型数组2、字符型数组3、字符串4、二维数组关于strlenstrlen求的是’\0’之前的字节数,遇到‘\0’才会停止,放到strlen
2022-03-17 11:12:21
72
原创 每日技巧
关于static和externstatic 修饰局部变量的时候,局部变量就变成静态局部变量,出了局部范围,不会销毁,下一次进入函数依然存在。其实是因为:static 修饰的局部变量是存储在静态区的,实际改变的是变量的存储位置。本来一个变量是放在栈区,被static修饰放在静态区,从而导致出了作用域依然存在,生命周期并没有结束。extern关键字是用来声明外部符号的,一个工程里面有两个源文件时,一个想用另外一个的全局变量,需要声明。 一个全局变量本来是具有外部链接属性的,但是被static修饰以后,外
2022-03-13 21:16:00
74
原创 每日技巧
打印图形打印图形或者矩阵,都看作二维数组的样式,找各个元素的分布规律(列与行之间有对应的关系,一般这个关系是动态的),依次打印。把自然语言转化为机器语言通过逻辑表达式,把自然语言转化为计算机可以识别的机器语言(代码)。充分利用 && 、 || 、!、 == 、 !=。...
2022-03-11 21:35:58
83
原创 【无标题】
打印图形打印图形或者矩阵,都看作二维数组的样式,找各个元素的分布规律(列与行之间有对应的关系,一般这个关系是动态的),依次打印。把自然语言转化为机器语言通过逻辑表达式,把自然语言转化为计算机可以识别的机器语言(代码)。充分利用 && 、 || 、!、 == 、 !=。...
2022-03-11 21:32:58
92
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人