Java
String、StringBuilder和StringBuffer是Java中用于处理字符串的类,它们之间有以下区别:
-
不可变性:String类是不可变的,即创建后不能被修改。每次对String进行操作时,都会创建一个新的String对象。而StringBuilder和StringBuffer是可变的,可以进行修改和拼接操作.
-
线程安全性:String是线程安全的,因为它是不可变的,多个线程可以同时访问同一个String对象。而StringBuilder是非线程安全的,如果多个线程同时访问同一个StringBuilder对象并进行修改,可能会导致数据不一致的问题。StringBuffer是线程安全的,可以被多个线程同时访问和修改,因为它实现了同步机制。
-
效率:由于String是不可变的,每次对String进行修改或拼接操作时都会创建一个新的String对象,这样会造成额外的内存开销。而StringBuilder和StringBuffer是可变的,对其进行修改或拼接操作时不会创建新的对象,因此效率较高。StringBuilder相较于StringBuffer在单线程环境下效率更高,但是在多线程环境下,由于StringBuilder非线程安全,建议使用StringBuffer。
综上所述,如果字符串频繁修改,并且在多线程环境下使用,应该使用StringBuffer;如果是单线程环境下进行字符串操作,且涉及大量的修改或拼接操作,建议使用StringBuilder;而如果字符串不需要修改,直接使用String即可,因为它具有较好的性能和线程安全性。
Java项目依赖范围 scope
compile(参与打包,默认):主程序和测试程序都有可以用
test(不参与打包):测试程序可以用
provided(不参与打包,只在编译期间生效):主程序和测试程序都可以用
打包插件
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <artifactSet> <excludes> <exclude>com.google.code.findbugs:jsr305</exclude> <exclude>org.slf4j:*</exclude> <exclude>log4j:*</exclude> </excludes> </artifactSet> <filters> <filter> <!-- Do not copy the signatures in the META-INF folder. Otherwise, this might cause SecurityExceptions when using the JAR. --> <artifact>*:*</artifact> <excludes> <exclude>META-INF/*.SF</exclude> <exclude>META-INF/*.DSA</exclude> <exclude>META-INF/*.RSA</exclude> </excludes> </filter> </filters> <transformers combine.children="append"> <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build>
idea快捷键
try-catch
ctrl + alt + t
本文来自博客园,作者:ringring00,转载请注明原文链接:https://www.cnblogs.com/ringring00/p/17629650.html

浙公网安备 33010602011771号