大数据——Scala基础(Basics)

这篇博客介绍了Scala编程的基础知识,包括输出语句、常量、变量、常量与变量的区别、println()的用法、自定义函数、匿名函数、多参数列表函数、无参数列表函数、类、样例类、对象和特质。讲解了Scala中类的定义、实例化以及对象、特质的使用,强调了主方法作为程序入口的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#输出语句(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:类名

prefixsuffix:属于类的参数,即构造函数的参数列表

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");
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值