scala
scala的基础学习
gdgylpc
数据开发工程师一枚
展开
-
1.开始
开始什么是ScalaScala是一门以Java虚拟机为运行环境的静态类型编程语言Scala是一门多范式的编程语言,支持面向对象和函数式编程Scala的源代码会被翻译成java字节码,然后运行在JVM之上。并可以调用现有的java类库简洁高效Scala源于Java,学好java有利于学习ScalaScala的伴生类和伴生对象package cn.lpc// Scala是完全面...原创 2020-01-08 05:58:57 · 81 阅读 · 0 评论 -
2.变量常量
变量和常量变量定义定义方式scala===>var i : Int = 10java===>Int i = 10var 表示变量,val 表示不可变变量。声明变量时,类型可以省略,编译器自动推导,即类型推导类型确定后,就不能修改,说明Scala是强数据类型语言。变量声明时,必须要有初始值在声明/定义一个变量时,可以使用var或者val来修饰,var修饰的变量可改变,...原创 2019-12-24 11:15:01 · 86 阅读 · 0 评论 -
3.Scala运算符
Scala运算符算术运算符 + - * / %与java一致关系运算符!= < > <= >=与java一致==在除字符串以外的情形与java一致。在scala中,字符串的"=="比较的是两个字符串的内容是否相等,而.eq()比较的是两个字符串对象的地址是否相等object Scala11_operator { def main(args...原创 2019-12-24 11:15:01 · 187 阅读 · 0 评论 -
4.流程控制
流程控制分支控制if (条件表达式){ 执行代码块}if (条件表达式){ 执行代码块}else{ 执行代码块}分支语句的返回值Scala中if else表达式其实是有返回值的,具体返回值取决于满足条件的代码体的最后一行内容。如果多个判断条件下返回值类型不一致,取它们共同的祖先类型 var s : String =if (age <18) ...原创 2019-12-26 09:32:59 · 140 阅读 · 1 评论 -
5.函数函数一切都是函数
函数函数函数基础在Scala中,Scala是一个完全的函数编程语言,因此在Scala中一切皆是函数,在类中的函数就是方法,Scala的语法灵活,可以在任意的语法结构嵌套语法结构,函数没有重载和重写的概念,因此不能有同名函数,但是方法可以重写 def test:Unit ={ println("fds") } // 调...原创 2019-12-27 11:09:28 · 309 阅读 · 0 评论 -
6.函数柯里化
函数柯里化把一个参数列表的多个参数,变成多个参数列表,在实现时利用了闭包:如果一个函数,访问到了它的局部变量的值,那么这个函数和它所处的环境称之为闭包...原创 2019-12-27 11:09:28 · 87 阅读 · 0 评论 -
7.控制函数+递归
控制函数+递归递归// 递归在函数是函数式编程中最常见的算法,其包含三个主要成分// 1. 函数调用自身// 2. 函数有跳出递归的逻辑// 3. 递归调用时应有规律// 递归的一般写法 def test(num : Int) : Int = { if ( num == 1) { 1 }else{ ...原创 2020-01-03 13:00:39 · 254 阅读 · 0 评论 -
8.Scala包
Scala中的包package 包名.类名Scala中的包的基本语法与java一致,其包的作用也与java一致,但是在功能上有更多的扩展Scala中包的作用当类很多时可以对类进行管理区分相同名字的类控制访问的范围Scala中包的扩展功能类所在的路径和包没有关联例如可以在file目录下构建cm.lpc.memory包package 关键字可以声明多次package...原创 2019-12-27 13:27:59 · 102 阅读 · 0 评论 -
10.scla定义类
Scala定义类和方法定义类[权限] class 类名[(参数列表)]{ 类体}在scala中一个文件中可以定义多个类,这多个类都是publicScala万物皆对象,万物皆函数声明类等同于声明一个函数当我们构建对象时,类的主体内容会执行,完成类的初始化object Scala_06Object { def main(args: Array[String]): Un...原创 2019-12-27 13:27:59 · 166 阅读 · 0 评论 -
11.Scala属性和访问权限
Scala属性和访问权限在类中声明的变量就是属性基本语法[修饰符] var|val 属性名称 [:类型] = 属性值在scala中,当使用var声明了一个属性时,scala在编译时会自动为该属性构造类似set和get方法(名字不符合javabean规范)。一下是反编译的源码public class User{ private String name = "zhangsan...原创 2019-12-27 13:27:59 · 696 阅读 · 0 评论 -
12.Sclala创建对象
object Scala_06Object { def main(args: Array[String]): Unit = { val user01 = new User07(3) val user02 = new User07("asd") }}// Scala中的构造方法分为两大类:主构造方法,辅助构造方法// 在类名后...原创 2019-12-27 13:27:59 · 153 阅读 · 0 评论 -
13.Scala继承和封装
继承和封装class 子类名 extends 父类名 { 类体 }(1)子类继承父类的属性和方法。(和Java一样)(2)Scala是单继承(和Java一样)有参构造继承object Scala10_Object5 {}class Parent11(name : String){}// Scala中继承也采用extends关键字,只支持单继承// 如果父类存...原创 2019-12-27 13:27:59 · 333 阅读 · 0 评论 -
15.Scala单例
Scala单例Scala是完全面向对象的语言,所以没有静态的操作,即在Scala中没有静态的概念。但是可以通过单例对象来模拟类对象。若单例对象名与类名一致,则称该单例对象为这个类的伴生对象,这个类的所有静态内容都可以放在它的伴生对象之中声明。语法object Person{ val country:String="China"}单例对象采用object关键字声明单例...原创 2019-12-27 13:27:59 · 206 阅读 · 0 评论 -
14.Scala抽象类
Scala抽象类Scala中有抽象类,抽象类里面有抽象属性和抽象方法声明Scala抽象类声明抽象类使用abstract关键字,在抽象类中,可以声明抽象方法和普通方法// 声明抽象类:声明类时在class前使用关键字abstract// 声明抽象方法abstract class Parent13(){ // 声明普通方法 def test()={ } ...原创 2019-12-27 13:27:59 · 200 阅读 · 0 评论 -
16.Scala特质(trait)
Scala特质原创 2020-01-02 13:44:49 · 253 阅读 · 0 评论 -
17.Scala面向对象的扩展用法
Scala面向对象的扩展用法类型检查和转换使用isInstanceof[],判断类型,使用asInstanceof 进行类型强转。其中中括号表示的是泛型object Scala_24ObjectExt { def main(args: Array[String]): Unit = { // 获取类信息 val value = classOf[User...原创 2019-12-27 13:27:59 · 119 阅读 · 0 评论 -
18.集合常用方法
集合常用方法list.contains()list.reverse()list.take()list.takerightlist.collectlist.map()//将每一个元素做操作后返回list.flatten //扁平化,将一个数据整体拆开// 等同于将falt和map融合在一起list.flatMap()// 扁平映射// 过滤list.filter// 分组/...原创 2019-12-30 16:02:22 · 100 阅读 · 0 评论 -
18.可变和不可变集合
可变和不可变集合对可变集合中数据的增删改之后会返回一个新的集合Scala不可变集合,就是指该集合对象不可修改,每次修改就会返回一个新对象,而不会对原对象进行修改。类似于java中的String对象可变集合,就是这个集合可以直接对原对象进行修改,而不会返回新的对象。类似于java中StringBuilder对象数组可变数组def main(args: Array[String...原创 2020-01-03 13:00:39 · 1259 阅读 · 0 评论 -
20.三个集合的小练习
三个集合的小练习wordCount简单/** * 对一个List进行wordCount,返回出现次数最多的三个单词,及其出现次数 */object WordCountSimple { def main(args: Array[String]): Unit = { // WordCount val list = List("Hello"...原创 2020-01-10 12:42:26 · 160 阅读 · 0 评论 -
21.Scala模式匹配
Scala模式匹配Scala中的模式匹配类似于java中的switch语法,但是java中的switch只能做分支运算,在Scala中的模式匹配能做更多。模式匹配语法中,采用match关键字声明,每个分支采用case关键字进行声明,当需要匹配时,会从第一个case分支开始,如果匹配成功,那么执行对应的逻辑代码,并且跳出判断逻辑,如果匹配不成功,继续执行下一个分支进行判断。如果所有case都不匹配...原创 2020-01-02 13:44:49 · 155 阅读 · 0 评论 -
22.隐式转换
隐式转换当编译器编译程序发生错误,会尝试通过隐式转换将数据类型发生变化,看看是否能够编译通过,有时也叫做二次编译隐式函数object Scala_implicit { def main(args: Array[String]): Unit = { // 隐式函数以implicit关键字开头,其名字不重要,重要的是返回值和输入参数的类型 // 隐式转换的...原创 2020-01-03 13:00:39 · 117 阅读 · 0 评论