![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Scala
文章平均质量分 73
大数据语言
败给你的黑色幽默丶
if i say you're the one would you believe me;
if i ask you to stay would you show me the way
展开
-
Scala14_泛型
泛型11.1 简介Scala的泛型和Java中的泛型表达的含义都是一样的,对处理的数据类型进行约束,但是Scala提供了更加强大的功能class Test[A] {private var elements: List[A] = Nil}11.2 泛型转换Scala的泛型可以根据功能进行改变11.2.1 泛型不可变object ScalaGeneric { def main(args: Array[String]): Unit = { val test1 : Te原创 2021-09-11 17:34:27 · 76 阅读 · 0 评论 -
Scala13_隐式转换
隐式转换隐式转换1. 隐式函数2.隐式参数&隐式变量3.隐式类隐式转换隐式转换的含义:在之前的类型学习中,我们已经学习了自动类型转换,精度小的类型可以自动转换为精度大的类型,这个转换过程无需开发人员参与,由编译器自动完成,这个转换操作我们称之为隐式转换。在其他的场合,隐式转换也起到了非常重要的作用。如Scala在程序编译错误时,可以通过隐式转换中类型转换机制尝试进行二次编译,将本身错误无法编译通过的代码通过类型转换后编译通过。慢慢地,这也形成了一种扩展功能的转换机制。1. 隐式函数编译原创 2021-09-11 15:00:04 · 136 阅读 · 0 评论 -
Scala12_异常
9.1 简介Scala异常语法处理上和Java类似,但是又不尽相同。Java异常:try { int a = 10; int b = 0; int c = a / b;} catch (ArithmeticException e){ // catch时,需要将范围小的写到前面 e.printStackTrace();} catch (Exception e){ e.printStackTrace();} finally { System.o原创 2021-09-11 12:09:04 · 139 阅读 · 0 评论 -
Scala11_模式匹配&样例类&偏函数
第八章 模式匹配8.1 简介`(1) Java中的switch`8.2 基本语法8.3 匹配规则8.3.1 匹配常量8.3.2 匹配类型8.3.3 匹配数组8.3.4 匹配列表8.3.5 匹配元组8.3.6 匹配对象8.3.7 样例类8.1 简介Scala中的模式匹配类似于Java中的switch语法,但是scala从语法中补充了更多的功能,可以按照指定的规则对数据或对象进行匹配, 所以更加强大。(1) Java中的switchint i = 20switch (i) { default原创 2021-09-11 11:47:40 · 197 阅读 · 0 评论 -
Scala10_集合04_练习
1.练习1object Scala14_WordCount { def main(args: Array[String]): Unit = { val list = List( ("Hello Hive Hadoop Scala",4), ("Hello Hive Hadoop",3), ("Hello Hive",2), ("Hello",1) ) //todo 统计list中每个单词出现的次数 val result1:原创 2021-09-10 00:01:11 · 84 阅读 · 0 评论 -
Scala10_集合03_集合高阶方法
集合的高阶方法1.reduce2.reduceLeft&reduceRight3.fold练习1.reduce1.Scala中对数据的操作一般都是两两计算object Scala10_Collection_reduce { def main(args: Array[String]): Unit = { //TODO 集合 - 计算方法 - 聚合功能函数 //Scala集合提供了一些用于聚合数据功能的函数 //但是聚合逻辑不确定 // 1->N fla原创 2021-09-09 01:34:17 · 98 阅读 · 0 评论 -
Scala10_集合02_Seq&Set&Map&Tuple&并行
Seq1. Seq1.1 不可变集合 List1.2 可变集合 ListBuffer2. Set集合3. MapOption理解空指针异常Option的一些方法TupleQueueKafka分区Queue并发和并行线程安全问题Seq是个特质,不能直接创建对象;可以使用其下面的类;学习Seq,就是学习Seq下面的类1. SeqScala默认提供不可变集合,不可变集合对数据的操作会产生新的集合不可变集合一般都没有英文单词的方法1.1 不可变集合 Listobject Scala04_Collecti原创 2021-09-09 00:51:08 · 299 阅读 · 0 评论 -
Scala10_集合01_数组
Scala集合简介数组1.不可变数组Array数组常见操作2可变数组ArrayBuffer3.可变数组和不可变数组互相转换4.可变数组常用方法`基础方法 ``进阶方法``简单计算``进阶方法のzip&sliding``进阶方法のmap&flatMap``进阶方法のfilter&groupBy``进阶方法の排序 sortBy&sortwith`简介(1) Scala的集合有三大类:序列Seq、集Set、映射Map,所有的集合都扩展自Iterable特质(2) 对于几乎所有原创 2021-09-07 01:27:34 · 148 阅读 · 0 评论 -
Scala09_高阶面向对象编程03_特质&扩展
特质(1)特质的概念Scala将多个类的相同特征从类中剥离出来,形成一个独立的语法结构,称之为“特质”(特征)。这种方式在Java中称之为接口,但是Scala中没有接口的概念。所以scala中没有interface关键字,而是采用特殊的关键字trait来声明特质如果一个类符合某一个特征(特质),那么就可以将这个特征(特质)“混入”到类中。这种混入的操作可以在声明类时使用,也可以在创建类对象时动态使用。java中所有接口在scala中都是按照特质来使用(2)特质的声明和使用 //原创 2021-09-06 01:59:44 · 93 阅读 · 0 评论 -
Scala09_高阶面向对象编程02_伴生类和伴生对象&apply
1.单例对象1.1 object声明单例对象1.Object关键字声明类同时可以声明单例对象Scala中没有静态操作,采用object关键字直接声明单例对象1.1 object和class声明类的区别区别1object声明类,产生两个.class文件User$.class 是单例对象的类User.class 是原本的类这个单例对象就是伴生对象类就是半生类User.class文件public final class User{}User$.cla原创 2021-09-06 00:21:38 · 259 阅读 · 0 评论 -
Scala09_高阶面向对象编程01_继承&抽象&重写注意事项
1.继承当父类提供了有参的构造方法,就不会自动提供无参构造了,此时子类必须显式调用父类有参构造object Scala10_Object_Extends { def main(args: Array[String]): Unit = { val user = new Child("张三") } class Parent(name:String){ println("111111") def this(){ this("xxxx")原创 2021-09-05 22:51:44 · 260 阅读 · 2 评论 -
Scala08_面向对象基础05_构造方法
1.对象Scala中的创建对象的语法和Java是类似的val | var 对象名 [:类型] = new 类型()var user : User = new User()2.构造方法object Scala09_Object_Instance { def main(args: Array[String]): Unit = { //创建对象 val user = new User()//调用类的构造方法 } class User(){ // Scal原创 2021-09-05 21:32:06 · 128 阅读 · 0 评论 -
Scala08_面向对象基础04_类的方法&方法重写的动态绑定机制
类的方法方法就是声明在类中的函数;方法的限制和约束方法受到一定的限制和约束:1.必须通过对象来调用object Scala08_Object_Method { def main(args: Array[String]): Unit = { val user = new User(); user.test() } class User{ def test() : Unit = {} }}2.方法有重载和重写的概念1public cla原创 2021-09-08 00:38:21 · 77 阅读 · 0 评论 -
Scala08_面向对象基础03_访问权限(理解继承关系)
2.类的访问权限(1) java中子类可以继承到父类的私有属性和方法;有没有和能不能访问是两回事;(2)如何理解访问权限?权限 就是用户和服务的权力限制;用户可以享受哪些服务不能享受哪些服务权限越大,能够享受的服务越多;(3)程序中如何体现权限?以方法为例:访问权限指的是方法的提供者和方法调用者之间的关系(4) java中的访问权限1.private 提供者和调用者在同一个类中才能使用 类私有2.(default) 提供者和调用者在同一个包中 包私有3.protecte原创 2021-09-07 23:48:52 · 134 阅读 · 1 评论 -
Scala08_面向对象基础02_类的属性
1. 类的声明和使用1.1 基本语法// 声明类:访问权限 class 类名 { 类主体内容 } class User {}// 对象:new 类名(参数列表)new User()object Scala01_Object { def main(args: Array[String]): Unit = { //todo 面向对象编程 //todo 2.创建对象 val user : User = new User() // todo 3.使用类的属性和原创 2021-09-03 01:37:01 · 103 阅读 · 0 评论 -
Scala08_面向对象基础01_包&import
1. 类的声明和使用object Scala01_Object { def main(args: Array[String]): Unit = { //todo 面向对象编程 //todo 2.创建对象 val user : User = new User() // todo 3.使用类的属性和方法 println(user.name) user.test() } // todo 1.声明类 class User{ // sca原创 2021-09-02 23:23:30 · 230 阅读 · 2 评论 -
Scala07_高阶函数编程
高阶函数所谓的高阶函数,其实就是将函数当成一个对象来使用;函数也是有类型的,就是函数类型1 函数作为值赋给变量1.1 将无参函数对象赋值给变量1.现象引入object Scala05_Function_Hell { def main(args: Array[String]): Unit = { //todo 1.将函数作为值赋给变量 def test() : Unit = { println("f1....") } // 问题1:尝试将函数对原创 2021-09-02 02:12:44 · 138 阅读 · 0 评论 -
Scala06_函数式编程
基础函数编程1.基本语法[修饰符] def 函数名 ( 参数列表 ) [:返回值类型] = { 函数体}private def test( s : String ) : Unit = { println(s)}2.函数&方法scala 中存在方法与函数两个不同的概念,二者在语义上的区别很小方法scala 方法其实就是函数,只不过声明在类中,是类的一部分;换句话来说在类中定义的函数即是方法。声明在类中:意思就是直接在类的花括号中定义的;其他场合定义的一概不叫作原创 2021-08-29 22:31:43 · 91 阅读 · 0 评论 -
Scala05_流程控制
Scala程序代码和所有编程语言代码一样,都会有特定的执行流程顺序,默认情况下是顺序执行,上一条逻辑执行完成后才会执行下一条逻辑,执行期间也可以根据某些条件执行不同的分支逻辑代码1.分支控制让程序有选择的的执行,分支控制有三种:单分支双分支多分支1. 单分支IF…ELSE 语句是通过一条或多条语句的执行结果(true或者false)来决定执行的代码块if(布尔表达式) { // 如果布尔表达式为 true 则执行该语句块}如果布尔表达式为 true 则执行大括号内的语句块,否原创 2021-08-29 20:10:17 · 117 阅读 · 0 评论 -
Scala04_运算符
1.算数运算符假定变量 A 为 10,B 为 202 关系运算符假定变量A为10,B为20思考一个问题:如下代码执行结果如何?val a = new String("abc")val b = new String("abc")println(a == b)//trueprintln(a.equals(b))//trueprintln(a.eq(b))scala中 == 会先进行非空判断,然后调用equals方法;因此不会有空指针异常scala中equals:不会进行非空判断,而原创 2021-08-29 16:02:03 · 95 阅读 · 0 评论 -
Scala03_字符串
字符串字符串拼接传值字符串&插值字符串&多行字符串在 Scala 中,字符串的类型实际上就是 Java中的 String类,它本身是没有 String 类的;这意味着方法都是一样的在 Scala 中,String 是一个不可变的字符串对象,所以该对象不可被修改。这就意味着你如果修改字符串就会产生一个新的字符串对象。object ScalaString { def main(args: Array[String]): Unit = { val name原创 2021-08-29 13:00:41 · 142 阅读 · 0 评论 -
Scala02_变量&标识符&数据类型
变量和数据类型1.注释2.变量2.1 变量的声明补充:常量的理解2.2 变量的初始化2.3 可变变量 & 不可变变量2.3.1可变变量2.2.4 不可变变量3.标识符1.注释Scala注释使用和Java完全一样。注释是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来,再用代码去体现。//单行注释/* 多行注释*//** * doc注释 */2.变量 变量是一种原创 2021-08-29 12:31:03 · 147 阅读 · 0 评论 -
Scala01_入门
Scala入门1.概述1.1什么是Scala1.2为什么学习Scala1.3 Java & Scala2.快速上手2.1 Scala环境安装2.2 IDEA中Scala插件安装2.3 Hello Scala案例1.概述1.1什么是ScalaJava不是面向对象的语法:1.基本数据类型2.static Scala并不是一个单词,而是Scalable Language两个单词的缩写Scala是一门可伸缩的软件编程语言这门语言体现了面向对象,函数式编程等多种不同的语言范式,且融合了原创 2021-08-27 03:04:41 · 132 阅读 · 0 评论