起因
今天在做项目的时候,想构建一个树形结构,从数据库中查询出了所有数据,进行递归建树,但是有个数据一直失败,十分不解。
在我写方法时,看到是数值比较大小习惯性地用==,没想到一直不显示…
后端方法:
数据库中的数据:
前端页面中:
思考:
很懵很懵,各种调试,各个地方输出都来一遍,还是没发现问题。
又想着是不是我比较大小这里有问题,但是我其他的数据都能显示呀。
突然醒悟了,我的id和parentid不是用的Long嘛,Long有常量池啊,范围是(-128~127) ,并且对引用类型使用==比较的是地址,也就是说在常量池里的对象地址都一样,所以前面的数据才能显示出来,而常量池外的对象都是在堆中新产生的,同一数值的对象地址也不同。
解决:
这也就是我数据出不来的原因了,引用类型别用==比较大小了,使用equals之类的方法
解决方法:
-
用.equals()
-
用longValue()
结果:
这下数据不就出来了嘛
反思:
引用类型比较大小别用==了
202303222105三