scala
qq_34352013
ruanwenfu
展开
-
scala29:偏函数
作用我暂时还没有看到偏函数的作用,好像就可以最参数做限定原创 2020-11-23 23:41:52 · 80 阅读 · 0 评论 -
scala28:模式匹配-match
提示match相当于java的switch,多分支常规字符串匹配object PatternDemo { def main(args: Array[String]): Unit = { //常量字面量的匹配值 val site = "qianfeng.com" site match { case "qianfeng.com" => printl...原创 2020-11-23 23:42:01 · 79 阅读 · 0 评论 -
scala27:样例类
作用类的模板类似于javabean一样可以用来存数据默认带有apply方法构造参数修饰符默认是public val样例类的比较基于值的比较,而不是引用地址demo样例类定义,完全复制,部分复制,样例类的比较object CaseClassDemo { def main(args: Array[String]): Unit = { //这里定义在方法中 //默认...原创 2020-11-23 23:42:11 · 82 阅读 · 0 评论 -
scala26:特质应用——胖接口
在接口中所有方法都依赖与一个方法,实现类中只需要重写这个方法就相当于重写了所有方法,所有方法都可以调用//在接口中定义多个方法trait FatLogger { def log(msg:String) def info(msg:String):Unit = log("info:"+msg) def severe(msg:String):Unit = log("severe:"+...原创 2020-11-23 23:41:11 · 184 阅读 · 0 评论 -
scala25:利用特质扩展对象的功能,动态的混入特质,功能增强
提示特质可以为类提供堆叠的改变,要什么功能,混入不同的特质特点定义一个父接口,实现一个基础功能。然后针对这个基础实现在扩展出多种增强实现,在创建对象时,通过with不断混入需要的特质,可以在基础功能上应用所有混入的功能trait LoggerTrait { //日志统一接口 def log(msg:String):Unit}//子特质可以实现父特质的方法trait C...原创 2020-11-23 23:41:24 · 270 阅读 · 0 评论 -
scala24:特质
提示scala中的特质,类似于java中的接口,可以多实现,而且比java中的接口功能更加强大特质可以带泛型A,B,C,D,E,F,G普通的定义特质以及实现特质trait Iterator[A]{ def hasNext():Boolean def next():A}//实现特质class IntIterator(to:Int) extends Iterator[Int]...原创 2020-11-23 23:41:37 · 54 阅读 · 0 评论 -
scala23:抽象类
提示抽象类中可以定义非抽象方法//抽象类abstract class Person { //抽象字段,没有初始化值 var name:String //抽象方法,没有方法体 def id():Int //抽象类中也可以定义具体方法 def smile():Unit = { println("smiling") }}//实现类class Emplo...原创 2020-11-23 23:44:05 · 76 阅读 · 0 评论 -
scala22: 继承
提示scala也只能支持单继承,实现多继承可以用特质demo//父类class Point(val xc:Int,val yc:Int) { var x:Int = xc var y:Int = yc def move(dx:Int,dy:Int):Unit = { x+=dx y+=dy println("移动后x坐标为"+ this.x) ...原创 2020-11-23 23:40:27 · 72 阅读 · 0 评论 -
scala21:apply方法和unapply方法
作用通过伴生对象提供的Apply方法创建对象,不需要使用new关键字例如 var list = List(1,2,3) 使用的就是伴生对象的apply方法通过伴生对象apply方法创建对象class User(var name:String,var age:Int) {}object User { def apply(name: String,age: Int): User = ...原创 2020-11-23 23:40:35 · 155 阅读 · 0 评论 -
scala20:单例对象与伴生对象
什么是单例对象scala中不存在文件名需要和主类相同的规定,scala中的类默认都是public的,文件名可以随便是哪个类,对象都可以class定义的是一个类,需要实例化才可以访问里面的属性和方法object里面定义的是静态方法,scala没有静态的概念,通过单例对象可以用来定义main方法object相当于工具类,用来定义静态方法和常量单例对象中不可以携带参数,因为都不需要创建对象o...原创 2020-11-23 23:44:14 · 181 阅读 · 0 评论 -
scala19:构造函数
核心知识点1、class中的构造函数分为主构造函数和辅助构造函数。默认的主构造函数就是无参构造2、定义辅助构造函数时,需要调用主构造函数或者其他的辅助构造函数3、class类默认提供一个无参构造,new PersonS()时调用的就是无参构造4、类中定义的独立的语句块(也就是不是在方法里面的),作为构造代码块,在创建对象的时候会被执行定义辅助构造函数class PersonS { ...原创 2020-11-23 23:39:54 · 267 阅读 · 0 评论 -
scala18:class类定义
提示1、class默认的类型是private2、可以自定义get和set方法,但是不可以和系统自动生成的方法重复编码class PersonS { //val 修饰的修饰的属性,系统会自动生成get和set方法 //相当于常量,是无法被修改的 val id:String = "1234" var name:String="" //private修饰,私有成员 pr...原创 2020-11-23 23:40:03 · 383 阅读 · 0 评论 -
scala17:集合常见方法
object HelloWorld { def main(args: Array[String]): Unit = { val list1 = List(1,2,3,4) //求和,最大值,最小值 println(list1.sum) println(list1.max) println(list1.min) //集合过滤 printl...原创 2020-11-23 23:40:14 · 76 阅读 · 0 评论 -
scala16:Set
特点无序不重复,存储单个值object HelloWorld { def main(args: Array[String]): Unit = { //创建Set val set1 = Set(1,2,3) //添加元素 println(set1+4) //删除元素 println(set1-3) //可变Set操作,是一个HashS...原创 2020-11-23 23:40:44 · 78 阅读 · 0 评论 -
scala 15:元组
元组是不同的数据类型的对象的集合三元组,四元组,就是多个对象的集合相关API原创 2020-11-23 23:39:02 · 68 阅读 · 0 评论 -
scala14:Map
不可变map //创建一个map val score = Map("zhangsan"->90,"list"->80) println(score.getClass.getName) //创建map的第二种方式 val score1 = Map(("zhangsan",90),("lisi",80)) println(score1)可...原创 2020-11-23 23:39:14 · 66 阅读 · 0 评论 -
scala13:List列表
不可变List操作可变List操作原创 2020-11-23 23:39:23 · 73 阅读 · 0 评论 -
scala12:集合——变长数组
变长数组创建一个变长数组相关操作数组变换类似于List,可以动态添加元素创建一个变长数组 def main(args: Array[String]): Unit = { //定义一个变长数组 val arr = ArrayBuffer(1,2) //指定数组的类型 val arr1 = ArrayBuffer[String]("a") //通过new...原创 2020-11-23 23:39:34 · 163 阅读 · 0 评论 -
scala11:集合——定长数组
数组可变集合以及不可变即可有哪些集合什么是集合数组创建数组数组访问求数组长度访问数组元素修改数组元素打印数组元素数组求和最大最小值数组排序可变集合以及不可变即可scala每一类集合都提供两种实现,可变以及不可变有哪些集合三大类集合:Seq序列Set 集合Map映射什么是集合可以存储多个元素的容器就叫做集合数组Seq序列相当于数组,同类元素存储,可以下标访问创建数组//定义...原创 2020-11-23 23:40:57 · 392 阅读 · 0 评论 -
scala10:函数和方法的区别和联系
区别1、定义的语法不同2、方法定义在类,特质,或者object中3、方法可以共享所在类,特质,或者object中的属性4、函数其实是一个对象,new的Function对象,所以可以把函数作为参数传入另外一个方法或者函数中函数作为参数传入,回调,lambda,匿名内部类//定义一个方法,方法的参数类型是Function2,两个参数的函数对象即可def m(param:(Int,Int)...原创 2020-11-23 23:44:23 · 167 阅读 · 0 评论 -
scala09:函数
函数和方法函数和方法的定义方式不同,但是都是用来进行运算的。方法定义在类上,函数其实是一个对象,可以赋值给一个变量定义函数推荐使用第一种函数定义方式函数接收参数,处理逻辑(参数加逻辑,比方法简洁)val fun01 = (x:Int,y:Int) => x+y调用时fun01(1,2)其他定义方式了解即可:val fun = ((x:Int,y:Int)=>x+y...原创 2020-11-23 23:37:54 · 132 阅读 · 0 评论 -
scala08:方法
方法是定在在类上的函数是一个对象,可以赋值给一个变量语法除递归方法以外,返回值类型可以省略def 方法名(参数列表) : 返回值类型 = 方法体def add(x:Int,y:Int) = x+y或者def add(x:Int,y:Int):Int = x+y方法调用add(10,9)无返回值方法Unit类似于voiddef add(x:Int,y:Int):Unit...原创 2020-11-23 23:38:07 · 64 阅读 · 0 评论 -
scala07:循环
循环for循环遍历一个字符串双重for循环for循环的if判断叠加创建序列yield介绍while循环和do...while循环for循环for(i <- 表达式,数组,集合)例如for(I <- 1 to 10){println(i)}1 to 10 是一个collection,Range,范围是1到101 until 10 范围是1到9遍历一个字符串val s ...原创 2020-11-23 23:38:24 · 172 阅读 · 0 评论 -
scala06:表达式
特点:(1)表达式是有返回值的。(2)返回值是表达式最后一条语句的执行结果条件表达式if (逻辑判断) 值1 else 值2val a = 1val res = if(a>0) 100 else -100 //返回值是Int类型//混合条件表达式if(a>0) "success" else -100res12: Any = successval res = if(...原创 2020-11-23 23:38:33 · 70 阅读 · 0 评论 -
scala05:数据类型和操作符
scala的数据类型及操作符java中的数据类型scala中的数据类型操作符java中的数据类型8种基本数据类型:byte,short,int,char,long,float,double,boolean引用类型:数组,类和接口scala中的数据类型scala中所有的类型都是对象,即便是基本数据类型,也是包装类下图是常见的scala数据类型例如 1 to 10 返回一个range(...原创 2020-11-23 23:38:43 · 70 阅读 · 0 评论 -
scala04:变量
变量定义变量注意定义常量lazy懒加载定义变量实际开发中,val用得比较多,更加安全定义变量不指定类型的会会根据初始值自动推断var 变量名 = 初始化值var 变量名: 数据类型 = 初始化值注意(1)定义变量的时候需要初始化(2)定义变量的时候可以不指定变量的数据类型,系统会更具变量的初始化值推断变量的数据类型, 例如var a = 1,系统认为a是整型定义常量val ...原创 2020-11-23 23:59:14 · 298 阅读 · 0 评论 -
scala02:编译环境搭建,反编译
安装过程1、安装JDK 1.82、在scala官网上下载windows免安装版本的scala进行解压安装3、把scala的bin目录设置到环境变量当中4、命令行输入 scala 查看是否安装成功命令行编译scalac HelloWorld.scala,编译产生字节码文件scala HelloWorld.scala 运行scala程序反编译工具的使用直接点击打开jd-gui.e...原创 2020-11-23 23:59:27 · 209 阅读 · 0 评论 -
scala01:介绍
特点面向对象编程面向函数式编程(可以将方法作为参数)静态类型的语言(比如变量a是什么数据类型在编译阶段就已经确定了,比如java,scala),与之对应的是动态类型语言,变量a的数据类型运行阶段确定,比如python基于JVM(aa.scala 会被编译成aa.class,可以运行在JVM之上)2、为什么学习Scala(1)速度快(2)优雅(3)融入大数据生态圈,深入学习spark...原创 2020-11-23 23:38:15 · 62 阅读 · 0 评论