【发布时间】:2011-11-29 17:41:05
【问题描述】:
我的环境是:
Scala 版本 2.9.1.final(Java HotSpot(TM) 64 位服务器 VM,Java 1.6.0_26)。
先看这个例子:
scala> var a = 1
a: Int = 1
scala> var c = 'c
c: Symbol = 'c
scala> var d = 1.1
d: Double = 1.1
scala> var b = "123"
b: java.lang.String = 123
scala> val e:String = "234"
e: String = 234
所以,你可以看到除了字符串之外的其他文字,默认类型是 Scala Types(Int Double Symbol.
但字符串文字是 Java 类型。(java.lang.String
当您使用 Scala 类型 String 定义值时,字符串文字将是 Scala String 类型。
为什么字符串文字的默认类型不是 Scala String?
第二:
当你必须从 java 调用 scala 方法时。
你的 scala 方法的参数如下:
def hello(i:Int) = {
println(i)
}
在 java 方面。如果你这样打电话。
object.hello(null)
它会因类型不匹配而失败。
java.lang.Integer 可以为空。但 scala Int 不能为空。
scala 中的 null 是 AnyRef 的子类型。不是 AnyVal..
我发现 AnyRef 和 AnyVal 带我进入 java1.4 世界,它没有自动框..。
【问题讨论】:
-
能否请您将您的问题更具体一些。你能澄清你的问题吗?
-
如果您有两个问题,请提出两个问题。并尝试使主题更接近问题 - 如果您这样做了,Stack Overflow 会向您显示您的第一个问题与其重复的问题。