java与javascript的数据类型转换

无论何时,从一种语言中调用另一种语言的时候,都必须考虑的问题是一种语言的类型如何映射到另一种语言的类型。假设把一个java.lang.String和一个java.lang.Integer变量绑定到一个Bindings对象中,当JavaScript脚本使用这些变量的时候,它所见到的值是什么类型的呢?如果脚本的计算结果是JavaScript布尔类型的值,eval()方法所返回的对象是什么类型的呢?
[b]当把一个Java对象存储到一个Bindings对象时,它会根据以下方式转换为JavaScript[/b]:
[color=blue]1[/color]、Boolean对象转换为JavaScript布尔值。
[color=blue]2[/color]、所有java.lang.Number包装对象转换为javaScript数字。包括java的Byte\Short\Integer\Long\Float\Double,还有java.math.BigInteger和java.math.BigDouble。
[color=red]注意[/color]:javascript的数值类型是基于64位的浮点数,和Java的双精度类型类似。并不是所有的long值都可以在一个double中精确地表示。因此,如果把一个Java中long型数据传递给JavaScript,可能会丢失数据。当使用BigInteger和BigDecimal的时候,同样要注意这个问题。即:如果Java值比JavaScript所能表示的值有更高的精度的话,后面的数字可能会丢失。或者,如果Java的值比Double.MAX_VALUE大,它将会转换为一个JavaScript的Infinity值。
[color=blue]3[/color]、java的Character和String对象转换为JavaScript字符串。
[color=blue]4[/color]、java空值转换为JavaScript的空值。
[color=blue]5[/color]、任何其它的Java对象都只是被包装到一个JavaScript的JavaObject对象中。有关JavaObject的介绍在JavaScript如何脚本化java中介绍。


[b]
当JavaScript类型转换为java数据类型时,转换如下:[/b]
[color=blue]1[/color]、JavaScript布尔值转换为java的Boolean对象。
[color=blue]2[/color]、JavaScript字符串转换为java的String对象。
[color=blue]3[/color]、JavaScript数字转换为java的Double对象。Infinity和NaN值也会适当适当的转换为java中的Infinity和NaN
[color=blue]4[/color]、JavaScript空值和未定义的值转换为Java空值。
[color=blue]5[/color]、JavaScript对象和数组转换为类型不明确的Java对象。这些值可以传递回给JavaScript,但却有一个专门供Java程序使用的未发布的API。
[color=red]注意[/color]:String、Boolean和Number的JavaScript外包对象被转换为不明确的Java对象,而不是它们所对应的Java类型。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值