#输出语句(Hello World)
Java中的输出语句
System.out.println("Hello World");
Scala中的输出语句
println("Hello World!");
#常量(Constant)
常量的定义:(使用关键字:val)
val constant = "常量";
println("这是:"+constant);
//Console: 这是:常量
常量赋值是没有类型的,属于弱类型语言,可以通过常量名对应的值的类型推断出常量的类型。
常量可以直接指定类型:
val constant: Int = 2 + 2; //指定类型为整型 println("这是指定为整型的常量:"+constant); //Console: 这是指定为整型的常量:4
#变量(Variable)
变量的定义:(使用关键字:var)
var var1 = 1 + 1;
println("var1的值为:"+var1);
//Console: var1的值为:2
变量也可以指定类型:
var var2: String = "这是个字符串"
println("var2————>"+var2);
//Console: var2————>这是个字符串
#常量和变量的区别(Difference)
同:
1、都可以通过常(变)量名使用对应的值
2、定义的语法和使用的方法相同
关键字 名称 = 值
异:
1、常量的关键字是【val】、变量的关键字是【var】
2、常量赋值不可以修改,变量赋值可以多次赋值。
#println( )的用法
1、作为输出语句使用,可以将内容输出到控制台。
println("内容");
2、println()的括号()中可以写代码块,最后一行作为输出内容
println({
var var3: Int = 4 + 5;
var3; //Console:9
var3 / 3; //Console:3
});
//Console:3
#自定义函数(Function)
Scala的函数定义语法与Python类似,如下:
def add(a: Int,b: Int) : Int = {
val c: Int = a + b;
return c;
}
def: 定义函数的关键字
add:函数名称
(a:Int,b:Int):参数列表,其中,a、b的数据类型皆为整型(Int)
: Int:返回值类型为Int
自定义函数的使用:
def main(args: Array[String]): Unit = {
var c = add(3,5);
println(c);
}
//Console:8
#匿名函数
匿名函数类似于Lambda表达式的使用
var fun1: Int=>Int = (x :Int) => x + 1;
var fun2: Int = fun1(5);
println(fun2);
//Console:6
#多参数列表函数
多参数列表函数定义:
def fun3(a: Int,b: Int)(c: Int) =
{
println(a+"+"+b+"的和为:"+c);
}
多参数列表函数的使用:
def main(args: Array[String]): Unit = {
fun3(3, 5)(8);
}
//Console:3+5的和为:8
一个
即一个参数列表,
这是两个参数列表
#无参数列表函数
def name: String = System.getProperty("user.name");
println("Hello,"+name+"!");
//Console:Hello,Administrator!
user.name为本地计算机的用户名
#类(class)
使用 【class】关键字定义一个类
class Greeter(prefix: String,suffix: String){
def greet(name: String): Unit =
println(prefix + name + suffix);
}
Greeter:类名
prefix、suffix:属于类的参数,即构造函数的参数列表
Unit:相当于Java函数的void,事实上与之对应的有单例值:(),不携带任何信息。
注:当函数{ } 中的表达式为一行时,{ } 可以省略。
类的实例及方法的调用:
val greeter = new Greeter("Hello,","!");
greeter.greet("Scala developer");
//Console:Hello,Scala developer!
Scala与Java虽有相通之处,但也有所不同。
Java中,类的实例:
Greeter greeter = new Greeter("a","c");
Scala中,类的实例:
val greeter: Greeter = new Greeter("a","c");
Scala中定义常量为val,定义变量为var,可以在常(变)量名之后用: 指定数据类型。
Attention!!
注意:Object类型的不能new,因为Object属于单例模式
#样例类(case class)
Scala有一种特殊的类叫做样例类(case class)。
默认情况下,样例类一般用于不可变对象,并且可作值比较。
可以使用 case class 关键字来定义样例类
case class Point(x: Int,y: Int)
{
}
样例类不用 new 关键字实例化
val point1 = Point(1,2);
val point2 = Point(1,2);
val point3 = Point(2,2);
println("point1、point2——>"+point1+"、"+point2);
println("point1==point2——>"+(point1==point2));
println("point2==point3——>"+(point2==point3));
控制台运行结果:
#对象(Object)
对象是它们自己定义的单实例,可以看作它自己的类的单例。
使用 object 关键字定义对象
object ScalaBasic{
private var counter = 0;
def create(): Int = {
counter +=1
counter
}
}
可以直接通过 object 的名字调用方法
val newCount: Int = ScalaBasic.create();
println(newCount); //1
val newerCount: Int = ScalaBasic.create();
println(newerCount); //2
#特质(trait)
特质是包含某些字段和方法的类型。可以组合多个特质。
使用 trait 关键字定义特质
trait Greeter{
def greet(name: String): Unit
}
或
trait Greeter{
def greet(name: String): Unit =
println("Hello," + name + "!")
}
由上述可以知道:特质(trait)和 Java中的抽象类(Abstract class)、接口(Interface)有相通之处。
可以使用 extends 关键字来继承特质,使用 override 关键字来覆盖默认的实现
class DefaultGreeter extends Greeter
class CustomizableGreeter(prefix: String,suffix: String) extends Greeter{
override def greet(name: String): Unit =
println(prefix + name + suffix)
}
val default = new DefaultGreeter()
default.greet("狗蛋儿"); //Console:Hello,狗蛋儿!
val custom = new CustomizableGreeter("你好,","!");
custom.greet("狗蛋儿"); //Console: 你好,狗蛋儿!
一个类可以继承多个特质。多个特质之间由(英文输入法)逗号 "," 分隔
#主方法
主方法是一个程序的入口。JVM要求一个名为 main 的主方法,接受一个字符串数组的参数。
Object Main{
def main(args: Array[String]): Unit =
println("Hello World");
}