scala速通(精简版)

1.变量和常量

var name [:VariableType] = value // variable
val name [:ConstantType] = value // constant

1.声明变量时,类型可以省略

2.类型定义后就不能修改言

3.变量声明必须有初始值

4.变量,常量分别用var,val声明修饰

2.标识符命名规范

注释写法和Java一样

关键字Java有的scala都有且多了一些object,trait,with,implicit,match,yield,def ,val,var

3.Scala运算符

1.双等号,在scala中表示非空equals

2.如果非要比较内存地址使用eq //切忌,使用eq不要使用基本数据类型

3.scala中没有++等运算,没有三元运算符,其他等逻辑运算完全同Java

小结:Scala比较值相等 == 比较地址相等使用eq

4.Scala完全面向对象语言&&强数据类型语言

1.任何变量方法属性条件控制语句都有返回值

2.Unit表示一种返回值;( ); 和Java中void异曲同工

3.条件控制语句返回值取满足条件的最后一行代码作为返回,返回值类型取同父类节点

在这里插入图片描述

5.Scala循环

1.for循环

for (elem <- array) {			//直接 array.for回车即可;
  println(elem)
}

//添加循环守卫法

for (elem <- carray if elem%5==0 ) {
      println(elem)
}

2.while循环同Java,只是多了个do while

do{

  println("先打印")

}while(false)

6.函数式编程

1.scala可以在任意位置创建函数,万物皆对象,scala认为函数也是一种对象

2.可变函数 与python同,可变参数只能放到参数列表最后一项

//    2.关于可变参树    加上*就表示可变参数

def fun2(name: String*): Unit = {
  println(name)
}

fun2()
fun2("zhangsan")

3.默认参数

def fun2(name: String=“zhangsan”): Unit = {
  println(name)
}

4.函数式编程简化

return可省

逻辑代码只有一行大括号省略;

返回值可省

没有声明参数,可以省略形参列表; 调用时候也必须省;

若确定没有返回值 Unit = 可省;

7.柯里化

1.柯里化是一种不负责任的写法,传值没法传完,所以进行简化,将不想管的形参进行分离,设置多个形参列表

柯里化有多个形参列表,编译时,少形参不会报错,但是运行时,少了不行;

8.惰性函数

1.函数中lazy修饰的语句,lazy 懒惰,也就是这条语句 先不执行

9.Scala面向对象

1.scala函数也是一个对象

2.关于函数对象数据类型;函数形参无数个,但是函数对象形参最多22个

普通写法****

var f1:Function1[Integer,String] = fun02 _     //Integer表示函数形参的类型,String表示函数返回值类型

**简化写法 **

(String,Integer)=>Unit		//形参指向返回值类型,省略形参名

3.函数对象调用和函数调用

var f_obj = fun _
var f_value = fun()

例子

def test(f: (Int,Int)=>Int):Unit={
  val result = f(10, 20)
  println(result)
}

def diff(x:Int,y:Int):Int={
  x-y
}

调用

test(diff _)			//下划线可省

4.形参为函数对象的匿名写法

test(
  (x:Int,y:Int)=>{
    x+y
})

简化

test( (x:Int,y:Int) => x+y )
test( (x,y) => x+y )			//test定义时候,函数类型已经定义过了所以省略Int
test( _ + _ )						//按照顺序只执行一次		

嵌套函数不能下划线使用

test ( println (_) )

10.Scala包

1.package可以多次声明,和java不同

2.拥有上下级,也就是包的作用域

3.包可以独立成为一个对象 //存放工具类包对象中写的所有方法,同一包下都可以使用;

package object xxx{

}

4.import

java.util._取代 util.

花括号导入多个包

import java.util.{
List,Arrays,Map
}

屏蔽类

import java.sql.{Date=>_, _} 	//导入sql然后Date请走的意思Date=>_ ,_表示其他

起别名

import java.sql.{Date=>别名Date} 

11.Scala类&&伴生对象

1.存在一个类,存在一个对象,类和对象相互存在,互为伴生的关系。object修饰

2.伴生对象可以访问类中的私有属性方法等;甚至可以直接通过apply()构造实例

3.编译器动态识别apply(),所以可省,scala常见类设计为单例设计模式,然后构造实例通过伴生对象的apply()方法

4.Scala类中属性可以使用占位符,先不赋值;

var tag:Boolean =_

5.类中Bean规范

@BeanProperty

13权限控制

知识点概念
private
--同类访问

private[ package_boy ]
--包私有; 同类&&package_boy包下的所有类都可以访问

protected
--同类,或子类      

(default)(public)默认public
--公共访问

private
–同类访问

private[包名]
–包私有; 当前类随便访问,指定的这个包下的所有类随便访问

protected
–当前类,或子类

(default)(public)默认public
–公共访问

未完待续后续补上,感谢支持;

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值