
Scala
初步学习
hao难懂
这个作者很懒,什么都没留下…
展开
-
06分支循环
1.分支ifobject IfDemo{ /* java中有?:(三目运算符),但必须有返回值。 Scanner sc = new Scanner(System.in); int input = sc.nextInt(); int age = input > 50 ? 100 : 101; */ def main(args:Array[String]):Unit = {...原创 2020-02-18 14:52:31 · 139 阅读 · 0 评论 -
07Nine
//正向乘法表object Nine{ def main(args:Array[String]):Unit = { for(m <- 1 to 9; n <- 1 to m){ if(m == n){println(n+"*"+m+"="+(m*n)+" ")} else print(n+"*"+m+"="+(m*n)+" ") } }}//倒向乘法表...原创 2020-02-18 14:51:42 · 168 阅读 · 0 评论 -
08三种循环停止
1.使用Boolean变量object BreakDemo{ def main(args:Array[String]):Unit = { //1.while循环直接使用Boolean变量 var flag = true var n = 0 while(flag){ n += 1 println("n的值为:"+n) if(n == 10){ fl...原创 2020-02-18 14:50:58 · 503 阅读 · 0 评论 -
09方法的定义
0.Scala中严格区分方法和函数。1.方法的定义1.1标准形式: def 方法名(参数列表):返回值类型 = {方法体}1.2有隐式转换,自动推断,可省返回值类型: def 方法名(参数列表) = {方法体} 如果是递归,必须指定返回值类型1.3无论有无返回值类型都可省略return: def sum(a:Int,b:Int):Int = {a + b} 若完全不使用返回,...原创 2020-02-18 14:49:47 · 150 阅读 · 0 评论 -
10函数的定义使用
1.函数声明函数一般是写在方法体内部的val 函数名 = (参数列表) => {函数体}2.方法和函数的区别在scala中函数作为参数的形式传递到方法中,也就是说定义方法的时候可以使用函数做方法的参数,并将函数传递到方法体中。3.例如有参数: val f = (x:Int,y:Int) = {x*y} def show(f:(Int,Int) => Int):U...原创 2020-02-18 14:49:03 · 303 阅读 · 0 评论 -
11数组
1.Scala中的数组分为可变数组和不可变数组。默认情况下所有数组都是不可变的。 immutable不可变(默认导入)可变数组需要手动导入: import scala.collection.mutable.ArrayBuffer2.数组的定义//长度不可变,内容可变var arr:Array[Int] = new Array[Int](3)//简写 var arr1 = new...原创 2020-02-18 14:44:33 · 288 阅读 · 0 评论 -
12元组
1.元组Scala中元组是固定数量的元素组合在一起,可以看作一个整体。元组可以储存任意数据类型;数组只能存固定类型(除非父类可以存其他类型)。元组是不可变的,最多可以存储22个元组,若多则建议使用集合。可以使用元组作为返回值带回数据。2.定义元组val t = (1,"hello","world",true,1.33)//若存储多个值可以使用Tuple1。val t1 = new...原创 2020-02-18 14:43:17 · 369 阅读 · 0 评论 -
13集合
1.Scala中的集合有三大类:序列 Seq --> (List) 集 Set映射 Map --> 键值对(HashMap)2.介绍所有集合都来自于Iterable特质(相当于Java中接口)。集合也存在可变(mutable)和不可变(immutable)。immutable类型的集合初始化后就不能更改了。列表要表示为空,使用nil。------------↓↓...原创 2020-02-18 14:40:40 · 194 阅读 · 0 评论 -
14wordcount
object WordCount{ def main(args:Array[String]):Unit = { //准备数据 var lines = List("hello hadoop hello scala","hello spark") //遍历集合数据并扁平化处理 val words:List[String] = lines.flatMap(_.split(" ")) ...原创 2020-02-18 14:38:25 · 183 阅读 · 0 评论 -
05输入输出
1.多种输出方式object PrintDemo extends App{ //可继承app这个类 val name = "好" val price = 1000000.1d //表示double类型 val url = "www.baidu.com" //①普通输出,和java中一样 println("name="+name+"price="+price) /...原创 2020-02-17 21:49:54 · 178 阅读 · 0 评论 -
04变量常量
1.变量和常量(var和val)①Scala中不要明确表示数据类型,会自动进行推断(隐式转换)。②val可以看作是java中final修饰一个常量;使用val修饰不能不赋值; 默认匿名变量使用val修饰;不能改其引用内存地址,可改引用的对象内部的其他值。③var可以看作是java中的一个变量。(较少用变量)④因为在网络传输中,会对变量进行序列化和反序列化,var修饰的变量 可能发生值的...原创 2020-02-17 21:49:23 · 170 阅读 · 0 评论 -
00idea快捷键
IntelliJ Idea 常用快捷键列表Ctrl+Alt+t 选择代码块 try catchAlt+回车 导入包,自动修正Ctrl+N 查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L 格式化代码Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如get,set方法,构造函数等) mac系统 fn+alt+回车Ctrl+E或者Alt+Shi...原创 2020-02-17 21:48:41 · 160 阅读 · 0 评论 -
01安装scala
1.安装使用scala-2.10.6.msi安装工具,默认安装配置SCALA_HOME为C:\Program Files (x86)\scala的系统环境变量再将路径C:\Program Files (x86)\scala\bin添加到path环境变量中2.验证在cmd中输入scala -version即可查看其版本输入scala进入交互式模式,出现scala>即为安装成功...原创 2020-02-17 21:47:49 · 210 阅读 · 0 评论 -
02两种代码方式
零、配置IDEA1.下载插件 在 http://plugins.jetbrains.com/ 中搜索Scala,找到对应IDEA的版本下载2.配置插件 File-->Settings-->Plugins-->Install Plugins from disk(即磁盘安装) 安装完成后重启即可3.插件安装方法 将scala-intellij-b...原创 2020-02-17 21:47:04 · 280 阅读 · 0 评论 -
03Scala下划线的使用
1.方法转换为函数scala> def m(x:Int,y:Int) = x*ym: (x: Int, y: Int)Intscala> val f = m _f: (Int, Int) => Int = <function2>2.集合中的每一个元素scala> val list = List(1,2,3,4)list: List[Int] = ...原创 2020-02-17 21:46:12 · 161 阅读 · 0 评论 -
15练习
object ZuoYe{ def main(args:Array[String]):Unit = { //创建一个list集合 val list1 = List(1,2,3,4,5,6,7) //将list1中的每个元素乘以2生成一个新集合 val list2:List[Int] = list1.map((x:Int) => x*2) //list1.map(_...原创 2020-02-17 21:34:13 · 219 阅读 · 0 评论 -
16Lazy,函数,并行
1.Lazy关键字添加到变量之前,做到延迟加载,只有调用的时候才会执行计算。类似于单例中的懒汉模式--> 不调用方法之前对象是不存在的。 1-构造方法私有化(无参) 2-创建一个静态私有变量数据类型是当前类的数据类型且不进行初始化 3-提供一个公有静态的获取当前对象的方法 4-进行判断, 若当前对象没有被创建, 创建对象, 否则返回object LazyDemo extend...原创 2020-02-17 21:29:04 · 289 阅读 · 0 评论 -
18伴生类
1.伴生类和伴生对象存在一个class类,另有一个重名的object类,则object类就是class类的伴生类。伴生类创建的对象的就是伴生对象。类和伴生类之间可以互相访问私有成员。class Animal { var age = 1 private val name = "神兽" def showName():String = { var name1 = "羊驼" name...原创 2020-02-17 21:28:19 · 298 阅读 · 0 评论 -
17面向对象
1.面向对象scala语言是一门面向函数编程的语言, 并且兼容面向对象的思想 Scala中类分为两种:描述类class,执行类object。类不需要使用public修饰,一个文件可存在多个类。2.创建类class Student{ //var修饰的属性相当于自带get和set方法 //_表示占位符,可作为初始化使用。若使用_做初始值,必须声明数据类型。 //_有初始值(null和...原创 2020-02-17 21:27:28 · 175 阅读 · 0 评论 -
19类型判断模式匹配
1.类型判断Scala中一切的父类是Any。AnyRef是Any的子类,它是引用类型的父类。AnyVal是Any的子类,它是所有值类型的父类。AnyVal的子类有9个(基本数据类型):Byte,Short,Int,Long,Double,Float,Char,boolean,Unit2.对类型的基本操作1-判断当前对象是否是当前类型 Java中: obj instanceof 类...原创 2020-02-17 21:26:50 · 291 阅读 · 0 评论 -
20optionFuture
1.option类型用来表示可能有值,也可能没有值。分别有两个子类:Some,None。//option参数相当于一个元组val op:Option[(String,Int,Boolean)] = Some("hao",18,true)//map取值可以使用get/getOrElse//若操作option,就使用getOrElseval value:[String,Int,Bool...原创 2020-02-17 21:26:03 · 402 阅读 · 0 评论 -
21高阶函数
1.高阶函数参数和返回值都是函数。//传入参数是函数; val arr = Array(1,2,3,4) val fun = (x:Int) => x*2 val res = arr.map(fun)//传入匿名函数; val res2 = arr.map((x:Int) => x*2) val res3 = arr.map(_*2)//返回值是函数 def url...原创 2020-02-17 21:24:56 · 227 阅读 · 0 评论 -
22隐式转换
1.隐式转换其实就是添加一个关键字[implicit],这种转换是自动执行的,将一种类型转换为另一种类型 //定义隐式类: implicit def m(x:Double) = x.toInt val i:Int = 3.52.隐式转换作用//定义隐式类(可以把File类转换成隐式类RichFile)implicit class RichFile(from:File){ def ...原创 2020-02-17 21:24:19 · 140 阅读 · 0 评论 -
23Actor
1.Actor是一个并行计算模型,运用信息和邮箱通信。基于线程、基于事件的任务调度。 并行: 同一时间点 多个线程一起执行 并发: 同一时间段 多个线程一起执行接收消息:mailbox;处理消息:创建新的actor;指定下一个消息的处理;给其他actor发送消息。2.特点1-actor数据不能共享。2-没有锁的概念,不存在死锁问题。3-actor之间通过信息进行通信。3.发...原创 2020-02-17 21:23:47 · 266 阅读 · 0 评论 -
24泛型
1.泛型scala中的泛型可以作用在类,方法和函数上,泛型本身占位符没有任何意义。只有当传入数据类型或参数时,当前的占位符才会有意义。2.界定在指定泛型时,可以对泛型进行范围界定,指定类型,而不是让其随意传入一个类型。对泛型进行限定:<T extends V> <T super V> [B<:A]:B类型上界时A类型;表示当前泛型类型必须是"某周...原创 2020-02-17 21:21:27 · 156 阅读 · 0 评论 -
25Akka
1.AkkaAkka是spark中提供的通信模型。Akka特点:高可靠.,高性能,高容错,可扩展的分布式RPC功能所有的通信模型都是基于Actor。spark里的角色有两个:master和worker,集群先启动master,然后再启动worker, worker需要向master进行注册,master将注册信息存储到磁盘和内存,向worker 发送注册成功,然后两者开始保持心跳。...原创 2020-02-17 21:17:25 · 157 阅读 · 0 评论