关于java和c#里面变量存储问题!!!

来源:百度知道 编辑:UC知道 时间:2024/07/07 07:36:19
同样的内容为什么执行出来的结果不一样,Java和c#里面的变量是怎么存储的?
请详细的解释一下下面的这个例子。。。。
JAVA版本的:
class test {
public static void main(String[] args) {
String s1 = "a";
String s2 = "b";
String s3 = "ab";
String s4 = "ab";
s1 += s2;
s2 = s3;
System.out.println("s3==s4" + (s3 == s4));
System.out.println("s2==s3" + (s2 == s3));
System.out.println("s1==s3" + (s1 == s3));
System.out.println("s1==s4" + (s1 == s4));
}
}
c#版本的:
static void Main(string[] args)
{
string s1 = "a";
string s2 = "b";
string s3 = "ab";
string s4 = "ab";
s1 += s2;
s2 = s3;
Console.WriteLine("s3==s4" + (s3 == s4));
Console.WriteLine("s2==s3" + (s2

Java String的 == 是比较的指针。
C# String的 == 等同于Java的 s1 == s2 || s1.equals (s2) 。

另外,Java会在编译时将字符串常量只分配一个空间,这样,string s3 = "ab";
string s4 = "ab";
之后,s3 == s4 的结果是true。

判断String值相等用equals:
System.out.println("s3==s4" + (s3.equals(s4)));
System.out.println("s2==s3" + (s2.equals(s3)));
System.out.println("s1==s3" + (s1.equals(s3)));
System.out.println("s1==s4" + (s1.equals(s4)));

java的+=是新建一个新的对象实现字符串连接
而C#的string的+=是类似于java中StringBuffer的append方法实现的