0%

一、String
1
2
3
4
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {

}

String 是不可变的对象, 因此在每次对 String 类型进行改变的时候,都会生成一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,性能就会降低。

二、StringBuilder和StringBuffer

和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

StringBuilder和StringBuffer的区别在于,StringBuilder不是线程安全的。因此 StringBuilder 相较于 StringBuffer 有速度优势,多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

三、三者的继承结构

子模块中的pom使用parent,可以直接获得父pom中的依赖,不用自己写

但如果父pom中使用了dependencyManagement,那么子模块需要引入自己需要的依赖,只是不用写版本号,版本号由父pom控制

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

参考:

https://www.cnblogs.com/youzhibing/p/5427130.html

https://www.liaoxuefeng.com/wiki/1252599548343744/1309301243117601

C 运算符的优先级和结合性

符号 操作类型 结合性
[ ] ( ) . -> ++ --(后缀) 表达式 从左到右
sizeof & * + - ~ ! ++ --(前缀) 一元 从右到左
typecasts 一元 从右到左
* / % 乘法 从左到右
+ - 加法 从左到右
<< >> 按位移动 从左到右
< > <= >= 关系 从左到右
== != 相等 从左到右
& 按位“与” 从左到右
^ 按位“异或” 从左到右
| 按位“与或” 从左到右
&& 逻辑“与” 从左到右
|| 逻辑“或” 从左到右
? : 条件表达式 从右到左
= *= /= %= += -= <<= >>= &= ^= |= 简单和复合赋值 从右到左
, 顺序计算 从左到右

1 运算符按优先级的降序顺序列出。 如果多个运算符出现在同一行或一个组中,则它们具有相同的优先级。

2 所有简单的和复合的赋值运算符都有相同的优先级。

参考:

https://docs.microsoft.com/zh-cn/cpp/c-language/precedence-and-order-of-evaluation?view=msvc-170