【scala】 scala 基础(一)】的更多相关文章

一.输出 println("Hello World") 二.变量与常量 1.变量用var表示,常量使用val表示 2.变量类型声明 var variableName : DateType [=Init Value] var x:String = "fonxian" 3.多个变量声明 var x,y = 100 4.元组 var x = ("x",18) 二.数据类型 scala不对基本数据类型和包装数据类型做区分,这两种数据类型是由scala编译…
Scala与Java的关系... 4 安装Scala. 4 Scala解释器的使用... 4 声明变量... 5 数据类型与操作符... 5 函数调用与apply()函数... 5 if表达式... 6 语句终结符.块表达式... 6 输入和输出... 6 循环... 7 高级for循环... 7 函数的定义与调用... 8 在代码块中定义包含多行语句的函数体... 8 递归函数与返回类型... 8 默认参数... 8 函数调用时带名参数... 9 变长参数... 9 序列作为变长参数... 9…
一 简介 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性.Scala 运行在Java虚拟机上,并兼容现有的Java程序.Scala 源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库. 二 安装与环境配置 Scala 语言可以运行在Window.Linux.Unix. Mac OS X等系统上.Scala是基于java之上,大量使用java的类库和变量,使用 Scala 之前必须先安装 J…
基于王家林老师的Spark教程——共计111讲的<Scala零基础教学> 计划在9月24日内完成(中秋节假期之内) 目前18号初步学习到25讲,平均每天大约完成15讲,望各位监督. 初步计划: 18号完成40讲 19号完成55讲 20号完成70讲 21号完成85讲 22号完成100讲 23号完成111讲 24号回顾复习 第9讲:Scala的内部类实战详解 Java 内部类属于类的: Scala内部类属于对象的,属于外部实例本身.   第11讲:Scala中的apply实战详解 Object的a…
1. Scala语言的特点 a. 多范式编程语言,面向对象(抽象.封装)和函数式(过程.结果)编程 b. 代码简洁 ==>可读性较差 c. 代码会被变异成Java字节码,运行在JVM上 2. Scala语言基础 a. 变量修饰符 var :修饰的变量在整个生命周期内可被重新赋值 val :类似于java中的final,初始化后不能被重新赋值 * 当修饰符作用于集合类型时,修饰的是类型,可理解为仅限定集合类型的引用是否可变,并不限制集合中的值是否可变. b. 基本数据类型 (1) 数值类型:Byt…
Scala简单介绍 Scala(Scala Language的简称)语言是一种能够执行于JVM和.Net平台之上的通用编程语言.既可用于大规模应用程序开发,也可用于脚本编程,它由由Martin Odersk于2001开发.2004年開始程序执行在JVM与.Net平台之上.由于其简洁.优雅.类型安全的编程模式而受到关注. Scala的创建者——Martin Odersk 在Scala的创建之初,并没有怎么引起重视,随着Apache Spark和Apache Kafka这样基于Scala的大数据框架…
[<快学Scala>笔记] 一.基础 1.变量val 标志符: 声明常量: 如,val answer = 1var 标志符:声明变量: 类型推断:变量的类型由scala根据初始化变量的表达式推断而来: 鼓励使用val: 注:声明变量时不做初始化会报错. 明确类型: scala的变量或函数的类型总是写在变量或函数的后面. val a:Int = 1 val str:String = 2 2.常用类型 Scala支持7种数值类型和1种Boolean类型. Byte/Char/Short/Int/L…
最近接触到spark,spark又是scala编写的,所以需要学习一下scala. scala是面向对象的,一切皆为对象, 数值,函数都是对象. println("Welcome to the Scala")  /就这样进入scala学习模式了.... 1.变量 val x=10;自动转换类型为Int.val y:Int=10;自定义变量y的类型.lazy val c=a+b ;当变量c第一次被使用的时候才会被计算值. 2.scala类型体系基类:AnyAny下面是AnyVal和Any…
基础类型                              位数 Boolean                                 - Byte                                      8位 Short                                   16位 Int                                        32位 Long                              …
val声明的不可变的战略意义:1.函数式编程中要求值不可变,val天然符合这一特性:2.在分布式系统中,一般都要求值不可变,这样才能够要求分布式系统的设计和实现,同时拥有更高的效率,val声明的内容都不可变,所以不用担心在机器之间传递数据的时候修改数据,这为分布式编程打下非常好的基础,包括Spark中的核心抽象RDD也是不可变得: 重要结论:Scala中一切皆对象.Scala中所有类型都是Class Scala的apply方法:是Scala对象构造的工厂方法,由于控制Scala类对象的生成,实际…
1.Scala基础语法 区分大小写 类名 - 对于所有的类名的第一个字母要大写.如果需要使用几个单词来构成一个类的名称,每个单词的第一个字母要大写. 方法名称 - 所有的方法名称的第一个字母用小写. 如果若干单词被用于构成方法的名称,则每个单词的第一个字母应大写. 程序文件名 - 程序文件的名称应该与对象名称完全匹配(新版本不需要了,但建议保留这种习惯).保存文件时,应该保存它使用的对象名称(记住Scala是区分大小写),并追加".scala"为文件扩展名. (如果文件名和对象名称不匹…
基础语法 1)注意点 1)区分大小写 -  Scala是大小写敏感的,这意味着标识Hello 和 hello在Scala中会有不同的含义. 2)类名 - 对于所有的类名的第一个字母要大写. 3)方法名称 - 所有的方法名称的第一个字母用小写. 4)程序文件名 - 程序文件的名称应该与对象名称完全匹配. 5)def main(args: Array[String]) - Scala程序从main()方法开始处理,这是每一个Scala程序的强制程序入口部分. 2)val和var Scala有两种变量…
Object An object is a type of class that can have no more than one instance, known in object-oriented design as a singleton. Instead of creating an instance with a new keyword, just access the object directly by name. Objects provide similar "static&…
最近在开始学习Scala,本篇文章我们来讲解一下Scala中类的使用 class Counter { var defaultValue = 0 val valValue = 0 private var privateValue = 0 private[this] var value = 0 def increment(): Unit = { value += 1 } def current(): Int = { value } def current1(): Int = value def cu…
Map 构造Map 不可变: val map = Map("sa" -> 1, "s" -> 2)map("sa") = 3 // error val emptyMap = new scala.collection.immutable.HashMap[String, Int] 可变: val map2 = scala.collection.mutable.Map("sa" -> 2)map2("sa…
类型参数 泛型函数 多个参数 使用泛型参数时候,不给类型scala也能自己判断 上边界bounds 下边界bounds 专门用于打包泛型数组…
模式匹配 case _ =>不能放在函数的中间必须放在最后,否则scala会编译不通过 在case 里面使用if守卫 在模式匹配中获取输入的数据(在匹配不到的情况下) 对类型进行匹配 case class的使用 会自动伴生对象生成apply不用new 而且自动生成类似javaBean东西…
trait的学习 1.将trait作为接口来使用 trait中可以实现一些方法,子类只要extends 了trait就可以直接使用父trait里面的方法 普通继承的话父类和子类之间的field是通过引用访问,而trait之间的继承scala编译器会直接用同一个field trait的抽象filed 继承者必须实现 为实例混入trait trait调用链 在trait中覆盖抽象方法 此时不能调用因为是抽象方法 混合使用trait的具体方法和抽象方法 trait的构造机制 在具有继承和with多个t…
伴生对象 object方法构造函数只会执行一次.伴生对象和对象之间private对象可以互相访问 让object继承抽象类 apply方法 可以不new就构造对象 类似于var s = ArrayBuffer[Int]; scala main方法可以通过def main(args:Array[String])作为函数入口或者继承app方法 scalac + filename.scala 编译文件 然后通过scala class文件名字进行执行 利用拓扑…
定义一个简单的类 //定义类,包含field以及方法 自定义的getter 和setter 仅仅暴露field的getter和setter方法 private[this]的使用 (只能在当前实例中使用超出范围不行) java风格的getter和setter  scala.beans.BeanProperty 导入包…
scala变长参数: 递归累加: scala异常的使用: array和arraybuffer的使用 定长array: arraybuff:…
Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的. 区分大小写 -  Scala是大小写敏感的,这意味着标识Hello 和 hello在Scala中会有不同的含义. 类名 - 对于所有的类名的第一个字母要大写. 方法名称 - 所有的方法名称的第一个字母用小写. 程序文件名 - 程序文件的名称应该与对象名称完全匹配. import语句可以出现在任何地方,而不是只能在文件顶部.import的效果从开始延伸到语句块的结束. 如果想要引入包中的几个成员,可以使用selec…
声明值和变量 用val定义的值实际上是常量.用var定义的值是变量.在scala中鼓励使用val.不需要给出值或变量的类型,这个信息可以通过初始化的表达式推断出来.(声明值和变量但不做初始化会报错) 在Scala中,变量或函数的类型总是写在变量或函数名称的后面.如下: val greeting: String = null val greeting: Any = "Hello" 在Scala中,仅当同一行中存在多条语句是才需要使用分号隔开. 我们可以将多个值或变量放在一起声明,如下:…
参考:http://docs.scala-lang.org/cheatsheets/index.html.http://docs.scala-lang.org/.http://www.scala-lang.org/api/2.10.4/#package 变量   var x = 5 变量 好val x = 5不好x=6 不变 var x: Double = 5 显式类型 功能   好def f(x: Int) = { x*x }不好def f(x: Int) { x*x } 定义函数隐藏错误:无…
简洁到不行,多一个分号都是不应该. 学习笔记: centOS 下安装 scala 和安装 jdk 一毛一样 . 1 . 不同于 Java 的变量声明 :( 但是和 js 很像 ) /** * Created by msym on 2017/7/3. */ object VarTest { def main(args: Array[String]) { //使用val定义的变量值是不可变的, 相当于java里用final修饰的变量 val i = 1 //使用var定义的变量是可变的,但是在Sca…
1. 变量 val定义的值实际上是一个常亮,无法改变其内容 scala> val num = 0 num: Int = 0 scala> num = 2 <console>:12: error: reassignment to val num = 2 ^ 如果要声明其值可变的变量,可以使用var scala> var number = 0 number: Int = 0 scala> number = 2 number: Int = 2 在Scala中,建议使用val,…
第102讲:通过案例解析Akka中的Actor运行机制以及Actor的生命周期 Actor是构建akka程序的核心基石,akka中actor提供了构建可伸缩的,容错的,分布式的应用程序的基本抽象, actor是异步的,非阻塞式的,事件驱动的轻量级的模型, actor中都有自己的成员,也有receive方法,在receive中处理具体的逻辑. actor间沟通只能通过发消息. !发消息是异步的过程,MasterActor只会对自己的邮箱感兴趣,不断循环自己的邮箱, 收到消息后进行处理. 在acto…
第90讲:基于Scala的Actor之上的分布式并发消息驱动框架Akka初体验 akka在业界使用非常广泛 spark背后就是由akka驱动的 要写消息驱动的编程模型都首推akka 下面将用30讲讲解akka 本讲主要讲两部分内容: 1.akka的重大意义 2.akka与scala的actor Spark源码中使用akka使用鉴赏: 在spark中有200行左右代码封装了akka的使用 spark是分布式的计算框架,有master和slave主从节点通信时都是使用akka. 客户端提交程序时也是…
第81讲:Scala中List的构造是的类型约束逆变.协变.下界详解 首先复习四个概念——协变.逆变.上界.下界 对于一个带类型参数的类型,比如 List[T]: 如果对A及其子类型B,满足 List[B]也符合 List[A]的子类型,那么就称为covariance(协变): 如果 List[A]是 List[B]的子类型,即与原来的父子关系正相反,则称为contravariance(逆变). 协变: ____ _____________ | | | | | A | | List[ A ] |…
第61讲:Scala中隐式参数与隐式转换的联合使用实战详解及其在Spark中的应用源码解析 第62讲:Scala中上下文界定内幕中的隐式参数与隐式参数的实战详解及其在Spark中的应用源码解析 /** * Scala中上下文界定内幕中的隐式参数与隐式参数的实战详解及其在Spark中的应用源码解析 */ //[T: Ordering] 这种写法 说明存在一个隐式类型Ordering[T] class Pair_Implicits[T: Ordering](val first: T, val sec…