java中String s1 ="Welcome".concat(" to Java world!");等价于 Strings1="Welcome"+" to Java world!"吗?
时间: 2023-12-05 09:31:35 浏览: 33
不完全等价。
在Java中,字符串是不可变的,这意味着一旦创建了一个字符串对象,就不能修改它的值。当你使用`+`运算符连接两个字符串时,实际上会创建一个新的字符串对象。所以,`String s1="Welcome"+" to Java world!"`实际上创建了两个字符串对象,分别是"Welcome"和" to Java world!",然后将它们连接起来,赋值给`s1`变量。
而`String s1="Welcome".concat(" to Java world!");`使用了`concat`方法连接两个字符串,它会在原始的字符串对象`s1`的末尾添加一个新的字符串对象" to Java world!",创建了一个新的字符串对象,因此只创建了一个字符串对象。
另外,使用`+`运算符连接多个字符串时,会创建更多的中间字符串对象,这会对性能产生负面影响。因此,当你需要连接多个字符串时,最好使用`StringBuilder`或`StringBuffer`类来构建字符串。
相关问题
package five; public class five { public static void main( String [] args ) { String s1 = " 1234567890QWERTYUIOPqwertyuiop~!@#~$%^^&~我们永远热爱和平 "; System.out.println("s1 = " + s1); int s1_len = s1.length(); System.out.println( s1_len ); String s2 = s1.substring( 10, 20 ); System.out.println( s2 ); char c = s1.charAt( 10 ); System.out.println( c ); String s3 = s1.concat("世界!"); System.out.println( s3 ); String s4 = s1; boolean b1 = s3 == s4; System.out.println( b1 ); int index = s1.indexOf('3'); System.out.println( index ); s1 = s1.trim(); s1.toUpperCase(); System.out.println( s1 ); char cc[] = s1.toCharArray(); System.out.println( java.util.Arrays.toString(cc) ); } }
这是一个Java类,名为five。它包含一个main方法,用于测试一些字符串操作。在main方法中,定义了一个字符串s1,然后对其进行了多种操作:
1. 使用length()方法获取字符串长度,并将其输出。
2. 使用substring()方法从s1中获取子字符串,然后将其输出。
3. 使用charAt()方法获取s1中指定位置的字符,并将其输出。
4. 使用concat()方法将字符串s1和"世界!"拼接起来,并将拼接后的结果输出。
5. 将s1赋值给s4,然后使用"=="运算符比较s3和s4是否相等,并将比较结果输出。
6. 使用indexOf()方法查找字符'3'在s1中第一次出现的位置,并将其输出。
7. 使用trim()方法去除s1首尾的空格,然后使用toUpperCase()方法将其转换为大写字母,并将结果输出。
8. 使用toCharArray()方法将s1转换为字符数组,然后使用Arrays.toString()方法将字符数组转换为字符串,并将其输出。
需要注意的是,虽然使用了trim()和toUpperCase()方法,但是s1本身并没有被修改,因为在Java中String是不可变的。
String filePath = FilenameUtils.concat("D:\\MOCKDATA", FilenameUtils.concat(projectName, fileName));
这段代码使用了 Apache Commons IO 库中的 `FilenameUtils.concat()` 方法来拼接文件路径。它会使用操作系统特定的路径分隔符来连接路径,并且会处理一些特殊情况,比如如果路径已经以分隔符结尾,会自动去除重复的分隔符。这个方法的参数 `projectName` 和 `fileName` 分别表示要拼接的目录名和文件名,而 `D:\MOCKDATA` 则是拼接的根目录。最终得到的 `filePath` 就是完整的文件路径。注意,如果 `D:\MOCKDATA` 目录不存在,程序会抛出 `java.io.IOException` 异常。