String.valueOf(l)方法引发的关于2String、String.valueOf、toString区别的思考

先说自己的问题:写人民币大小写转换时碰到一个问题,本意是想double保留2 为小数以后再转换成String,对于每个字符进行加单位处理danwei(j),但是转换后位数太多,导致 j 出现越界错误:

String danwei="千百拾亿千百拾万千百拾元角分";

double inNUM;

String in =String.valueOf(inNUM*100);

解决方法:

long l=Math.round(inNUM*100);//这里要转化成long,否则double的999999999999.99会出错!

String in =String.valueOf(l);
原因分析:

Java 中 long 是一个整数基本类型, 长度为64bits, 即8字节.而double是小数;带小数点的double转long型必定会造成数据变化,也就是取整。--这样才是我想要的结果。过程中尝试了

java.text.DecimalFormat dFormat=new java.text.DecimalFormat("#.00");
dFormat.format(inNUM);

几种把double保留两位小数的方法都没能解决问题。


总结:

1.java中long是长整型,可以用来对double取整;

2.关于String、String.valueOf、toString区别的思考:

(1)String用来进行强制类型转换。它只能转换本身就是字符串的,非String类型转换会报错。

(2)toString():这是object类就有的方法,所有的类都继承object,也就是所有类都有这个方法,而且必须重载这个方法来实现对自己所加的属性的字符串转换,即所有对象都能调用这个方法(你代码不写错的情况下),但是注意,如果参数为空,会报空指针异常。

  (3)String.Valueof():定义的时候对空字符串进行了处理:

public static String valueOf(Object obj){return (obj==null) ? "null" : obj.toString()};

不会报空指针异常。

推荐使用String.Valueof()。

关于String.Valueof()重载的多种方法

String 类别中已经提供了将基本数据型态转换成 String 的 static 方法,有下列几种 :

String.valueOf(boolean b) : 将 boolean 变量 b 转换成字符串 

String.valueOf(char c) : 将 char 变量 c 转换成字符串 

String.valueOf(char[] data) : 将 char 数组 data 转换成字符串 

String.valueOf(char[] data, int offset, int count) : 将 char 数组 data 中 由 data[offset] 开始取 count 个元素 转换成字符串 

String.valueOf(double d) : 将 double 变量 d 转换成字符串 

String.valueOf(float f) : 将 float 变量 f 转换成字符串 

String.valueOf(int i) : 将 int 变量 i 转换成字符串 

String.valueOf(long l) : 将 long 变量 l 转换成字符串 

String.valueOf(Object obj) : 将 obj 对象转换成 字符串, 等于 obj.toString() 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值