-
string a=new string("abc");
string b="abc";
你可以给上面的**。 第一个是假的,第二个是真的。
关键在于“==”和等于方法,一个比较对象,另一个比较引用。
“比较是参考,上面的 a 和 b 在哪里(它们在堆栈中的位置),它们在堆栈中的位置肯定不同,所以返回值是假的
但是“equals”方法不同,它比较对象,也就是 A 和 B 指向的堆的内容,你应该知道它们在堆中的值是一样的,都是“abc”,所以他的返回值是真的。
我刚才看了最后一个人,他说一个存放在堆里,一个存放在堆里,这个问题我不太清楚,刚才我也问过一个人,他说是在堆里。 我也这么认为,只有那 8 个原始类型存储在堆栈中,而字符串没有,所以我认为它存储在堆中。
-
首先,第一句话 string a=new string("abc");首先,查看内存中称为字符串池的位置,看看它是否存在"abc"如果没有,请在字符串池中创建一个,然后将其复制到堆中,并将 A 指向堆中的字符串"abc"。
string b="abc";像这样,如果你直接用 = 符号初始化它,你只需去字符串池看看是否有"abc"如果有 b,则此字符串指向字符串池"abc"。现在,您已将其保存在字符串池中"abc",所以 b 指向"abc""abc",刚才有人说 a 指向堆中的那个"abc"所以; 输出为 false,(== 比较地址,A 和 B 指向不同的地址)。
你明白吗?
-
string a=new string("abc");创建 2 个对象。
string b="abc";创建对象。
abc"在内存中字符串池中,并且您的新字符串 ("abc") 是一个对象,不存储在字符串池中。
另一个例子。 string c = new string("ab");
string d = new string("ab");
/false
-
使用字符串 b="abc";将 abc 存储在堆栈中,string a=new string("abc");
ABC存放在堆中。
-
创建了两个不同的对象,并且“==”不相等。
-
首先是静态的,然后是成员,然后是构造。
-
如果你不需要它,它根本不会被加载到内存中,并且无法初始化!
我想不出任何在编译器中初始化的语言......
田震:你好! 盯着大便看。
上网二十年,看到这么有礼貌的网友,真是太好了。 但如果它不是电子邮件,它就不需要那么正式。 此外,上网时要特别注意保护隐私,不要泄露个人信息(尤其是姓名、**、身份证号码),一般使用昵称。 >>>More
1)如果已经安装了搜狗输入法卸载试试,也可以卸载试购法并尝试重装(这些软件是罪魁祸首,从与返回者的交流中就知道了。 如昌裂开烧果子这里不是问题,见以下方法)。 >>>More
监视器黑屏解决方法:
1.如果长时间不使用显示器,显示器会自动进入睡眠节能模式,屏幕会变黑。 >>>More