java与javascript的数据类型转换计算机等级考试

文章作者 100test 发表时间 2010:02:02 15:57:04
来源 100Test.Com百考试题网


  无论何时,从一种语言中调用另一种语言的时候,都必须考虑的问题是一种语言的类型如何映射到另一种语言的类型。假设把一个java.lang.String和一个java.lang.Integer变量绑定到一个Bindings对象中,当JavaScript脚本使用这些变量的时候,它所见到的值是什么类型的呢?如果脚本的计算结果是JavaScript布尔类型的值,eval()方法所返回的对象是什么类型的呢?

  当把一个Java对象存储到一个Bindings对象时,它会根据以下方式转换为JavaScript:

  1、Boolean对象转换为JavaScript布尔值。

  2、所有java.lang.Number包装对象转换为javaScript数字。包括java的Byte\Short\Integer \Long\Float\Double,还有java.math.BigInteger和java.math.BigDouble。

  注意:javascript的数值类型是基于64位的浮点数,和Java的双精度类型类似。并不是所有的long值都可以在一个double中精确地表示。因此,如果把一个Java中long型数据传递给JavaScript,可能会丢失数据。当使用BigInteger和BigDecimal 的时候,同样要注意这个问题。即:如果Java值比JavaScript所能表示的值有更高的精度的话,后面的数字可能会丢失。或者,如果Java的值比 Double.MAX_VALUE大,它将会转换为一个JavaScript的Infinity值。

  3、java的Character和String对象转换为JavaScript字符串。

  4、java空值转换为JavaScript的空值。

  5、任何其它的Java对象都只是被包装到一个JavaScript的JavaObject对象中。有关JavaObject的介绍在JavaScript如何脚本化java中介绍。

  当JavaScript类型转换为java数据类型时,转换如下:

  1、JavaScript布尔值转换为java的Boolean对象。

  2、JavaScript字符串转换为java的String对象。

  3、JavaScript数字转换为java的Double对象。Infinity和NaN值也会适当适当的转换为java中的Infinity和NaN

  4、JavaScript空值和未定义的值转换为Java空值。

  5、JavaScript对象和数组转换为类型不明确的Java对象。这些值可以传递回给JavaScript,但却有一个专门供Java程序使用的未发布的API。

  注意:String、Boolean和Number的JavaScript外包对象被转换为不明确的Java对象,而不是它们所对应的Java类型。

  想把js的array转成java类型,报了 java.lang.ClassCastException: sun.plugin.javascript.ocx.JSObject cannot be cast to [Ljava.lang.String. 是类的转换问题!

  目前想到的解决方案是:

  1。用JSON,采用JSON把JS对象转成JSON字符串,然后JAVA在把JSON字符串转成JAVA类型,不过这样太麻烦

  2。直接采用传 “字符串”

  编辑特别推荐:

  Java线程的概念与原理

  Java中的TCP/UDP网络通信编程



相关文章


Java报表软件比较计算机等级考试
JavaMail深入浅出(2)计算机等级考试
JavaMail深入浅出(1)计算机等级考试
vb应用程序调用vc的动态库实现联合调试计算机等级考试
java与javascript的数据类型转换计算机等级考试
Java线程的概念与原理计算机等级考试
Java中的TCP_UDP网络通信编程计算机等级考试
Java防止浏览器直接打开下载的文件计算机等级考试
Java将gif格式图片转为jpg格式计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛