为什么选择scala
1.scala是兼容的
他被设计成无缝的与Java实施或操作。
scala程序会被编译成JVM的字节码。他们的执行期性能通常与Java程序一致。
scala程序可以调用Java的方法,访问Java的字段,实现Java的接口。
几乎所有的scala代码都极度依赖Java库,而经常无须程序员意识到这一点。
交互式操作的另一点是scala极度重用了Java类型。
scala | Java |
Int | int |
Float | float |
Boolean | boolean |
scala代码同样可以由Java代码调用
2.scala是简洁的
scala语法避免了一些束缚Java程序的固定写法,举个栗子,scala中分号是可选的,且通常不写。
举个代码栗子:看Java和scala是怎么样写类及构造函数的
Java:
class MyClass{
private int index;
private String name;
public MyClass(int index,String name){
this.index = index;
this.name = name;
}
}
scala:
class MyClass(index:Int,name:String)
根据这段代码,scala编译器将要制造两个私有字段的类,一个名为index的Int类型的和一个叫做name的String类型,还有一个用这些变量作为参数获得初始值得构造函数。
这个构造函数还将用 作为参数传入的值初始化这两个字段。
有助于scala简洁易懂的另一个因素的是他的类型推断。
最关键的还是因为已经存在在库里的,不需要我们写的代码。scala给了我们许多工具来定义强有力的库让你抓住并提炼出通用的行为。
scala是高层次的
过于复杂的代码是造成很多软件工程崩溃的原因。但是重要的软件往往有复杂的需求,这种复杂性不可避免, 不过,必须由不受控转为受控
scala可以通过让你提升你的设计和使用接口的抽象级别来帮助你管理复杂性,
栗如:
想要弄清楚一个String里面是否包含一个大写字符。
Java:
boolean nameHasUpperCase = false;
for (int i = 0; i < name.length();i++){
if(Character.isUpperCase(name.charAt(i))){
nameHasUpperCase = true'
break;
}
}
scala
val nameHdsUpperCase = name.exits(_.isUpperCase)
3.scala是静态类型的
可检验属性
静态类型系统可以保证消除某些运行时错误
安全的重构
静态类型系统提供了让你具有高度信心改动代码基础的安全网。
文档
静态类型是被编译器检查过正确性的程序文档。