diff --git a/imgh/image-20250401161443811.png b/imgh/image-20250401161443811.png new file mode 100644 index 0000000..802036e Binary files /dev/null and b/imgh/image-20250401161443811.png differ diff --git a/imgh/image-20250401162210232.png b/imgh/image-20250401162210232.png new file mode 100644 index 0000000..9dfd7de Binary files /dev/null and b/imgh/image-20250401162210232.png differ diff --git a/imgh/image-20250403163929123.png b/imgh/image-20250403163929123.png new file mode 100644 index 0000000..2918cbb Binary files /dev/null and b/imgh/image-20250403163929123.png differ diff --git a/imgh/image-20250403164058289.png b/imgh/image-20250403164058289.png new file mode 100644 index 0000000..45c50c8 Binary files /dev/null and b/imgh/image-20250403164058289.png differ diff --git a/imgh/image-20250403170839818.png b/imgh/image-20250403170839818.png new file mode 100644 index 0000000..44bcbf2 Binary files /dev/null and b/imgh/image-20250403170839818.png differ diff --git a/imgh/image-20250403171301091.png b/imgh/image-20250403171301091.png new file mode 100644 index 0000000..7b9095a Binary files /dev/null and b/imgh/image-20250403171301091.png differ diff --git a/imgh/image-20250403173623260.png b/imgh/image-20250403173623260.png new file mode 100644 index 0000000..6f41c1c Binary files /dev/null and b/imgh/image-20250403173623260.png differ diff --git a/imgh/image-20250404170313844.png b/imgh/image-20250404170313844.png new file mode 100644 index 0000000..af5f497 Binary files /dev/null and b/imgh/image-20250404170313844.png differ diff --git a/imgh/image-20250406171252031.png b/imgh/image-20250406171252031.png new file mode 100644 index 0000000..43e6dc3 Binary files /dev/null and b/imgh/image-20250406171252031.png differ diff --git a/imgh/image-20250408162910313.png b/imgh/image-20250408162910313.png new file mode 100644 index 0000000..62feffe Binary files /dev/null and b/imgh/image-20250408162910313.png differ diff --git a/常用api.md b/常用api.md deleted file mode 100644 index bb55615..0000000 --- a/常用api.md +++ /dev/null @@ -1,46 +0,0 @@ -# 常用API - -## Object类 - -### toString方法 - -`public String toString()`默认是返回当前对象再堆内存中的地址信息:类的全类名@十六进制哈希值 - -#### 用途: - -在开发过程中直接输出对象看到对象地址是毫无意义的,更多时候是希望看到对象中的内容数据而不是假地址信息 - -所以toString()方法存在的意义就是为了被子类重写,以便返回对象的内容信息,而不是地址信息。 - -### equals方法 - -`public boolean equals(Object 0)`默认是比较当前对象与另一对象地址值是否相同,返回boolean类型 - -#### 意义: - -父类equals方法存在的意义就是为了子类重写,以便于子类自己定制比较规则 - -**IDEA中重写的equals方法:** - -```java -public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - Student student = (Student) o; - return age == student.age && Objects.equals(name, student.name); - } -``` - -### **Objects类中的equals方法** - -避免了空指针异常问题 - -```java -public static boolean equals(Object a, Object b) { - return (a == b) || (a != null && a.equals(b)); -} -``` - -双&&或者双||,都是执行左边若为false或者true则右侧不执行 - -![image-20250401155734366](https://gitee.com/icecat2233/picture/raw/master/20250401155745359.png) \ No newline at end of file diff --git a/常用api以及算法.md b/常用api以及算法.md new file mode 100644 index 0000000..95b63e7 --- /dev/null +++ b/常用api以及算法.md @@ -0,0 +1,198 @@ +# 常用API + +## Object类 + +### toString方法 + +`public String toString()`默认是返回当前对象再堆内存中的地址信息:类的全类名@十六进制哈希值 + +#### 用途: + +在开发过程中直接输出对象看到对象地址是毫无意义的,更多时候是希望看到对象中的内容数据而不是假地址信息 + +所以toString()方法存在的意义就是为了被子类重写,以便返回对象的内容信息,而不是地址信息。 + +### equals方法 + +`public boolean equals(Object 0)`默认是比较当前对象与另一对象地址值是否相同,返回boolean类型 + +#### 意义: + +父类equals方法存在的意义就是为了子类重写,以便于子类自己定制比较规则 + +**IDEA中重写的equals方法:** + +```java +public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Student student = (Student) o; + return age == student.age && Objects.equals(name, student.name); + } +``` + +### **Objects类中的equals方法** + +避免了空指针异常问题 + +```java +public static boolean equals(Object a, Object b) { + return (a == b) || (a != null && a.equals(b)); +} +``` + +双&&或者双||,都是执行左边若为false或者true则右侧不执行 + +![image-20250401155734366](https://gitee.com/icecat2233/picture/raw/master/20250401155745359.png) + +## Math类:工具类 + +方法都为静态方法,通过类名.的形式调用 + +image-20250401161443811 + +## System类 + +image-20250401162210232 + +注意:返回时间为现在时间减去1970年1月1日0时的毫秒值,为何?1970年1月1日是c语言的生日 + +## BigDecimal类 + +### 创建对象传入数据: + +![image-20250403164058289](https://gitee.com/icecat2233/picture/raw/master/20250403164059630.png) + +仅推荐用后两个,解决小数运算不精确的问题 + +### 常用成员方法 + +![image-20250403163929123](https://gitee.com/icecat2233/picture/raw/master/20250403163938062.png) + +## 包装类 + +用处:将基本数据类型包装成类,变成引用数据类型 + +**只做Integer类的讲述,其余可以类比Integer来进行** + +![image-20250403170839818](imgh/image-20250403170839818.png) + +注意:从JDK5版本开始,出现了自动拆装箱技术 + +自动装箱:基本数据类型的变量可以直接赋值给包装类型(引用数据类型)的变量; + +自动拆箱:包装类型(引用数据类型)的变量转化为基本数据类型的变量; + +总结:基本数据类型和对应的包装类,可以直接运算,不用转换了 + +### 常用方法: + +![image-20250403171301091](https://gitee.com/icecat2233/picture/raw/master/20250403171304123.png) + +### 面试题 + +image-20250403173623260 + +## Arrays类 + +数组工具类,方法都为静态方法 + + +![image-20250404170313844](https://gitee.com/icecat2233/picture/raw/master/20250404170322675.png) + +1. 其中binarySearch()方法,给予的数组必须是排好序的。因为使用了二分法 +2. sort()方法中,对数组进行了默认升序排序,要进行其他顺序排序,需学习**红黑树** + + + +## 基本算法: + +### 1:冒泡排序 + +```java +/** + * 冒泡排序 相邻两数据作比较,前者大于后者则做交换,往后进行 + */ +public class Bubbling { + public static void main(String[] args) { + int[] arr = {3,2,1,6,4,7,10,1}; + //外循环控制比较的轮数 + for (int i = 0; i < arr.length - 1; i++) { + //比较的次数 + //-1是避免索引越界 + //-i 是对内存做优化 不用每次都比较到最后减少循环次数 + for (int j = 0; j < arr.length - 1 - i; j++) { + if(arr[j] > arr[j+1]){ + int temp; + temp = arr[j]; + arr[j] = arr[j+1]; + arr[j+1] = temp; + } + } + } + System.out.println(Arrays.toString(arr)); + } +} +``` + +### 2:选择排序 + +让数组中第一个数据依次和后面的数据作比较,和数据小的做交换,然后再第二个,第三个,最后完成从小到大的排序 + +```Java +public class SelectSort { + //选择排序,让数组中第一个数据依次和后面的数据作比较,和数据小的做交换,然后再第二个,第三个,最后完成从小到大的排序 + public static void main(String[] args) { + int[] arr = {22,11,33,33,44,55,14}; + for (int i = 0; i < arr.length - 1; i++) { + //外循环,控制第几个数据和后面数据做比较 + for (int j = i+1; j < arr.length; j++) { + //内循环:控制第一个数据和后数据依次比较 + if (arr[i] > arr[j]){ + int temp = arr[i]; + arr[i] = arr[j]; + arr[j] = temp; + } + } + } + System.out.println(Arrays.toString(arr)); + } +} +``` + +### 3:二分查找 + +image-20250406171252031 + +**使用场景:查找有序数组中对应元素的索引可以用二分查找。** + +定义三个元素,最大索引,最小索引,中间索引,将中间索引指向元素和目标数据比较,中间索引元素大则右边以及中间索引元素本身则不用在比较,将最大索引缩小为 mid -1,与之相反,若小于目标元素,则本身以及左边元素不用在比较,将最小索引为mid +1,一直循环直到mid = 目标元素索引,或min > max;返回对应mid即可 + +```Java +public class BinarySearch { + public static void main(String[] args) { + int[] arr = {11,22,33,44,55,66,77}; + int num = binSearch(arr,22); + System.out.println(num); + } + + private static int binSearch(int[] arr, int i) { + int max = arr.length-1; + int min = 0; + int mid; + while (min <= max){ + mid =(max + min) / 2; + if (arr[mid] < i){ + min = mid +1; + }else if(arr[mid] > i){ + max = mid -1; + } else { + return mid; + } + } + return -1; + } +} + +``` + diff --git a/正则表达式.md b/正则表达式.md new file mode 100644 index 0000000..c46f951 --- /dev/null +++ b/正则表达式.md @@ -0,0 +1,55 @@ +# 正则表达式,较为难 + +本质来说就是一个字符串,用来指定一些规则校验字符串 + +1. **字符类(默认匹配一个字符):** + + [] 表示单个字符 + + [abc] 只能为abc. + + [^abc] 只能为abc之外的任意字符 + + [a-zA-Z]a到z,A到Z(包括范围)也可以有数字 + + [a-d[m-p]]a到d之间,或者m-p之间都可以,并集 + + [a-z&&[def]] a-z和def之间的交集 + + [a-z&&[\^bc]] \需要去掉 表示a-z除了bc + +2. **预定义字符类(默认匹配一个字符):** **注意:使用时需在前面加转义字符\\**不能只有一个反斜杠 + + . 任意字符 + + \d 只能是数字 + + \D 非数字 [\^0-9] + + \w 英文数字下划线 + + \W 除了英文数字下划线 一个非单词字符 + + \s 一个空白字符 + + \S 一个非空白字符 + +3. **量词(配合匹配多个字符)** + + X? X出现一次或者0次 + + X* X出现0次或者多次(任意次数) + + X+ 一次或多次 + + X{n} 正好n次 + + X{n, } 至少n次 + + X{n,m} 至少n次,不超过m次 + +实际干活时候,面向复制编程。直接百度搜就行 + +## 使用正则做爬取: + +image-20250408162910313 \ No newline at end of file