问题描述
- java中String str1…的区别,详细见内容
-
String str1,str2;
str1 = "we are friends";
str2 = "we are friends";
和
String str1 = "we are friends";
String str2 = "we are friends";
在内存上的区别是什么?
是否有区别?
解决方案
没有区别,他们指向同一个对象
解决方案二:
就最后用途和使用上来说,没什么太大区别。
从内存上说,前者先定义String str1,str2; 这里str1和str2,系统默认为null,没有指向任何内存空间,接着具体赋值str1 = "we are friends"; str2 = "we are friends"; 这时候就分配了所占用的内存空间。
后者则是为直接为str1,str2这2个对象分配了内存空间。
当然,我也是学习不久,可能回答有误…… = =
解决方案三:
只有一个区别,声明和定义的区别
声明是告诉编译器有这么个变量,但并不实现。定义就是实现这个变量,真正在内存(堆或栈中)为此变量分配空间
但是它们最后都是放在字符串常量区
而且String str1
str1 = "hello"
String str2= "hello"
str1和str2它们 都会指向同一个内存地址
解决方案四:
在内存上没有区别,只不过赋值顺序的问题
解决方案五:
内存上没区别,java和C语言不一样,不区分声明与定义
解决方案六:
没有区别,深了讲他们指向的都是一个字符串。
时间: 2024-10-24 17:22:15