Scala基础语法1
参考的视频教程见: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相关推荐
- Spark记录-Scala基础语法
如果您熟悉Java语言语法和编程,那么学习Scala将会很容易.Scala和Java之间最大的句法差异在于行结束字符的分号(;) 是可选的. 当编写Scala程序时,它可以被定义为通过调用彼此的方法进 ...
- scala函数式编程(二) scala基础语法介绍
上次我们介绍了函数式编程的好处,并使用scala写了一个小小的例子帮助大家理解,从这里开始我将真正开始介绍scala编程的一些内容. 这里会先重点介绍scala的一些语法.当然,这里是假设你有一些ja ...
- Scala基础语法学习
目录 一.变量 二.数据类型 三.scala中的条件表达式 四.循环 五.while循环 六.方法 6.函数 7.数组 (1).定长数组 (2).变长数组 (3).遍历数组 (4).数组常用操作 8. ...
- 【博学谷学习记录】超强总结,用心分享丨大数据超神之路(一):Scala基础语法副本
大数据开发基础 学习编程语言往往是我们开启学习之路的第一大步.大数据领域的很多框架都是基于Java语言开发的,而且各种框架也都提供了Java API来提供使用和操作接口,所以Java语言的学习逃 ...
- scala基础语法:for/while/do...while/
- 一天学完spark的Scala基础语法教程十三、文件IO操作(idea版本)
- 一天学完spark的Scala基础语法教程十、类和对象(idea版本)
- 一天学完spark的Scala基础语法教程九、迭代器(idea版本)
- 一天学完spark的Scala基础语法教程八、集合(idea版本)
最新文章
- 定制简单的Linux系统
- 用C语言解“逆序的三位数”问题
- unity 控制点 贝塞尔曲线_在Unity中使用贝塞尔曲线
- 数据库优化实例以及优化的小技巧
- hibernate自定义_如何自定义Hibernate脏检查机制
- 50-20-200-配置-checkpoint配置
- linux虚拟化管理平台,linux虚拟化管理
- java图表标题_Java 创建Excel图表
- windows 2008 R2 如何更新SID
- linux mysql 5.7.13 安装_mysql 5.7.13 安装配置方法图文教程(linux)
- 打印控件的 frame
- 元器件保护必备知识——静电防护
- Python函数的定义使用、return返回值、参数传递方式、结合字典列表循环的使用以及将函数存储在模块中
- 突发!图森未来CEO侯晓迪被罢免,公司疑遭SEC、FBI联手调查,市值一夜砍半
- X006---交叉表(Cross Tab)和转置(Transpose)
- pyqt5 selenium 等待元素出现 visibility_of_element_located
- 服务器怎么分盘?Windows系统服务器分盘操作方法
- Can't update table 'psxt_user' in stored function/trigger because it is already used by statement wh
- 管理系统之KTV点歌系统
- 调试WebService的一个很好的工具