参考的视频教程见:https://www.bilibili.com/video/av33447780?p=34

Scala 和 Java 一样,有7中数值类型Byte、Char、Short、Int、Long、Float 和 Double(无包装类型)和 Boolean、Unit类型。

注意:Unit表示无值,和其他语言中void一样。用作不返回任何结果的方法的结果类型。Unit只有一个是实例值,写成().

Any类为所有类型的祖先,相当于Java类型的object对象。

//变量的定义
//    /**
//     * 可以是var 和val 修饰
//     * var 修饰的可以改,val 不可以,相当于java 中final 修饰的变量
//     *
//     * var |val 变量名称(:类型) = 值
//     *
//     * Unit 数据类型相当于java中void 关键字,但在scala中它的表现形式为()
//     *
//     */

例如:

val a = "laolao"

val a:Int = 2

val s = println("hello")      //s的类型就是Unit,println没有返回值

//字符串的格式化输出

 val name = "lisi"
//    var age = 18
//    //普通输出
//    println("name = "+ name,"age = "+age) //这里加逗号输出会有一对括弧括起来
//    println("name = "+ name + "age =" + age)
//    //文字‘f’插值器允许创建一个格式化的字符串,类似于C语言的printf
//    //使用'f'插值器时,所有变量引用都应该是printf样式格式说明符,如%d %f %c等
//    //这里$name%s打印String变量James 和 $height%2.2f打印浮点值1.90
//    println(f"姓名:$name 年龄:$age")  //println 打印有换行
//    printf("姓名:%s,年龄:%d",name,age)//没有换行
//
//    //‘s’允许在处理字符串时直接使用变量
//    //在println语句中将String变量($name)附加到普通字符串中
//    println (s"name = $name,age = $age")
//    //字符串插入器还可以处理任意表达式
//    //使用‘$’字符串插入器处理具有任意表达式(${1 + 1})的字符串(1+1)的以下代码片段
//    //任何表达式都可以嵌入到${}中
//    println(s"1 + 1 = ${1+1}")
//    val stu = new day01.Student("wang", 18)
//    println(s"name = ${stu.name }")

条件表达式

//条件表达式if else 的用法
//    //有返回值,返回最后一行的代码
//    val i: Int = 12
//    if(i>10) i else 0 //相当于下面
//    val s = if(i > 10)
//            { i
//              100   //返回这个100
//            }
//            else
//              0
//    val r = if(i < 8) i       //else 没有写,编译器会自动推测出你什么都没有返回,就是Unit 类型
//    val r1 = if(r < 8) i else "xx00"  //r1 的类型为Any 类型,因为String为AnyRef类型,而Int为AnyVal 类型
//                                      //AnyRef 和 AnyVal 的父类 为Any 类型

for循环的使用

//for 循环没有返回值,要想有返回值用yield 关键字
val arr = Array(1, 2, 3, 4)
//
//    for(ele <- arr)
//      println(ele)
//    //用下标来遍历
//    val element = Array(0,1,2,3)
//    for(ele <-element)
//      println(arr(ele))
//要是给了一个你不知道多少元素的数组你怎么遍历呢? to 方法(左闭右闭),until 方法(左闭右开)
//    for(ele <- 0 until 4)
//      println(arr(ele))
//    for(ele <- 0 to 3)
//      println(arr(ele))
//    for(ele <- 0 until arr.length)
//      println(arr(ele))
//    //for循环中还可以增加守卫
//    for(ele <- arr; if ele %2 == 0) println(ele)  //还可以吧分号去掉
//    for(ele <- arr if ele % 2 == 0) println(ele)
//    //双层for 循环
//    for(i <- 1 to 3; j <- 1 to 3 if i!=j) println(10 * i + j) //双层for循环中不可以吧中间的分号去掉
//返回值 yield 它会返回一个新的集合
val r1 = for (ele <- arr; if ele % 2 == 0) yield ele
println(r1.length)

运算符/运算符重载

Scala中的+号可不是一个运算符,而是一个方法。

//    Scala 中的+-/*等操作符的作用与Java一样,位操作符也一样,只是有一点特别的,这些操作符实际上是方法
//    a + b是 a.+(b)方法的简写
//    arr map(x => x) 是arr.map(x => x)的简写

方法的定义与调用

/**** 定义方法及调用* 格式:def methodName([list of parameters]):[return type] = {}* 如果不使用等号和方法体,则隐式声明抽象方法* def add(a: Int, b: Int):Int = a + b  //:Int 也可以省略不写,编译器自己可以推测* add(3,5)* 也可以定义不带返回值的方法 : def sayHello = println("hello")* 调用: 直接sayHello 不可以sayHello()* 也可以这样定义: def sayHello() = println("hello")* 调用: sayHello 或者 sayHello()*/
/**** 方法如何转换为函数呢? 如add方法: add _* 方法名 + 空格 + 下划线* 转化的函数的调用:此时的函数是没有名字的*/
函数的定义/**** 函数的定义:* 定义方式一: val f1 = (x: Int ,y: Int) => x + y* 对应的函数签名为:f1: (Int ,Int) => Int = <function2> 2 代表有两个参数* 定义方式二: val f2:(Int ,Int) => Int = (x,y) => x + y* 对应的函数签名为:f2: (Int ,Int) => Int = <function2>* 例如: val ff1 = (name: String) => println(name)*       val ff2: (String) =>Unit = a =>println(a)* 下面为没有任何参数的函数,函数的返回类型为Int* 例:val f3:() => Int = () => 1* 签名为: f3: () =>Int = <function0>* 在交互式窗口中,比如定义了一个数组,数组下面有很多方法,例如arr.+(不是要加+号)制表符可以查看底下所有方法* 要是你想看map方法,arr.map + 制表符*/

Scala基础语法1相关推荐

  1. Spark记录-Scala基础语法

    如果您熟悉Java语言语法和编程,那么学习Scala将会很容易.Scala和Java之间最大的句法差异在于行结束字符的分号(;) 是可选的. 当编写Scala程序时,它可以被定义为通过调用彼此的方法进 ...

  2. scala函数式编程(二) scala基础语法介绍

    上次我们介绍了函数式编程的好处,并使用scala写了一个小小的例子帮助大家理解,从这里开始我将真正开始介绍scala编程的一些内容. 这里会先重点介绍scala的一些语法.当然,这里是假设你有一些ja ...

  3. Scala基础语法学习

    目录 一.变量 二.数据类型 三.scala中的条件表达式 四.循环 五.while循环 六.方法 6.函数 7.数组 (1).定长数组 (2).变长数组 (3).遍历数组 (4).数组常用操作 8. ...

  4. 【博学谷学习记录】超强总结,用心分享丨大数据超神之路(一):Scala基础语法副本

    大数据开发基础    学习编程语言往往是我们开启学习之路的第一大步.大数据领域的很多框架都是基于Java语言开发的,而且各种框架也都提供了Java API来提供使用和操作接口,所以Java语言的学习逃 ...

  5. scala基础语法:for/while/do...while/

  6. 一天学完spark的Scala基础语法教程十三、文件IO操作(idea版本)

  7. 一天学完spark的Scala基础语法教程十、类和对象(idea版本)

  8. 一天学完spark的Scala基础语法教程九、迭代器(idea版本)

  9. 一天学完spark的Scala基础语法教程八、集合(idea版本)

最新文章

  1. 定制简单的Linux系统
  2. 用C语言解“逆序的三位数”问题
  3. unity 控制点 贝塞尔曲线_在Unity中使用贝塞尔曲线
  4. 数据库优化实例以及优化的小技巧
  5. hibernate自定义_如何自定义Hibernate脏检查机制
  6. 50-20-200-配置-checkpoint配置
  7. linux虚拟化管理平台,linux虚拟化管理
  8. java图表标题_Java 创建Excel图表
  9. windows 2008 R2 如何更新SID
  10. linux mysql 5.7.13 安装_mysql 5.7.13 安装配置方法图文教程(linux)
  11. 打印控件的 frame
  12. 元器件保护必备知识——静电防护
  13. Python函数的定义使用、return返回值、参数传递方式、结合字典列表循环的使用以及将函数存储在模块中
  14. 突发!图森未来CEO侯晓迪被罢免,公司疑遭SEC、FBI联手调查,市值一夜砍半
  15. X006---交叉表(Cross Tab)和转置(Transpose)
  16. pyqt5 selenium 等待元素出现 visibility_of_element_located
  17. 服务器怎么分盘?Windows系统服务器分盘操作方法
  18. Can't update table 'psxt_user' in stored function/trigger because it is already used by statement wh
  19. 管理系统之KTV点歌系统
  20. 调试WebService的一个很好的工具

热门文章

  1. uniapp 自定义图标icon
  2. FL Studio2020中文版下载安装激活教程及优缺点介绍
  3. docker磁盘清理
  4. 揪出占用电脑C盘的元凶“微信”,立马清爽了
  5. TeamViewer和向日葵远控软件的个人使用感觉
  6. 趣味端午节,我的端午互动小平台
  7. 无题(2012.1.8)
  8. 阿里云物联网平台测评:以温度报警器开发为例
  9. 深度盘点:整理100个 Pandas 常用函数
  10. App地推活动怎么做才能事半功倍