1. 变量定义与初始化

package com.lineshen.chapter2object variable {def main(args: Array[String]): Unit = {val age: Int = 10val sal: Double = 10.9val name: String = "lienshen"val isPass: Boolean = trueval score: Float = 99.55fprintln(s"${name} ${age} ${score} ${sal}")}
}

变量类型可以写可以不写,与golang不同的是,定义类型用 [:type];

当然,scala支持变量类型的推导;

变量申请时,请注意初始化,这一点与java很不同;

val修饰的变量编译之后等于加上了final,保证线程安全;

类型判断与Java一样用 variableName.theInstanceof[variableType];

2.数据类型

Scala与Java有着相同的数据类型,在Scala中数据类型都是对象,也就是说Scala没有java中的原生类型。

Scala的数据类型分为两大类:AnyVal(值类型)和AnyRef(引用类型),注意:不管是AnyVal还是AnyRef都是对象。因此,他有大量的方法可以直接调用。

package com.lineshen.chapter2object removePara {def main(args: Array[String]): Unit = {sayHi()sayHi}def sayHi() : Unit ={println("Hi, scala")}
}>>Hi, scala
>>Hi, scala

当函数没有形参时,函数的调用可以免去括号(),真的很神奇!

小结:

1. 在Scala中有一个根类Any,是所有数据类型的父类

2. Null类型是scala的特别数据类型,只有一个值null;他是bottom class,是所有anyRef类型的子类

3. Nothing类型也是bottom class,它是所有数据类型对应类的子类,一般抛出异常时最常使用。

4. Scala中低精度向高精度的值自动隐式转换

5. Unit表示无值,与其它语言中的void 等同,用作不反悔任何结果的方法的结果类型。Unit只是一个实例值,写成();

package com.lineshen.chapter2object nothingCTest {def main(args: Array[String]): Unit = {sayHello}// 异常中断:即当我们nothing作为返回值,就明确说明该方法没有正常返回值def sayHello() :Nothing = {throw  new Exception("抛出异常")}
}
val floatVal : Float = 1.1 // 错误:Double无法向Float转换
val doubleVal = 1.2f //正确:Float可以向Double转换

3. 基本数据类型与String之间的转换

// 基本数据类型 -> String
val temp :Int = 1024
val str = temp + ""
// String -> 基本数据类型
str.toInt()
str.toFloat()
str.toDouble()
str.toByte()

4. 分支与循环

package com.lineshen.chapter4import scala.io.StdInobject ifelseDemo {def main(args: Array[String]): Unit = {println("your name:")val name = StdIn.readLine()if (name == "lienshen")println("hello " + name)elseprintln("you are " + name)}
}

在scala中没有swich多分支设计,采用模板match-case,功能十分强大。

关于for循环,变动很大,成为for推导式。

package com.lineshen.chapter4object forDemo {def main(args: Array[String]): Unit = {for(i <- 1 to 5) {println("hello, Tsinghua University " + i)}
}
}
package com.lineshen.chapter4object forDemo {def main(args: Array[String]): Unit = {// 支持对集合的遍历,和for range很像val list = List("hello", "tsinghua", "hello", "lineshen")for (i <- list) {println(i)}}
}

循环守卫,也叫循环保护式。类似于continue,不过scala把continue干掉了(实质是把for循环与判断偶合在了一起,简化代码

package com.lineshen.chapter4object forDemo {def main(args: Array[String]): Unit = {// 支持对集合的遍历,和for range很像val list = List("hello", "tsinghua", "hello", "lineshen")for (i <- list if i == "lineshen") {println(i)}}
}

for引入新变量(实质是for循环与遍历变量的耦合)

package com.lineshen.chapter4object forDemo {def main(args: Array[String]): Unit = {// 支持对集合的遍历,和for range很像val list = List("hello", "tsinghua", "hello", "lineshen")for (i <- list; j = i + " i love you") {println(j)}}
}

for简化循环嵌套(实质是简画代码长度,但是不好写业务逻辑)

package com.lineshen.chapter4object forDemo {def main(args: Array[String]): Unit = {// 支持对集合的遍历,和for range很像val list_i = List("hello", "tsinghua", "hello", "lineshen")val list_j = List(" happy")for (i <- list_i; j <- list_j) {println(i+j)}}
}

for循环返回值yield (遍历过程中把结果保存在Vector中,并返回到变量中);主要用于集合中的数据单元处理

package com.lineshen.chapter4object forDemo {def main(args: Array[String]): Unit = {// 支持对集合的遍历,和for range很像val list = List("hello", "tsinghua", "hello", "lineshen")val res = for (i <- list) yield iprintln(res)}
}
package com.lineshen.chapter4object forDemo {def main(args: Array[String]): Unit = {// 支持对集合的遍历,和for range很像val list = List("hello", "tsinghua", "hello", "lineshen")val res = for (i <- list) yield if (i == "lineshen") i + " happy"println(res)}
}>> List((), (), (), lineshen happy)

for循环的步长控制(可以用守卫,可以用range)

package com.lineshen.chapter4object forDemo {def main(args: Array[String]): Unit = {// 支持对集合的遍历,和for range很像val list = List("hello", "tsinghua", "hello", "lineshen")val res = for (i <- Range(0,3,2)) yield list(i)println(res)}
}>> Vector(hello, hello)

for循环不支持break关键字,同样采用循环守卫进行处理。

Scala提供了while循环,但是不支持采用while循环。

[scala-spark]3. 变量 数据类型 分支与循环相关推荐

  1. python里、能用分支结构写出循环的算法吗_python变量运算符分支结构循环结构及例题...

    第一周总结复习 python的[官方网站](http://python.org) ##变量 ''' 1.变量的作用:变量是数据的载体 2.变量的命名:字母数字下划线开头,不能用数字开头 不能用关键字, ...

  2. Scala 学习入门到掌握-分支和循环[5]

    示例一:循环中断的两种方法 object Homework01 {def main(args: Array[String]): Unit = {/*100以内的数求和,求出当和 第一次大于20的当前数 ...

  3. Scale 编程基础 A(变量声明、基本数据类型、运算符、文件读写、分支与循环、数据结构)

    Scala: 变量声明.基本数据类型.运算符.文件读写.分支与循环.数据结构(List/Tuple/Range/Vector/Set/Map)与迭代器 变量声明 val:是不可变的,在声明时就必须被初 ...

  4. Scala 入门1(变量、分支循环、函数)

    文章目录 1. var 变量,val常量 2. 分支.循环 3. 函数.方法 4. 闭包 学自 https://www.runoob.com/scala/scala-tutorial.html 1. ...

  5. 九阴真经--scala入门+变量+数据类型+运算符

    一.入门 Spark由scala编写,为后续学习Spark打基础 scala基于java进行开发,把scala代码编译成class文件,运作在jvm上 scala是一种多范式.支持面向对象和函数式编程 ...

  6. Matlab变量、分支语句和循环语句

    Matlab变量.分支语句和循环语句 一.Matlab的变量 1.变量的命名 Matlab的变量名由数字.字母和下划线组成,可是仅仅能由字母开头.大写和小写敏感,最大长度为63个字符.不能使用Matl ...

  7. 查看scala变量数据类型_Scala文字,变量和数据类型| Scala编程教程

    查看scala变量数据类型 1)Scala数据类型 (1) Scala Data Types) Scala has the same set of data types as in Java. The ...

  8. C语言程序设计 翁恺 中M2020春C入门练习第I段——变量、表达式、分支、循环 (2021/09/25 更新:AC代码 翻新至78题)

    入门练习 第一段:变量.表达式.分支.循环 1. 重要的话说三遍 2. I Love GPLT 3. 输出带框文字 4. 输出菱形图案 5. 输出倒三角图案 6. 厘米换算英尺英寸 7. 计算摄氏温度 ...

  9. Python|Git remote|hosts|PyCharm常用快捷键|变量转换|命名|类型|运算符|分支|调整tab|循环|语言基础50课:学习记录(1)-项目简介及变量、条件及循环

    目录 系列目录 均引自原项目地址: Python语言基础50课简介及相关网址 修改 hosts 文件 解决 GitHub 上图片无法显示 视频资源 Python语言基础50课代码等文件资源 表1. P ...

最新文章

  1. tableau应用实战案例(三)-如何用Tableau制作网络关系图
  2. 腾讯云上午突发故障 称运营商光缆中断所致
  3. 神策数据司沛:加速车企数字化转型,搭建高质量用户数据平台实战
  4. 深入理解Kubernetes容器网络
  5. 微服务架构基础之Service Mesh
  6. Pandas中的 transform() 结合 groupby() 用法示例
  7. 洛谷P2884 [USACO07MAR]Monthly Expense S
  8. 2个字段并在一次插入一个字段里面_elasticsearch外用与内观(二)-当插入文档时,elasticsearch都在做什么...
  9. 清华计算机系和交叉信息学院,清华大学交叉信息研究院与计算机科学与技术系哪个..._考研_帮考网...
  10. pycharm 如何自动添加头注释,比如时间,作者信息等
  11. 重拾阅读--朝花夕拾啊
  12. NLP自然语言处理-Pytorch情感分析简介
  13. java基础中如何中断/阻塞线程和使用中断
  14. Spring整合MyBatis原理之MapperScannerConfigurer(一)
  15. eclipse 重构功能。
  16. Linux上matlab安装过程,Linux matlab 2010a 下载与安装过程
  17. 文本特征提取方法介绍
  18. PPT自动添加进度条与页码
  19. 蓝牙音频编码简介 - SBC、AAC、AptX、LDAC、LHDC
  20. golang php mysql性能_golang vs dlang vs nodejs vs php 性能对比较量

热门文章

  1. WCF 客户端代理生成 通过SvcUtil.exe
  2. Centos6.5_x86_64 编译安装Subversion-1.8.5
  3. [原创] JS 继承详解。欢迎拍砖
  4. 走进移动web开发的四大框架
  5. 第九章 思科竞争谋略
  6. SQLServer2008 视图创建实例
  7. 个人数据上云怎么办?树莓派+kodexplorer为你造云
  8. m函数与m文件的命名
  9. mysql:Failed to read auto-increment value from storage engine
  10. Silverlight控件-Slider