千家信息网

好程序员大数据学习路线分享spark之Scala

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,好程序员大数据学习路线分享spark之Scala,基本语法:变量变量的定义:不可变:val a = 2 或者 val a : Int = 2 (指定了数据类型) lazy val a : Int =2
千家信息网最后更新 2025年01月31日好程序员大数据学习路线分享spark之Scala

好程序员大数据学习路线分享sparkScala,基本语法:

变量

变量的定义:不可变:val a = 2 或者 val a : Int = 2 (指定了数据类型) lazy val a : Int =2

可变:var a = 2 或者 var a : Int = 2(指定了数据类型)

def a = 2

定义变量不能1.以数字以及特殊符号(_除外)开头 2.以关键字(varvalclass等)开头

def定义的是??

var 编译后有set get 所以可以重新赋值

val 编译后只有get方法 所以不能再赋值了

lazy 惰性变量,只在该变量被调用的时候才实例化,而且后面只能跟val

def val 差不多 不能重新赋值 更多修饰方法

Scala变量的类型:Anyscala的顶级类型,Any下有AnyVal(值类型)和AnyRef(引用类型)两个子类

AnyVal : 它有9个类型,其中7个是指类型:Double Float Byte Int Short Long Char 和两个非值类型:Unit Boolean

AnyRef : 是引用类型,它的子类有:List Option 或者自定义的并继承它的class

所有的类型都需要首字母大写

Scala会自动推断类型

Scala数据类型可以从低到高转换 Byte-Short-Int-Long-Float-Double

Char-Int-Long-Float-Double

注意:scala内没有强转

操作符

Scala里没有操作符的概念,所谓的操作符其实都是方法

数学运算:+ - * / : % .+ ( ) 注:x+y x.+(y)等价

关系:< <= > >= ! != ==

位运算: | & ^

如果两个不一样类型的变量进行运算,最终结果的类型是大的那个类型

如果想要格式化输出:var x =5 var y = 5

var n =x + y

print(s"x+y=$n") 输出结果 x+y=10

当然也可以在结果前面加字符串"x+y"

条件表达式


这种打出来是空,因为else里不是一个值,而是一个赋值语句

正常应该是 var res = if(sex == 1){"男"}else{"女"}

因为大括号里只有一个'表达式',大括号可以省略

var res = if(sex == 1)"男"else"女"

for循环

for(i<- 1 to 10){println (i)} //打印1-10

for(i <- 1 until 10){println (i)} //打印1-9

val arr = Array("java","scala","python") //定义一个数组

for(i<- arr){println (i)} //打印数组内容

for(i <- 1 to 3 ;j <- 1 to 3 if(i != j)){println(i*10+j)} //相当于双层for循环

val arr =for(i <- 1 until 10) yield (i) //0-9循环出来后封装进arr集合

val arr =for(i <- 1 until 10) yield (i*10)

val res2 = for(i <- arr if i%2 == 0) yield i*100 //过滤

val arrf = bf.filter(_ %2==0).map(_ *100) //过滤 _ 是全部数据的意思

scala中不支持break语句,但在scala 2.8之后 可以利用Breaks方式来实现


方法

def m1(x : Int , y : Int ) : Int = {x + y} //三种声明方式

def m2(x:Int , y:Int) {print(x+y)}

def m3(x:Int , y:Int){x+y}

解释:m1是方法名 xyint型的参数 括号外的int是返回值类型 x+y是方法

调用:m1 (3,4)

函数

val f1 = (x:Int , y:Int) => x+y //声明

val f1 = (x:Int , y:Int) =>{

val sum = x+y

sum*100} //最后一句作为函数的返回值 函数没有返回值类型

回车之后会看到

f1: (Int, Int) => Int =

这里的function2中的2指的是参数的个数

调用:f1 (3,4) //与方法的调用一致

函数与方法的关系???

我们通过一个案例来探讨:

首先创建一个方法:def func (yAge:Int,mAge:Int):String={

val a : Boolean = yAge >= mAge

val str : String = if(a) "哥哥" else "弟弟"

str

}

我们发现这个条件可以做成一个函数:val m = ( yAge:Int , mAge:Int ) = >{yAge >= mAge}

我们可以调用函数:def func1 (yAge:Int,mAge:Int):String={

val a : Boolean = m(yAge,mAge)

val str : String = if(a) "哥哥" else "弟弟"

}

我们也可以把函数当做一个参数传入到方法中:

def func1(yAge:Int,mAge:Int,f:(Int,Int) =>Boolean):String={

var a= f(yAge,mAge) 或者var a :Boolean = f(yAge,mAge)

val res : String=if(a)"哥哥" else "弟弟"

res

}

调用: println(func1(18,20,m))


类型 方法 函数 变量 数据 两个 参数 哥哥 弟弟 括号 操作符 结果 循环 运算 只有 子类 开头 数组 方式 条件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 重庆工控软件开发定制 wifi网络安全类型可以更改吗 联想x3500m5服务器开机键 福建综合软件开发怎么样 软件开发属于国拨经费哪一类 数据库怎么采集应用日志 国家敏感时期网络安全预案 富数科技与网络安全 嵌入式软件开发创业什么意思 支付宝成都网络技术有限公司 软件开发sagb是什么 网络安全法执行情况 服务器查看端口 武汉家巨通软件开发有限公司 数据库喷码加工 各国的网络安全战略安排部署 软件企业购买服务器几年计提折旧 高清erp软件开发报价 用cmd查看数据库的用户名 聊天软件开发有哪些方面 青浦区数据库安防系统厂家资费 网络安全国家标准是什么 网络安全管理的发展趋势 飞鸿杯网络安全攻防赛 上海综合网络安全工程问答知识 爆裂魔女服务器维护咋回事 关于数据库的知识产权条约 软件开发管理工作职责 财务软件开发费怎么记账 南京大学银河软件开发中心
0