依赖和继承的区别
- 依赖:工程间的 “功能复用”,通过调用其他工程的 public 代码实现,是业务逻辑层面的关联。
- 继承(父工程):工程间的 “配置复用”,通过统一管理配置简化维护,是构建层面的关联。
- 并且使用版本锁定(dependencyManagement)中父工程只是为了声明版本,做版本的控制,只有当子工程显示引入,才会下载道maven仓库
- 子工程模块更像是项目内部的 "业务组件",负责封装特定业务逻辑;而第三方依赖(比如lomnok)更像是 "基础设施工具",提供通用能力。两者相辅相成:
1.lomdbk使用
lombdk导入,项目工程要导入,运行的模块也要导入
2.treemap与treeset在进行比较输出时
如果比较的对象相同,会默认把靠后的给输出时给删除
原因:在存储map是用对象作为键,则当利用键的某个属性进行比对时,默认会把这个属性作为键,所以碰到相同的,会进行覆盖
3.整型的hashcod就是整型值?,hashcode是如何生成的
integer的对应对象的值就是其哈希值
| 类类型 | 哈希码生成依据 | 示例 | 
| 默认(Object) | 内存地址 | 
 | 
| 包装类 | 内部值 | 
 | 
| String | 字符序列 | 
 | 
| 自定义类 | 关键属性组合(重写) | 
 | 
4.treeSet排序字符串怎么排序
大概率看首字母,可自定义compare进行比较
5.treeset排序的原理
调用compardto或者自定义实现,默认是升序
6.重写形参类型是父类,重写也必须是父类,类型要保持一致??
方法重写(Override)要求子类方法的参数类型必须与父类方法完全一致
如果参数类型发生变化,会被认为是重载
7.使用流之后要有一个对象去承接,不然等于没有操作;使用流操作完返回的是流,要进行转换
示例:
Stream.concat(play2.stream(), l1.stream().skip(l1.size() - 3))
错误1:仅仅对对流进行了合并,结果仍然是流,未用对应属性对象去承接,
在输出打印play2无任何变化
Stream.concat(play2.stream(), l1.stream().skip(l1.size() - 3)).toList();
错误2:使用tolist方法转化为list集合,但是结果依旧没有保存
正确写法:
play2 = Stream.concat(play2.stream(), l1.stream().skip(l1.size() - 3)).toList();
更改了play2
8.
- TreeSet:构造时必须指定排序规则(- Comparator或- Comparable),插入元素时自动排序。
- 默认必须调用
- ArrayList:构造时无需排序规则,需要排序时手动调用- sort()方法。
9.sort(null)含义
- 自然排序:使用元素类型(这里是 Student)实现的Comparable接口中的compareTo方法进行排序。
- 要求:元素类型必须实现 Comparable接口,否则会抛出ClassCastException。
l1.sort(null); // 等价于 l1.sort(Comparator.naturalOrder()); 
         10.int转化为string 使用(string)int不行,解决方案
原因:int 是基本类型,与 String 没有继承关系,因此无法直接强制转换
Java 的强制类型转换仅适用于具有继承关系的引用类型,不能用于基本类型和引用类型之间。
public class Main { public static void main(String[] args) { // 方法1 int num1 = (int)(Math.random()*33+1); String str1 = String.valueOf(num1); System.out.println("方法1: " + str1); // 方法2 int num2 = (int)(Math.random()*33+1); String str2 = Integer.toString(num2); System.out.println("方法2: " + str2); // 方法3 String str3 = "" + (int)(Math.random()*33+1); System.out.println("方法3: " + str3); // 方法4 String str4 = String.format("%d", (int)(Math.random()*33+1)); System.out.println("方法4: " + str4); } }
| 方法 | 优点 | 缺点 | 
| 
 | 简洁明了,不易出错 | 无明显缺点 | 
| 
 | 明确是类型转换操作 | 需要先声明整数变量 | 
| 字符串连接 | 无需调用方法,代码更简短 | 性能略低,可能降低可读性 | 
| 
 | 可进行复杂格式化 | 用于简单转换时显得冗余 | 
