string str="123"+4;结果是"1234"还是1234
时间: 2023-07-06 21:41:38 浏览: 58
在Java中,当一个字符串和一个非字符串类型进行连接时,Java会将非字符串类型自动转换为字符串类型,并将它们连接起来,得到一个新的字符串。
因此,对于以下代码:
```java
String str = "123" + 4;
```
Java会将4这个数字转换为字符串类型,然后将它和字符串"123"连接起来,得到一个新的字符串"1234"。因此,变量str的值是"1234",而不是1234。
需要注意的是,当进行字符串连接时,Java会创建一个新的字符串对象,因此在进行大量字符串连接时,建议使用StringBuilder或StringBuffer来提高性能。例如:
```java
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {
sb.append("hello").append(i);
}
String result = sb.toString();
```
上面的代码中,我们使用了StringBuilder来进行大量字符串连接,避免了频繁创建字符串对象的开销。最后使用toString()方法将StringBuilder对象转换为字符串。
相关问题
string str="123"+4;
在Java中,字符串连接可以使用加号(+)进行操作。当一个字符串和一个非字符串类型(例如数字)进行连接时,Java会自动将非字符串类型转换为字符串类型,并将它们连接起来。
因此,对于以下代码:
```java
String str = "123" + 4;
```
Java会将4这个数字转换为字符串类型,然后将它和字符串"123"连接起来,最终得到一个新的字符串"1234",赋值给变量str。
需要注意的是,当进行字符串连接时,Java会创建一个新的字符串对象,因此在进行大量字符串连接时,建议使用StringBuilder或StringBuffer来提高性能。例如:
```java
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {
sb.append("hello").append(i);
}
String result = sb.toString();
```
上面的代码中,我们使用了StringBuilder来进行大量字符串连接,避免了频繁创建字符串对象的开销。最后使用toString()方法将StringBuilder对象转换为字符串。
public static void main(String[] args) { // TODO Auto-generated method stub String str = "data1"; String str2 = new String("data2"); StringBuffer buffer = new StringBuffer("data3"); System.out.println("!!!!!1 str:=" + str + " str2:=" + str2 + " buffer:=" + buffer.toString()); dealData(str, str2, buffer); System.out.println("!!!!!2 str:=" + str + " str2:=" + str2 + " buffer:=" + buffer.toString()); } private static void dealData(String str, String str2, StringBuffer buffer) { str += "123"; str2 += "123"; buffer.append("123"); System.out.println("nerborn: str:=" + str + " str2:=" + str2 + " buffer:=" + buffer.toString()); }的输出结果是什么
运行这段代码,输出结果为:
```
!!!!!1 str:=data1 str2:=data2 buffer:=data3
nerborn: str:=data1123 str2:=data2123 buffer:=data3123
!!!!!2 str:=data1 str2:=data2 buffer:=data3123
```
在main方法中,我们定义了一个字符串变量str、一个字符串对象str2和一个StringBuffer对象buffer,并将它们分别初始化为"data1"、"data2"和"data3"。然后我们调用了dealData方法,传入这三个参数,并在dealData方法中对它们进行了修改。
在dealData方法中,我们对str和str2进行了字符串拼接操作,这实际上是创建了新的字符串对象,所以在dealData方法中修改的只是局部变量的值,不会影响到main方法中的原始变量。而对于StringBuffer对象buffer,我们使用了append方法将"123"添加到了原始字符串后面,这会直接修改原始对象的值,因此在main方法中打印buffer对象时,会发现它的值已经变成了"data3123"。