Scala入门01-概述及基础语法

本文介绍了Scala语言的基本概念,包括它是面向对象和函数式编程的结合,运行在JVM上,并且可以直接调用Java代码。同时,文章还概述了Scala的基本语法,如对象、类、方法、字段和闭包,以及如何定义标识符、使用关键字和注释,以及包和导入的使用。

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

Scala入门01-概述及基础语法

1.Scala概述

Scala是可扩展语言的缩写,是一种混合功能编程语言。Scala顺利整合面向对象和函数式语言功能的功能。Scala被编译后在java虚拟机上运行。

(1)Scala是面向对象语言

Scala是一种纯粹的现象对象语言,每一个值都是一个对象,对象的类型和行为由类和特质描述;

类通过子类化和基于灵活的基于混合组合机制进行扩展,作为多重继承的替代。

(2)Scala是函数式编程语言

Scala也是一种函数式编程语言,每一个函数都是一个值,每一个值都是一个对象,所以每一个函数都是一个对象,Scala提供了一个轻量级的语法来定义匿名函数,它支持高阶函数,它允许函数嵌套。

(3)Scala是静态类型的

Scala和其他静态类型语言(C、Pascal,Rust等)不同,它不提供冗余类型信息。

(4)Scala运行在JVM上

Scala代码被编译成由Java虚拟机(JVM)执行的字节码,这意味着Scala和Java具有通用的运行时平台。因此,可以轻松地从Java迁移到Scala,Scala编译器将Scala代码编译成Java字节码,然后可以通过scala命令执行。scala命令类似于Java命令,因为它执行Scala代码。

(5)Scala可以执行Java代码

Scala能够使用Java SDK 的所有类以及自定义Java类,或你最喜欢的Java开源项目。

(6)Scala可以做并发和同步处理

Scala允许你以有效的方式表达一般的编程模式。它减少了线路数量,并帮助程序员以类型安全的方式进行编码,它允许你以不变的方式编写代码,这使得应用并发和并行性变得容易。

2.Scala基本语法

  • 对象:对象由状态和行为。一个对象是类的一个实例。
  • 类:可以将类定义为描述和该类相关的行为/状态的模板/蓝图。
  • 方法:一个方法基本是一种行为。一个类可以包含很多方法。将逻辑代码写入方法中,数据在方法中操纵并且执行所有的动作。
  • 字段:每个对象都有其唯一的一组实例变量,称为字段,对象的状态是由分配给这些字段的值类创建。
  • 闭包:闭包是一个函数,其返回值取决于在此函数之外声明的一个或多个变量的值。
  • 特质:特质(Traits)封装了方法和字段定义,然后可以通过将它们混合到类中来重用他们,特质(Traits)用于通过指定支持的方法的签名来定义对象类型

2.1第一个Scala程序

package com.nike.demo01

/**
  * 第一个scala程序
  */
object Test01 {
  def main(args: Array[String]): Unit = {
    println("Hello,World!")
  }
}

Scala编程中的基本语法和编码约定

(1)Scala是区分大小写的;

(2)类名称遵从大驼峰写法,标识符和方法名遵从小驼峰写法;

2.2Scala标识符

所有Scala组件都需要名称。用于对象,类,变量和方法名的名称成为标识符,关键字不能用作标识符,标识符不区分大小写,Scala支持4种类型的标识符:

1.字母数字标识符

字母数字标识符以字母或下划线开头,后面可以有更多的字母,数字或下划线。 $字符是Scala中的保留关键字,不应在标识符中使用。

以下是合法的字母数字标识符 -

age, salary, _value,  __1_value

以下是非法标识符 -

$salary, 123abc, -salary

2.运算符标识符

运算符标识符由一个或多个运算符字符组成。运算符字符是可打印的ASCII字符,如:+,:,?,~或#。

以下是合法运算符标识符 -

+ ++ ::: <?> :>

Scala编译器将在内部将操作符标识符转换成具有嵌入式 字 符 的 合 法 J a v a 标 识 符 。 例 如 , 标 识 符 : − &gt; 将 被 内 部 表 示 为 字符的合法Java标识符。例如,标识符:-&gt;将被内部表示为 Java:>colon m i n u s minus minusgreater。因此如果你需要在 Java 代码中访问:->方法,你需要使用 Scala 的内部名称 c o l o n colon colonminus$greater。

3. 字面识别符

字面量标志符为使用定义的字符串,比如 x yield

你可以在之间使用任何有效的 Scala 标志符,Scala 将它们解释为一个 Scala 标志符,一个典型的使用为 Thread 的 yield 方法, 在 Scala 中你不能使用 Thread.yield()是因为 yield 为 Scala 中的关键字, 你必须使用 Thread.yield()来使用这个方法。

2.3Scala关键字

[外链图片转存失败(img-mHogxJVj-1563969188222)(img/keyword.jpg)]

2.4Scala注释

Scala 类似 Java 支持单行多行注释。多行注释可以嵌套,但必须正确嵌套,一个注释开始符号对应一个结束符号。注释在 Scala 编译中会被忽略:

/*
 * 这是一个Scala程序 
 * 多行注释实例 
 */
object HelloWord {
  def main(args: Array[String]): Unit = {
    //输出Hello,World!
    //单行注释
    println("Hello,World!")
  }
}

一行中只有空格或者带有注释,Scala 会认为其是空行,会忽略它。标记可以被空格或者注释来分割。

2.5换行符

Scala是面向行的语言,语句可以用分号(;)结束或换行符。Scala 程序里,语句末尾的分号通常是可选的。如果你愿意可以输入一个,但若一行里仅 有一个语句也可不写。另一方面,如果一行里写多个语句那么分号是需要的。

package com.nike.demo02

object SwitchLine {
  def main(args: Array[String]): Unit = {
    val s = "Hello,World!";println(s)
  }
}

2.5Scala包

Scala 使用 package 关键字定义包,在Scala将代码定义到某个包中有两种方式:

方式一:和Java一样,在文件的头定义包名

package com.nike.demo02

object SwitchLine {
  def main(args: Array[String]): Unit = {
    val s = "Hello,World!";println(s)
  }
}

方式二:类似C#,可以在一个文件中定义多个包

package com.nike.demo02.package01{
  object SwitchLine {
    def main(args: Array[String]): Unit = {
      val s = "Hello,World!";println(s)
    }
  }

  object HelloWord {
    def main(args: Array[String]): Unit = {
      //输出Hello,World!
      //单行注释
      println("Hello,World!")
    }
  }
}


package com.nike.demo02.package01{
  object MySum {
    def main(args: Array[String]): Unit = {
      var sum = 0;
      for {arg <- args}{
        sum += arg;
      }
    }
  }
}

2.6包引用

Scala 使用 import 关键字引用包。

注意:import语句可以出现在任何地方,而不是只能在文件顶部。import的效果从开始延伸到语句块的结束。这可以大幅减少名称冲突的可能性。

//1.直接导入使用的ActionEvent包
import java.awt.event.ActionEvent 
object demo_1 {
  def main(args: Array[String]): Unit = {

 ActionEvent //使用ActionEvent
  }
}
//2.导入event下的所有包
import java.awt.event._
object demo_1 {
  def main(args: Array[String]): Unit = {
 ActionEvent //使用ActionEvent
  }
}
3.导入awt下的所有包
import java.awt._
object demo_1 {
  def main(args: Array[String]): Unit = {
 event.ActionEvent //因为引入了java.awt,所以可以省去前面的部分
  }
}
//如果想要引入包中的几个成员,可以使用selector(选取器):
object demo_1 {
  def main(args: Array[String]): Unit = {
    import java.awt.event.{ActionEvent,ComponentEvent}
    ActionEvent //使用ActionEvent
    ComponentEvent//使用ComponentEvent
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值