class equaland{ public static void main(String[] args)
{
String a="mystring";
String b="mystring";
String c=new String(a);
if(a==b)
System.out.println(a+"=="+b+" is right!");
else
System.out.println(a+"=="+b+" is wrong!");
if(a.equals(b))
System.out.println(a+" equal to "+b+" is right!");
else
System.out.println(a+" equal to "+b+" is wrong!");
if(a==c)
System.out.println(a+"=="+c+" is right!");
else
System.out.println(a+"=="+c+" is wrong!");
if(a.equals(c))
System.out.println(a+" equal to "+c+" is right!");
else
System.out.println(a+" equal to "+c+" is wrong!");
}
}
结果像下面这样,有人能解释下为什么吗?
{
String a="mystring";
String b="mystring";
String c=new String(a);
if(a==b)
System.out.println(a+"=="+b+" is right!");
else
System.out.println(a+"=="+b+" is wrong!");
if(a.equals(b))
System.out.println(a+" equal to "+b+" is right!");
else
System.out.println(a+" equal to "+b+" is wrong!");
if(a==c)
System.out.println(a+"=="+c+" is right!");
else
System.out.println(a+"=="+c+" is wrong!");
if(a.equals(c))
System.out.println(a+" equal to "+c+" is right!");
else
System.out.println(a+" equal to "+c+" is wrong!");
}
}
结果像下面这样,有人能解释下为什么吗?
JVM在加载你的类的时候,就已经把你的类中会使用到的所有常量String,即"aa"这样写在代码中的String值保存到常量池中也就是你在代码中见到的所有"..."字符串其实在类加载的时候已经全部初始化好了,在String a = "..."时,实际上是将a指向了常量池中的那个String对象
所以
String a= "mystring ";
String b= "mystring ";
都指向了常量池中的同一个对象,所以a == bString c=new String(a); //这地方是生成新的String对象,与常量池中对象虽然内容一样,但是不是同一个对象,所以 a != c
至于equals则是计算对象中包含的内容的,所以a.equals(b) 也a.equals(c)
---
错误!在java.lang.Object中equals与==是等价的,但是在java.lang.String已经覆盖了这个方法,已经变成了比较内容
equals 比较的是对象的内容
就这么简单
java里的常量池
以后可以这样用了:"abc".intern() == "abc" 结果为true,呵呵
就是在csdn上也有很多的讲解,楼主可以自己动手搜索一下
我说下你那个==判断的结果吧--->>浅相等(引用是否相等||内存地址是否一样)
要明白这个实现要明白java的String对象的创建原理
在java执行的过程中会维护一个String池(pool),对于一些已经存在的String对象,
第二次创建新对象的时候是会共享的这个字符串的,目的就是为了节约内存,这就是你
第一个和第二个String对象比较的时候相等的原因
你用new在创建一个对象的时候是从新分配的内存,和以前是否存在该String字符窜无关
!!!以上两点也就是这两种创建String的区别
-----------
我学java时间也不长啊
不知道表达清楚没哦
不过在林信良的那本<<java jdk5.0学习笔记>>中讲的倒是很明白
LZ多看书吧。。
动手很重要,看书更重要。
那么基本数据类型存储又怎么样呢??
我会很努力的看书的,努力地学英语,努力的写程序
谢谢大家的支持