-
Java判断字符串变量是否为空
普通类 -
- 支持
- 批判
- 提问
- 解释
- 补充
- 删除
-
-
问题描述
语义基因抽取的recognize_domainWord方法中,判断disciplineId是否为空时,如果采用简单的disciplineId==""进行判断,有时候会判断不准确。导致后面的Long.parseLong(disciplineId)报数字转换格式异常。
代码如下:
//根据disciplineId查找其孩子结点学科id
if(disciplineId!=""&&disciplineId!=null){
if(isNumeric(disciplineId)){
CourseType ct=CourseTypeService.getInstance().getById(Long.parseLong(disciplineId));
String childDisciplineIds=ct.getChildrenIdStr();
querydisciplineIds=disciplineId+","+childDisciplineIds;
}
}-
问题原因
要理解采用“==”进行判断有时正确,有时错误的原因,需要清楚两个方面的内容:
1、“==”。java中的“==”比较的是引用是否相等,而不是引用所指的对象的值是否相等;
2、对于字符串的创建方式:String str = "aa";和String str = new String("aa");在本质上有区别。前者是将“aa”放到字符串连接池中存储的,如果再次声明String str2 = "aa",str2和str引用的都是“aa”;而后者和创建普通的类对象一样,即使再次声明String str2 = new String("aa"),会在内存中在创建一个存储aa的区域,这是str和str2指向不同的内存地址。
基于以上两点,disciplineId的创建方式,会影响使用==的比较结果。例如下面的程序:
结果:
s1==s2:trues1==s3:false要深入理解这方方面的内容可以查看:和-
解决方法:使用java自带的equals方法进行判断
//根据disciplineId查找其孩子结点学科id
if(disciplineId!=null&&!disciplineId.equals("")){
if(isNumeric(disciplineId)){
CourseType ct=CourseTypeService.getInstance().getById(Long.parseLong(disciplineId));
String childDisciplineIds=ct.getChildrenIdStr();
querydisciplineIds=disciplineId+","+childDisciplineIds;
}
} -
-
- 标签:
- aa
- 进行
- 判断
- string
- disciplineid
- childdisciplineids
- str
- java
- 创建
- str2
- 引用
- 空
- 变量
-
学习元评论 (0条)
聪明如你,不妨在这 发表你的看法与心得 ~