Scala基础(一)

这篇博客详细介绍了Scala的基础语法,包括Scala与Java的关系、安装、解释器的使用、变量声明、数据类型与操作符、函数调用及apply()函数。接着讨论了条件控制与循环,如if表达式、块表达式、输入输出、循环结构。还涵盖了函数入门,包括函数定义、参数、递归、过程和异常处理。此外,讲解了数组、ArrayBuffer、Map和Tuple的使用,包括遍历、操作和转换方法。文章最后给出了几个算法案例,展示了如何在Scala中处理数组和Map。
摘要由CSDN通过智能技术生成

一、基础语法

1、Scala与Java的关系

  • Scala是基于Java虚拟机,也就是JVM的一门编程语言
  • 所以Scala的代码,都必须经过编译为字节码,然后交由Java虚拟机运行
  • Scala和Java是可以无缝操作的,Scala可以任意调用Java的代码

2、安装

  • 官方下载: http://www.scala-lang.org/download/
  • 在windows命令行内即可直接键入scala,打开scala命令行,进行scala编程。
    在这里插入图片描述

3、解释器

  • REPL: Read(取值)->Evaluation(求值)->Print(打印)->Loop(循环)。
    Scala解释器也被称为REPL,会快速编译Scala代码为字节码,然后交给JVM执行。
  • 计算表达式: 在Scala>命令行内,键入Scala代码,解释器会直接返回结果,如果没有指定变量来存放这个值,默认值为res,而且会显示结果的数据类型,比如Int、Double、String等。
    在这里插入图片描述
  • 内置变量: 在后面可以继续使用res这个变量,以及它存放的值。
    在这里插入图片描述
  • 自动补全: Tab键

4、声明变量

1)val变量(常量)

可以声明变量用来存放表达式的计算结果,值无法改变,但是可以继续使用
在这里插入图片描述

2)var变量(变量)

声明变量,值可以改变,通常不建议使用
在这里插入图片描述
在Java的大型复杂系统的设计和开发中,也使用了类似的特性,我们通常会将传递给其他模块 / 组件 / 服务的对象,设计成不可变类(Immutable Class)。在里面也会使用java的常量定义,比如final,阻止变量的值被改变。从而提高系统的健壮性(robust,鲁棒性)和安全性。

3)指定类型

声明变量可以手动指定类型,如果不指定会自动根据值进行类的推断
在这里插入图片描述

4)声明多个变量

在这里插入图片描述

5、数据类型与操作符

1)基本数据类型

Byte、Char、Short、Int、Long、Float、Double、Boolean

  • Scala与Java的基本数据类型大致相同,但是没有基本数据类型与包装类型的概念,统一都是类。
  • Scala自己会负责基本数据类型和引用类型的转换操作
  • 使用以上类型,直接就可以调用大量函数

2)类型的加强板类型

  • Scala类使用很多加强类给数据类型增加了上百种增强的功能或函数。
  • String类通过StringOps类增强了大量的函数

#例:取相同的字母
在这里插入图片描述

  • Scala还提供了RichInt、RichDouble、RichChar等类型,RichInt就提供了to函数,1.to(10),此处Int先隐式转换为RichInt,然后再调用其to函数

3)基本操作符

  • scala的算术操作符与java的算术操作符也没有什么区别,比如+、-、*、/、%等,以及&、|、^、>>、<<等。
  • 但是,在scala中,这些操作符其实是数据类型的函数,比如1 + 1,可以写做1.+(1)
    在这里插入图片描述
  • scala中没有提供++、–操作符,我们只能使用+和-,比如counter = 1,counter++是错误的,必须写做counter += 1.

6、函数调用与apply()函数

1)函数调用方式

在这里插入图片描述
如果调用时,不需要传递参数,则Scala允许调用时省略括号
在这里插入图片描述

2)apply函数

  • Scala中的apply函数是非常特殊的一种函数,在Scala的object中,可以声明apply函数。而使用“类名()”的形式,其实就是“类名.apply()”的一种缩写。通常使用这种方式来构造类的对象,而不是使用“new 类名()”的方式。
  • 例如,“Hello World”(6),因为在StringOps类中有def apply(n: Int): Char的函数定义,所以"Hello World"(6),实际上是"Hello World".apply(6)的缩写。
    在这里插入图片描述
  • 例如,Array(1, 2, 3, 4),实际上是用Array object的apply()函数来创建Array类的实例,也就是一个数组。
  • 在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值