Java

String、StringBuilder和StringBuffer是Java中用于处理字符串的类,它们之间有以下区别:

  1. 不可变性:String类是不可变的,即创建后不能被修改。每次对String进行操作时,都会创建一个新的String对象。而StringBuilder和StringBuffer是可变的,可以进行修改和拼接操作.

  2. 线程安全性:String是线程安全的,因为它是不可变的,多个线程可以同时访问同一个String对象。而StringBuilder是非线程安全的,如果多个线程同时访问同一个StringBuilder对象并进行修改,可能会导致数据不一致的问题。StringBuffer是线程安全的,可以被多个线程同时访问和修改,因为它实现了同步机制。

  3. 效率:由于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

posted @ 2023-08-14 20:17  ringring00  阅读(6)  评论(0)    收藏  举报