本文主要是介绍【JavaEE】Long.valueOf( + requestContext.globalData(count));,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.问题:
Long.valueOf("" + requestContext.globalData("count"));
为什么前面要加“”?
2.回答:
因为,“”是String类型的,String加上一个对象,就会自动给转成了String类型,我们在debug的时候,如果要打印对象,就要慎写:
Object a=new Object();
...//省略了给a设置各个成员变量的值;console.log("Object:"+a)
因为如果a是一个对象,你前面给它加一个String类型的对象,在debug的时候,首先给你变成String类型,这个时候,一定要看自己的需求;
问题中的代码也可以这样写:
Long.valueOf((String)requestContext.globalData(“count”))
但是这样还是不好,因为强转类型很可能会失败,这也是我们前面没有用(Long)来强转的原因,再进一步修改为
Long.valueOf(String.valueOf(requestContext.globalData("count")));
但是这样写太复杂了;问题中的写法还是好一些的。这里如果Long有一个类似于“”的方法,我们也就可以用同样的方法来转换了,但是,我目前还不知道(不是反话,是目前真的还没有接触到);接下来的问题就是,“”和null的区别是什么?
3.null和“”的区别;
为什么刚才是“”和null的区别,现在标题改成了null和“”的区别,其原因后面说,卖个关子;
区别如下:
①null是空,一无所有,我没有一套房子;“”是我有一套房子,但是房子是空的;这是质的区别,区别非常大;
②String s1=null未分配地址,String s2=“”分配了地址;
③null用等号比较,“”用equals比较,而且先判断是不是null,再判断是不是“”,即先判断有没有,再判断是不是空;这里,我感觉,null不能直接翻译成“空”,而应该翻译成“无”,因为“”的中文名叫“空字符串”,这样起名会产生歧义,让初学者误解,甚至让好多老手翻车;if(null==s1||(“”).equals.(s2)),否则会报空指针异常的错误;这里null要写==的前面,s1要写==的后面,这个是规范,也是避免报错的技巧;
这篇关于【JavaEE】Long.valueOf( + requestContext.globalData(count));的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!