只要是学习过Java的人,都一定对String类再熟悉不过了。可是你真的理解了String吗?
下面让我们来做个试验,看你能否全部答对如下的问题(面试时也许你会遇到下面的问题哟,大家要好好回答啊。):
package com.test;
public class StringEx
{
public static void main(String[] args)
{
String s1 = "abc";
String s2 = new String(s1);
if (s1 == s2)
System.out.println("s1 == s2");
if (s1.equals(s2))
System.out.println("s1.equals(s2)");
String s3 = "abc";
if (s1 == s3)
System.out.println("s1 == s3");
if (s1.equals(s3))
System.out.println("s1.equals(s3)");
String s4 = new String("abc");
if (s1 == s4)
System.out.println("s1 == s4");
if (s1.equals(s4))
System.out.println("s1.equals(s4)");
if (s2 == s4)
System.out.println("s2 == s4");
if (s2.equals(s4))
System.out.println("s2.equals(s4)");
if (s1 == "abc")
System.out.println("s1 == \"abc\"");
if (s2 == "abc")
System.out.println("s2 == \"abc\"");
if (s4 == "abc")
System.out.println("s4 == \"abc\"");
}
}
现在请大家自己试着写出程序的运行结果,不要看后面的答案哟...
(答题中...)
好了,答题结束。相信大家现在自己都有了心中的答案。
现在让我们来看下程序实践的运行结果:
s1.equals(s2)
s1 == s3
s1.equals(s3)
s1.equals(s4)
s2.equals(s4)
s1 == "abc"
哈哈,答案公布了,你全都答对了吗?如果你全都答对了,恭喜你,你对String类的理解已经不再是新手了(String的深一步理解,我以后会再写文章来讨论。)。
其实,如果你能将上面的结果全都答对,不仅说明你对String类有了比较深的理解,更说明你对Java对象是如何在内存中存储的,已经有了比较深的理解。
如果有的运行结果和你期待的结果不一致,说明你对对象及对象的值,理解可能出现了歧义。
(Debug一下上面的程序,看看“Variables”窗口那四个变量的ID,你就会明白错在哪儿了)
通过上面一个很简单的例子,说明我们看似很熟悉的东西,其实我们未必很熟悉。因为一个小小的理解错误,可能会导致一个项目中很大的bug,往往这样的bug又很难发现(因为我们经常把这样的bug忽略了)。
希望大家如果还有类似的经验和理解,请不要吝惜您的经验,和大家一起分享,让我们共同进步。
分享到:
相关推荐
主要介绍了Java中String判断值为null或空及地址是否相等的问题,文中举了简单的例子对字符串类型的值和地址问题进行讲解,需要的朋友可以参考下
Java String对象的经典问题,有关String类的介绍
Java中颜色的String和Color对象之间的互相转换
Educoder题目:Java面向对象 - String类答案解析
java编程中对字符串的各种方式的处理,包括(空字符串处理、判断是否是空字符串 null和"" 都返回 true、 把string array or list用给定的符号symbol连接成一个字符串、 判定第一个字符串是否等于的第二个字符串中的某...
86.java中String对象的特点.zip86.java中String对象的特点.zip86.java中String对象的特点.zip86.java中String对象的特点.zip86.java中String对象的特点.zip86.java中String对象的特点.zip86.java中String对象的特点....
java字符串转String数组简单实例,简单但很实用
java String 使用详解,看完对String 的用法完全掌握
java实现对象转化为get请求的param参数String字符串,本人自测非常好用,一般对象可以转化键值对的格式,但是最近项目需要自己手动拼接对象作为get请求的参数,百度了一堆还不如自己写一个,欢迎各位使用,有什么...
5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5....
在JDK1.5中,String类增加了一个非常有用的静态函数format(String format, Objece... argues),可以将各类数据格式化为字符串并输出。其中format参数指定了输出的格式,是最复杂也是最难掌握的一点,而argues则是一...
java中String类型转换方法.pdf
Java技术:Java String常见问题解析
java String 编写的数据结构,一些基本的函数应用,适合初学者
java基础String类选择题练习题,文档包含了答案与分析,适合学习用,本文档仅仅用于学习分享,不得用于商业用途
Java 之 String 类型Java 之 String 类型
Java String与Byte类型转换;用到网络编程.
1) 创建一个只能容纳String对象名为names的ArrayList集合; 2)按顺序往集合中添加5个字符串对象:"张三"、"李四"、"王五"、"马六"、"赵七"; 3)对集合进行遍历,分别打印集合中的每个元素的位置与内容; 4)打印...
java String 与各种进制字符之间的转换
Java中十大常见Java String问题_动力节点Java学院整理