
scala变量和数据类型
发布日期:2021-05-10 03:44:33
浏览次数:21
分类:精选文章
本文共 1827 字,大约阅读时间需要 6 分钟。
Scala语言概述及相关知识
面向对象特性
- 每个值都是对象: Scala强调一切都是对象,包括基础类型。
- 基于类和特征的描述: 类定义对象的数据类型和行为,特征(Trait)提供混合式继承。
- 支持函数式编程: Scala的函数式特性使其适合处理结构化数据和并发任务,每个函数都是一个值。高阶函数、柯里化、样例类(Case Class)和模式匹配是其核心功能。
- 静态类型语言: scalar resembled Ot-Bootstrap时,数型安全是其强项,可通过静态类型检查消除潜在错误。
- 高扩展性: 隐式类和字符串插值增强了代码的灵活性和可读性。
代码规范
- 注释:与Java一致,简洁明了。
- 编码习惯:使用Tab进行缩进,确保一行不超过80字符,需熟练掌握诸如Ctrl+Alt+L等格式化快捷键。
- 语法要求:运算符两边会议议,注重代码的可读性。
变量与常量
- 变量:可以被修改的值,使用
var
声明,例如:var a: Int = 10
- 常量:值在执行过程中不变,使用
val
,如:val b: Int = 5
- 选择使用:在可变性不影响性能或正确性的情况下,优先使用常量(val)以提高安全性。
Scala关键字
- 包含控制结构、修饰符等常用词汇,需熟悉其语义和用法。
数据类型层次结构
- Any:UMP类型,可作为所有类型的超类。
- AnyVal:值的类型,可用于原始类型如Int、String等。
- AnyRef:引用类型,对应Java的Object。
- Unit:无值类型,用于无返回值操作。
- Nothing:所有类型的下层类型,处理不可达成的情况。
- Null:表示空引用,需谨慎使用。
字符串插值
- s插值器:支持变量和表达式插入字符中,示例如:
val name = "tom"println(s"hello, $name") // 输出: hello, tom
- f插值器:强制格式化,用于特定格式需求,例如:
val height = 1.9dval name = "tom"println(f"$name%s是$height%2.3f米") // 输出: tom是1.900米
- raw插值器:保留原始格式,示例如:
println(raw"a\nb") // 输出: a\nb
流程控制
- if-else:处理条件逻辑:
val a = 10if (a > 5) { println("大于五")} else if (a ==5) { println("等于五")} else { println("小于五")}
- 单行表达式:可省略花括号,终止表达式作为返回值:
val b = if (a == 10) a + 1 else a
- 代码块:可以用{}包裹,代码块返回值为最后一个表达式的结果:
val x = 10val y = { println("代码块执行") x + 5}
循环控制
- while和do-while:用于基于条件的循环。
- for循环:双闭区间
to
(包括右端点)和左闭右开until
:for (i <- 1 to 10) { println(i)}for (i <- 1 until 10) { println(i)}
- break和return:使用
Breaks
控制台后可 Unsure la in循环中提前退出。 - 中断控制:允许在循环中停止,提升性能和可维护性。
- for的多条件和返回值:结合多个条件和yield,用于生成可迭代的集合。
数组、元组、集合
- 数组:
// 创建方式val s1 = new Array[String](3)s1(0) = "wanqing"s1(1) = "zhaoqi"s1(2) = "wangcheng"val s2 = Array("aaa", "bbb", "ccc")val s3 = Array.range(1, 10, 2) // 1,3,5,7,9
- 元组:多类型存储,下标访问:
val tp1 = ("mike", 1, "zzzz")val name: String = tp1._1 // mike
- 集合: 依赖库如
scala.collection
,用于高效存储和操作,常用集合包括Set、List、Map等。
通过实践以上知识,我能够逐步掌握Scala的核心要素,并结合实际项目,充分发挥其强大功能。
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年05月07日 10时54分51秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
libvirtd:内部错误:Failed to apply firewall rule
2019-03-13
优先级队列2
2019-03-13
TiKV 源码解析系列文章(十三)MVCC 数据读取
2019-03-13
1900分图论 : 1183E1 LCA + Kruskal
2019-03-13
(建议收藏)计算机网络:传输层概述、UDP协议与可靠传输协议习题解析与拓展
2019-03-13
Android 开发常用的工具类(更新ing)
2019-03-13
EasyUI的简单介绍
2019-03-13
初次安装webpack之后,提示安装webpack-cli
2019-03-13
java中带参数的try(){}语法——关闭资源
2019-03-13
kafka+storm+hbase整合试验(Wordcount)
2019-03-14
Hbase压力测试
2019-03-14
StreamReader & StreamWriter
2019-03-14
C#中的类、方法和属性
2019-03-14
Python爬取清朝末年医书:《醉花窗医案》,看看病症情况
2019-03-14
Python爬虫训练:爬取酷燃网视频数据
2019-03-14
Python数据分析入门(十九):绘制散点图
2019-03-14
C++版浙大PAT乙级1069(20分)测试点3答案错误解决方法
2019-03-14
浏览器刷新页面
2019-03-14