1.变量
**
scala中的变量如何定义?
var 变量名=初始值 val 变量名 = 初始值
var 变量名:数据类型=初始值 val变量名:数据类型 = 初始值
package com.legendlee.valuable
object Demo01 {
def main(args: Array[String]): Unit = {
var num1=100
val num2=1000
// printf(num1)
// println(num1)
// println(num2)
num1=num1+10
// num2=num2+10 val定义的变量不可改变 (常量)
println(num1)
}
}
注意:var声明的变量可以修改,val声明的变量不能修改,即常量。
2.循环语句和条件语句
块表达式:可以将变量直接赋给块表达式(相当于一段代码块),其结果作为变量值返回
object Demo01 {
def main(args: Array[String]): Unit = {
var a = 10
var b = 20
//块表达式
val result = {
var num1 = a + b
var num2 = a - b
num2
}
println(result)
}
}
if条件表达式:可以将变量直接赋给条件表达式,其结果作为变量值返回
object Demo01 extends App{
var num=55
var result=if (num < 60) "不及格" else if (num<80) "一般" else if(num<90) "中上" else "优秀"
println(result)
}
for循环语句
可以用在什么场景之下?
for<-数组:表示遍历数组元素
yield关键字: 会把当前的元素记下来,保存在集合中,循环结束后将返回该集合
object Demo06 extends App{
var arrs=Array(1,2,3,4,5,6,7,8)
var result=for (i<-1 to 5) yield i
println(result)
}
输出结果为:
for<-表达式:
for(i <- 1 to 10)表示i从1到10,包含10
for(i<- 1 until 10)表示i从1到9,不包含10
需求:打印出1-10中能被3整除的数
package com.legendlee.forDemo
object Demo01 {
def main(args: Array[String]): Unit = {
for (i<- 1 until 10 if i%3==0){
print(i+"\t")
}
}
}
输出结果为:
for的嵌套循环:
一层控制外层循环,一层控制内层循环
案例:打印出99乘法表
首先,要实现的效果如图所示:
分析:
需要双层循环控制,一层控制行(i),一层控制列(j),那么,行和列之间的关系是怎样的?
i | j |
---|---|
1 | 1 |
2 | 2 |
… | … |
n | n |
当行数=列数的时候,换行。
外层循环控制行数,内层循环控制列数
package com.legendlee.forDemo
object Demo04 {
def main(args: Array[String]): Unit = {
for (i<- 1 until 10;j <- 1 until 10 if i>=j){//当行数大于等于列数的时候,将结果输出打印
print(j+"*"+i+"="+(i*j)+"\t")
if (i==j){//当行数=列数的时候,换行
println()
}
}
}
}
3.函数
首先,函数是什么就不说了。
我们只需要明白在scala中如何定义和使用函数。
1.函数的定义和使用
def 函数名(参数1:类型 , 参数2:类型 , …) : 返回值类型 ={
函数体代码实现
}
需求:定义一个计算两数之和的函数
package com.legendlee.function
object Demo01 {
def function1(num1: Int, num2: Int): Int = {
return num1+num2
}
def main(args: Array[String]): Unit = {
println(function1(10, 20))
}
}
当函数体中只有一行代码的时候可以简化下写法:
package com.legendlee.function
object Demo01 {
def function1(num1: Int, num2: Int): Int = num1+num2
def main(args: Array[String]): Unit = {
println(function1(10, 20))
}
}
2.函数中的参数
默认参数:
定义:在Scala中允许在定义函数时,给函数中的参数设定默认值。在调用函数时如没有给带有默认值的参数传值,则会使用函数的默认参数值
例子:
package com.legendlee.function
object Demo03 {
def function(name:String,sex:String="女"):Unit={
println("姓名: "+name+" 性别:"+sex)
}
def main(args: Array[String]): Unit = {
function("张三")
}
}
带名参数:
是什么?
一般情况下在函数调用时,函数的参数传递是按照函数定义时的参数顺序一个个传递。但是我们也可以通过指定函数参数名,并且不需要按照顺序向函数传递参数。
如何使用?
可变参数:
是什么?
传递的参数是可变的,大小不固定
如何定义?
通过在参数的类型之后放一个星号来设置可变参数(可重复的参数)。
例子:
package com.legendlee.function
object Demo05 {
def printStrings(strs:String*):Unit={//通过*号定义可变参数
// for (i <- 0 until strs.length ){
// println(strs(i))
// }
for(str<-strs){
println(str)
}
}
def main(args: Array[String]): Unit = {
printStrings("hadoop","Hbase","Hive","Spark")
}
}
scala中的匿名函数:
是什么?
首先,联想一下,java中的匿名函数是什么?
4.数组
1.在scala中是如何定义数组?
var 数组名:Array[数组类型]=new Array[数组类型](数组大小)
简化写法:
var 数组名=new Array[数组类型](数组大小)
var 数组名=Array(数组内容)
2.数组的分类
可变数组:数组长度和存储的元素可变
不可变数组:数组长度不可变,数组元素可变
3.数组的使用