public class Test
{
public static void main(String args[])
{
String s0 = "Hello";
String s1 = "Hello";
String s2 = "Hell" + "o";
String s3 = new String("Hello");
String s4 = new String("Hello");
System.out.println(s0 == s1); //true
System.out.println(s1 == s2); //true
System.out.println(s1 == s3); //false
System.out.println(s3 == s4); //false
System.out.println(s3.equals(s4)); //true
System.out.println(s2.equals(s3)); //true
}
}刚学java,有些东西不理解。上面这段代码中s3、s4不是指向同一个对象,s0、s1为什么指向同一个对象?String s0 = "Hello";和String s3 = new String("Hello");不是等同的吗?请教大家这两句有什么区别。
{
public static void main(String args[])
{
String s0 = "Hello";
String s1 = "Hello";
String s2 = "Hell" + "o";
String s3 = new String("Hello");
String s4 = new String("Hello");
System.out.println(s0 == s1); //true
System.out.println(s1 == s2); //true
System.out.println(s1 == s3); //false
System.out.println(s3 == s4); //false
System.out.println(s3.equals(s4)); //true
System.out.println(s2.equals(s3)); //true
}
}刚学java,有些东西不理解。上面这段代码中s3、s4不是指向同一个对象,s0、s1为什么指向同一个对象?String s0 = "Hello";和String s3 = new String("Hello");不是等同的吗?请教大家这两句有什么区别。
解决方案 »
- JFreeChart画折线图零刻度在Y轴的中间的问题
- 关于 java 文件查找的问题!
- url中的‘;’代表什么啊?
- 從零開始學JAVA要做哪些事
- 如何随机调用7个不同的方法
- 怎么样判断JTextArea失去了焦点??
- SimpleDateFormate使用
- 哪位可以把下面的程序给我改成JApplet的(在线等候,改成功后,我把我的分全给)
- 如何在win2000下设置tomcat 的tomcat_home这个变量??
- 我在网上下在了一个java写的编辑器的程序,扩展名是jar,可以用winzip打开,请问如何能够运行呢?
- 关于货币型值的计算问题!
- 新手请教:怎样才能在DOS任何目录下都能编译运行.java源程序
你试下System.out.println(s1.equals("s3"));结果应该是true.
String s2 = "Hell" + "o";
s1,s2赋值的时候会先找内存池,看有没有相同的字符串
String s3 = new String("Hello");
String s4 = new String("Hello");
s3,s4在内存中地址不一样,s3 == s4是地址的比较
String s0 = "Hello" 是先在缓冲池中找有没有相同的数据有的话直接把s0映射到这个地址
String s3 = new String("Hello"); 是在内存中申请一个新的区域 把"Hello"写进去,再把这个区域的首地址给s3,所以地址会不同