String类型判断
1.Stringstr1="123";if("123".equals(str1))和if(str1=="123")的区别..2.Stringstr1="";if(null...
1.String str1 = "123";
if("123".equals(str1))和if(str1=="123")的区别..
2.String str1 ="";
if(null==str1 || "".equals(str1) || "null".equals(str1) )和if("".equals(str1))的区别..
望大家能给予通俗点的解答,便于理解..谢谢!!!
我只想说..我不是菜鸟....这行我已经进入了2年了.. 只是这问题. 我无法用语言去表达... 望大家帮助....谢谢....
3楼..你可以测试下...
第一个问题.. 2个判断都是返回的true.. 我想了解..为什么大家都会使用前者?的确是地址不同. 一个保存在堆中.. 一个在栈中... 但是我想了解要选择第一种判断..
第二个问题...疑点在于str1可能等于null或者"null"吗? 而我声明的是"",,那我只需要判断"".equals(str1)就可以了啊....
继续等待大家的答案.. 谢谢 展开
if("123".equals(str1))和if(str1=="123")的区别..
2.String str1 ="";
if(null==str1 || "".equals(str1) || "null".equals(str1) )和if("".equals(str1))的区别..
望大家能给予通俗点的解答,便于理解..谢谢!!!
我只想说..我不是菜鸟....这行我已经进入了2年了.. 只是这问题. 我无法用语言去表达... 望大家帮助....谢谢....
3楼..你可以测试下...
第一个问题.. 2个判断都是返回的true.. 我想了解..为什么大家都会使用前者?的确是地址不同. 一个保存在堆中.. 一个在栈中... 但是我想了解要选择第一种判断..
第二个问题...疑点在于str1可能等于null或者"null"吗? 而我声明的是"",,那我只需要判断"".equals(str1)就可以了啊....
继续等待大家的答案.. 谢谢 展开
5个回答
展开全部
首先楼主肯定知道"=="和equals的区别,我这里再说下:
==比的是两个对象的地址。
equals是java.lang.Object类的一个方法,默认跟"=="一样也是比的地址。如果判断对象相等有其他的标准(例如只要值相等就代表相等),那么就需要重写java.lang.Object的equals方法。String类就重写了此方法,只要对象值相等即可。
Java运行时会维护一个String Pool(String池),String Pool与JAVA堆栈是各自独立的。
String池用来存放运行时中产生的各种字符串,并且池中的字符串的内容不重复。
String对象的创建遵循以下几个原则。
原则1:只要使用new关键字来创建对象(String str = new String("123")),则一定会(在堆区或栈区)创建一个新的对象。 我们知道,只要一个对象是New出来的,那JVM肯定会在内存中为此对象分配一个唯一的地址,因此New出的对象跟任意一个对象用“==”判断肯定为false。
原则2:使用直接指定来创建String对象(如String str="123"),则仅仅会检查维护String池中的字符串,池中没有就在池中创建一个,有则罢了!但绝不会在堆栈区再去创建该String对象。
原则3:使用包含变量的表达式来创建对象String(String str = "123"+"456"),则不仅会检查维护String池,而且还会在堆栈区创建一个String对象。
说完这些,我们来看下你的问题:
1、String str1 = "123";
if("123".equals(str1))和if(str1=="123")的区别..
例子中str1对象是按照原则2创建的,所以地址会相同。
如果String str1 = new String("123"),那么str1按照原则1创建,equals判断为true,==判断为false.
2.String str1 ="";
if(null==str1 || "".equals(str1) || "null".equals(str1) )和if("".equals(str1))的区别 .....而我声明的是"",,那我只需要判断"".equals(str1)就可以了啊....
此问题你提的有点问题, if(null==str1 || "".equals(str1) || "null".equals(str1) )我觉得这条语句可能用来判断数据库查询的结果是否为空,它认为null或空字符串或字符串"null"都代表空,而if("".equals(str1))只有在str1=""的时候才成立。
==比的是两个对象的地址。
equals是java.lang.Object类的一个方法,默认跟"=="一样也是比的地址。如果判断对象相等有其他的标准(例如只要值相等就代表相等),那么就需要重写java.lang.Object的equals方法。String类就重写了此方法,只要对象值相等即可。
Java运行时会维护一个String Pool(String池),String Pool与JAVA堆栈是各自独立的。
String池用来存放运行时中产生的各种字符串,并且池中的字符串的内容不重复。
String对象的创建遵循以下几个原则。
原则1:只要使用new关键字来创建对象(String str = new String("123")),则一定会(在堆区或栈区)创建一个新的对象。 我们知道,只要一个对象是New出来的,那JVM肯定会在内存中为此对象分配一个唯一的地址,因此New出的对象跟任意一个对象用“==”判断肯定为false。
原则2:使用直接指定来创建String对象(如String str="123"),则仅仅会检查维护String池中的字符串,池中没有就在池中创建一个,有则罢了!但绝不会在堆栈区再去创建该String对象。
原则3:使用包含变量的表达式来创建对象String(String str = "123"+"456"),则不仅会检查维护String池,而且还会在堆栈区创建一个String对象。
说完这些,我们来看下你的问题:
1、String str1 = "123";
if("123".equals(str1))和if(str1=="123")的区别..
例子中str1对象是按照原则2创建的,所以地址会相同。
如果String str1 = new String("123"),那么str1按照原则1创建,equals判断为true,==判断为false.
2.String str1 ="";
if(null==str1 || "".equals(str1) || "null".equals(str1) )和if("".equals(str1))的区别 .....而我声明的是"",,那我只需要判断"".equals(str1)就可以了啊....
此问题你提的有点问题, if(null==str1 || "".equals(str1) || "null".equals(str1) )我觉得这条语句可能用来判断数据库查询的结果是否为空,它认为null或空字符串或字符串"null"都代表空,而if("".equals(str1))只有在str1=""的时候才成立。
展开全部
1.String str1 = "123";
if("123".equals(str1))和if(str1=="123")的区别..
首先,String是一个类,123只是这个类中的一个值
equals用来比较两个String类中的值是否相同,= "123"是快捷的建了一个新类,和new String("123")一样(这样说比较通俗)
所以,if("123".equals(str1))就是通过(在比较值),str1 == "123"就不能通过了。因为"123"又是一个新类了。
2.String str1 ="";
if(null==str1 || "".equals(str1) || "null".equals(str1) )和if("".equals(str1))
null == str1不通过。因为str1是空值的一个类, "".equals(str1)通过, "null".equals(str1)不通过。因为"null"值不等于"", 因为是||(或)判断,所以这名是通过的。
if("".equals(str1))是通过的。因为你前面建str1类的时候,初始值是""空。
应该看得懂吧?兄弟加油
if("123".equals(str1))和if(str1=="123")的区别..
首先,String是一个类,123只是这个类中的一个值
equals用来比较两个String类中的值是否相同,= "123"是快捷的建了一个新类,和new String("123")一样(这样说比较通俗)
所以,if("123".equals(str1))就是通过(在比较值),str1 == "123"就不能通过了。因为"123"又是一个新类了。
2.String str1 ="";
if(null==str1 || "".equals(str1) || "null".equals(str1) )和if("".equals(str1))
null == str1不通过。因为str1是空值的一个类, "".equals(str1)通过, "null".equals(str1)不通过。因为"null"值不等于"", 因为是||(或)判断,所以这名是通过的。
if("".equals(str1))是通过的。因为你前面建str1类的时候,初始值是""空。
应该看得懂吧?兄弟加油
参考资料: my head
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
例1例2 输出都是true;
我想了解..为什么大家都会使用前者?
我想大概equals 比较的是对象的内容,而且在自己的新类中可以覆盖equals()方法.用起来方便。
第二个问题...疑点在于str1可能等于null或者"null"吗?
String str1 =""; 你已经申明str1 是一个字符串,虽然什么都不显示.
一旦申明了,那么str1 就不可能是 null ,更不等于"null"这个新字符串!
我想了解..为什么大家都会使用前者?
我想大概equals 比较的是对象的内容,而且在自己的新类中可以覆盖equals()方法.用起来方便。
第二个问题...疑点在于str1可能等于null或者"null"吗?
String str1 =""; 你已经申明str1 是一个字符串,虽然什么都不显示.
一旦申明了,那么str1 就不可能是 null ,更不等于"null"这个新字符串!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
学编程不是靠做几个习题就可掌握,要实际编写和调试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个问题 (1)是123等于str1,(2)吧123赋值给str1.
第二个问题 哥们我也看不懂,哈哈。
第二个问题 哥们我也看不懂,哈哈。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |