将String
变量中的数值保存在一个对象中(同时传入方法并作为String返回)以及稍后只在BigDecimal
中进行转换并运行?<是一个好主意吗? / p>
在方法签名和pojo中使用的意图是可以在double
或实现者喜欢的任何其他类型中执行操作
例如
public String operate(String value1, String value2){
BigDecimal val1 = new BigDecimal(value1);
BigDecimal val2 = new BigDecimal(value2);
return val1.multiply(val2).toString();
}
或者它只是一个开销?
会影响表现吗?
答案 0 :(得分:2)
从一种格式转换为其他格式始终是开销。以格式存储,以便您可以对其执行所有操作
答案 1 :(得分:1)
不确定为什么这是个好主意。 “Stringly Typed”不是一件好事。是的,BigDecimal拥有一个更紧凑的数字,作为字节数组,并且还优化以保存long
值中的小值。字符串将是两字节字符十进制表示。
答案 2 :(得分:1)
从两个角度来看,这是一个坏主意:
考虑这个例子。普通int
占用内存中的4个字节。表示为int
的{{1}}最多可占用72个字节:
比String
的原始表示多18(!)倍。
答案 3 :(得分:0)
这样做有很多问题。首先,存在创建和销毁额外对象的开销,至少一个用于转换为/从String转换。根据这种情况发生的次数,它可能很重要。其次,每次从String转换为数字并返回时,您都有可能解析问题等。最后,您规避Java在类型转换等方面提供的任何内置检查和平衡。
我个人认为,您应尽可能减少转换,并将数据存储在最具体的对象/原语中。我认为这样可以使代码更易于阅读,更易于维护,并且在出现错误时更容易进行故障排除。