- 
							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条)
聪明如你,不妨在这 发表你的看法与心得 ~