for遍历list scala_Scala(一)

本文详细介绍了Scala编程语言,包括其与Java的关系、类与对象的使用,重点讨论了变量和数据类型,特别是变量声明、类型推导、数据类型转换。文章还阐述了Scala的运算符、流程控制,特别是for循环的特性,如循环守卫、循环步长和模式匹配。此外,文章深入探讨了函数式编程的核心概念,如函数定义、参数、高阶函数、匿名函数以及函数的至简原则。最后,文章介绍了高阶函数的应用,如闭包、递归、控制抽象和惰性函数,展示了Scala强大的编程能力。
摘要由CSDN通过智能技术生成

01467eeb25a9c45f64c22d8526e4b700.png

一、Scala入门

1、Scala和Java关系

3c96b52c7d809b87058f265d35df8249.png

Scala在设计时,马丁·奥德斯参考了java的设计思想,可以说Scala是源于java,同时,他也加入了自己的思想,将函数式编程语言的特点融入到Java中,学习中需要搞清Scala和java的不同点,就可以快速入门

Scala源代码会被编异常Java字节码。然后运行早JVM上,并可以调用现有的JJava类库,实现两种语言的无缝对接。

2、class和object说明

Scala完全面向对象,故Scala去掉了java中非面向对象的元素,如Static关键字,void类型

scala无static关键字,由object实现类似静态方法的功能(类名,方法名)

class关键字和java中的class关键字作用相同,用来定义一个类

void对于无返回值的函数,scala定义其返回值类型为Unit类型

二、变量和数据类型(重点)

1、变量和常量

常量:在程序执行的过程中,其值不会被改变的变量

0)回顾:Java变量和常量语法

变量类型 变量名称 = 初始值 int a = 10

final常量类型 常量名称 = 初始值 final int b = 20

1)基本语法

var 变量名 [: 变量类型] = 初始值 var i:Int = 10

val 常量名 [: 常量类型] = 初始值 val j:Int = 20

注意:能用常量的地方不用变量

2)案例实操

(1)声明变量时,类型可以省略,编译器自动推导,即类型推导

(2)类型确定后,就不能修改,说明Scala是强数据类型语言。

(3)变量声明时,必须要有初始值

(4)在声明/定义一个变量时,可以使用var或者val来修饰,var修饰的变量可改变,val修饰的变量不可改。

2、标识符命名规范

1)命名规则

Scala中的标识符声明,基本和Java是一致的,但是细节上会有所变化,有以下四种规则:

(1)以字母或者下划线开头,后接字母、数字、下划线
(2)以操作符开头,且只包含操作符(+ - * / # !等)
(3)用反引号`....`包括的任意字符串,即使是Scala关键字(39个)也可以

3、字符串输出

基本语法
(1)字符串,通过+号连接
(2)printf用法:字符串,通过%传值。
(3)字符串模板(插值字符串):通过$获取变量值

4、键盘输入

基本语法

StdIn.readLine()、StdIn.readShort()、StdIn.readDouble()

5、数据类型

java数据类型

d3a062ed110214a5656280035b6889a1.png

scala数据类型

e693e54d1a9702c12185c664dde58f27.png

6、Unit类型,Null类型,Nothing类型

219d57f1d6ececbb3a826fbcecdd7ac0.png

(1)Unit类型用来标识过程,也就是没有明确返回值的函数。

(2)Null类只有一个实例对象,Null类似于Java中的null引用。Null可以赋值给任意引用类型(AnyRef),但是不能赋值给值类型(AnyVal)

(3)Nothing,可以作为没有正常返回值的方法的返回类型,非常直观的告诉你这个方法不会正常返回,而且由于Nothing是其他任意类型的子类,他还能跟要求返回值的方法兼容。

7、数值类型自动转换

a814e9466b8d61acad6a8c1bd4b219cf.png

(1)自动提升原则:有多种类型的数据混合运算时,系统首先自动将所有数据转换成精度大的那种数据类型,然后再进行计算。

(2)把精度大的数值类型赋值给精度小的数值类型时,就会报错,反之就会进行自动类型转换。

(3)(byte,short)和char之间不会相互自动转换。

(4)byte,short,char他们三者可以计算,在计算时首先转换为int类型。

8、强制类型转换

自动类型转换的逆过程,将精度大的数值类型转换为精度小的数值类型。使用时要加上强制转函数,但可能造成精度降低或溢出,格外要注意。

9、数值类型和String类型间转换

(1)基本类型转String类型(语法:将基本类型的值+"" 即可)

(2)String类型转基本数值类型(语法:s1.toInt、s1.toFloat、s1.toDouble、s1.toByte、s1.toLong、s1.toShort)

三、运算符

Scala运算符的使用和Java运算符的使用基本相同,只有个别细节上不同。

注意:Scala中没有++、--操作符,可以通过+=、-=来实现同样的效果;?:可以用if()…替换

Scala运算符本质:在Scala中其实是没有运算符的,所有运算符都是方法。

1)当调用对象的方法时,点.可以省略

2)如果函数参数只有一个,或者没有参数,()可以省略

四、流程控制

与java类似,在Scala中没有Switch,而是使用模式匹配来处理。模式匹配涉及到的知识点较为综合,因此我们放在后面讲解。

Scala也为for循环这一常见的控制结构

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值