因为,在Java中,字符串被实现为类型的引用Object
.Also,String constants
被实现为对象.
例如:
System.out.println("This is a String");
在上面的语句中,"This is a String"也实现为Object类型.这意味着它将被分配与内存相同的内存
String str = "This is a String";
我的问题是如果我+
在这样的同一System.out
语句中使用运算符打印多个字符串怎么办 ,
System.out.println("This is a String" + "This is another String");
现在,我基本上问的是,我想知道,如果"This is a String"
和"This is another String"
会占用不同的存储空间或相同的内存空间?
另外,在println()
语句中的字符串之间添加变量是否会产生影响?
例如:
int i = 10; System.out.println("This is a String" + i + "This is another String");
与本网站上的字符串相关的其他问题并没有具体回答我的问题.请点亮这个问题^ _ ^
任何帮助,将不胜感激
什么我基本上问的是,我想知道,如果
"This is a String"
和"This is another String"
会占用不同的存储空间或相同的内存空间?
这里既有String
为常数,所以在编译的时候,他们将串联和单 String
"This is a StringThis is another String"
将在字符串池中创建.
System.out.println("这是一个字符串"+ i +"这是另一个字符串");
实际输出String
是在运行时确定的,因此它将String
在堆区域中创建不同的s.
来自Java Documentation:String
Java语言为字符串连接运算符(
+
)提供特殊支持,并为其他对象转换为字符串.字符串连接是通过StringBuilder
(或StringBuffer
)类及其append方法实现的.字符串转换是通过toString
Object定义的方法实现的,并由Java中的所有类继承.