最近已经把Java最基本的语法学会,实际上,学过python后还是很好理解Java语言。因为Scala和Java有一定联系,Scala编程基于Java,所以接下来可以先了解一下Scala。
笔记
学习网站:Scala教程|易百教程
作者:初生不惑
https://www.yiibai.com/scala/scala_overview.html#article-start
Scala是一种现代化的多范式编程语言,旨在以简洁,优雅和类型安全的方式表达常见的编程模式。
Scala具有与Java完全不同的一组功能,其中的一些如下 -
Idea 无法安装Scala,下载插件手动配置
Scala和Java之间最大的句法差异在于行结束字符的分号( ; ) 是可选的。
Scala与Java一样的内容将直接跳过
第一个Scala
object HelloWorld {
/* This is my first java program.
* This will print 'Hello World' as the output
*/
def main(args: Array[String]) {
println("Hello, world!") // prints Hello World
}
}
class MyFirstScalaClass
,class Employee*
类等。def myMethodName()
,def getName()
等。def main(args:Array [String])
- Scala程序从main()方法开始,这是每个Scala程序的强制性部分。Scala与Java具有相同的数据类型,具有相同的内存占用和精度。
所有数据类型都是对象
可变变量
var myVar : String = "Foo"
不可变变量
val myVal : String = "Foo"
变量的类型在变量名称和等号之前指定。可以通过其数据类型来定义任何类型的Scala变量,如下所示:
val or val VariableName : DataType = [Initial Value]
如果您没有为变量分配任何初始值,则有效的语法如下:
var myVar :Int;
val myVal :String;
当为变量分配初始值时,Scala编译器可以根据分配给它的值来推断变量的类型。这被称为变量类型推断。 因此,可以编写这样的变量声明
var myVar = 10;
val myVal = "Hello, Scala!";
默认情况下,myVar将会被计算推断为Int类型,myVal将计算推断为String类型变量。
val (myVar1: Int, myVar2: String) = Pair(40, "Foo")
类型推断得到正确的类型 -
val (myVar1, myVar2) = Pair(40, "Foo")
例
object Demo {
def main(args: Array[String]) {
var myVar :Int = 10;
val myVal :String = "Hello Scala with datatype declaration.";
var myVar1 = 20;
val myVal1 = "Hello Scala new without datatype declaration.";
println(myVar);
println(myVal);
println(myVar1);
println(myVal1);
}
}
如果不使用私有(private
)和受保护(protected
)访问修饰符进行标注,那么访问将被视为公开(public
)的。这些修饰符限制了对某些代码区域的成员访问
私有(private
)成员只能在包含成员定义的类或对象内部可见。
class Outer {
class Inner {
private def f() {
println("f") }
class InnerMost {
f() // OK
}
}
(new Inner).f() // Error: f is not accessible
}
受保护(protected)成员只能从定义成员的类的子类访问。
package p {
class Super {
protected def f() {
println("f") }
}
//Sub类是Super的子类
class Sub extends Super {
f()
}
//Other类不会从Super类继承
class Other {
(new Super).f() // Error: f is not accessible
}
}
不同于私有和受保护的成员,不需要为公有成员使用Public关键字指定。没有明确使用修饰符则自动归为公共成员。 这些成员可以从任何地方访问。
class Outer {
class Inner {
def f() {
println("f") }
class InnerMost {
f() // OK
}
}
(new Inner).f() // OK because now f() is public
}
Scala中的访问修饰符可以通过限定符进行扩充。
形式为private [X]
或protected [X]
的修饰符表示为访问是私有或受保护的“最多”到X,其中X指定一些封闭的包,类或单例对象。
package society {
package professional {
class Executive {
private[professional] var workDetails = null
private[society] var friends = null
private[this] var secrets = null
def help(another : Executive) {
println(another.workDetails)
println(another.secrets) //ERROR
}
}
}
}
注意 - 以下几点来自上面的例子总结 -
与java一样