第1课 Scala语法提炼

简介:
作业1:移除一个数组中第一个负数后的所有负数
import scala.collection.mutable.ArrayBuffer

//定义过滤函数
def myfilter(param1:ArrayBuffer[Int]):ArrayBuffer[Int]={
//定义boolean变量,用于判断是否是第一个负数 
var first = true 
//便利数组
        for(element <- param1){
 //找到负数
 if(element < 0)
   {
     //判断是否是第一个
     if(first == true)
first = false 
     else
//不是第一个则从原数组中去除
param1 -= element
   }
}
param1
}
学习笔记总结:
1:可变变量声明, var int a

                             val 不可变变量声明,val int a

对于变量来说,尽可能使用不可变变量,在声明变量时可以声明类型也可以不声明类型,但是声明类型后,赋值时,只能赋值同类型或子类型的值。

        Java中存在基本类型和封装类型,但是scala中基本类型和引用类型是可以自动转换的,即基本类型也是有方法的,如1.tostring()(一切皆对象),再如,1+1 执行时是1.+(1)

        Scala中无++——操作符,但是可以用 +=-=代替,scala提供了大量的库,如scala.math._库中min()max()

        在建立对象时,scala是调用objectapply方法进行的,类似于java中的工厂方法。

        Scala中表达式是有结果或返回值的,这点与java不同,代码块的返回值是,代码块的最后一行的内容的值。

2:  循环结构:while循环

               for循环:  for(i <- 0 to 20 )   println(i)

                                    for(i<- 0 to 20 if i % 2 == 0) println(i)

       函数定义 def   f1:int = { 函数体 }   (最后一行为返回值)

在函数定义时,若是无法推断函数的返回值时,函数必须显示声明返回值。

        默认参数:def f1(param1:int, param2:String = “spark”) = param1 + param2

        变长参数:def f1(param:int*) = {},主要是在int后面加上*号

        range转换为函数参数:1 to 100 : _*  range中的所有元素提取出来。

        过程即是没有返回值的函数。

        Lazy变量:只有在第一次调用时才执行的变量,一般用于耗时的操作中,如文件的读取。

        异常处理:try{

}catch{

}finally{

}

catch代码块中用于捕获异常,finally始终执行,用于一些类似于关闭文件的操作。

3:scala中的ArrayMapTuple

Array可以先声明后赋值,亦可以直接赋值。例如

        Val array = Array[Int](5)

               array(1) = 2

        val array = Array (1, 2, 3, 4)

可变数组ArrayBuffer,可以加入任意数量的元素,不会出现数组越界。

        加入操作: arrayBuffer+= (2,3,4)

        删除操作:.trimStart(n)    //从数组的头开始删除n个元素

.trimEnd(n)    //从数组的尾开始删除n个元素

.remove(d)     //从数组中删除第d位的元素

并返回删除元素的值

                               .remove(d,n) //删除数组中从d位算起的其后n个数

              插入操作:.insert(d,x)//d位插入元素,其中可以插入一个或多个元素

              转换操作: arraybuffer.toArray    //将可变数组转换为长度不可变数组

                                          Array.toBuffer      //将不可变数组转换为长度可变数组

       数组遍历:for(i<- 0 until (arr.length, 2))   println(arr(i))

                            for(i <- (0 untilarr.length) .reverse)   println(arr(i))//从尾部开始遍历

数组转换为字符串:arr.mkString(“,”)

  排序:         scala.util.Sortint.quickSort(arr)

  遍历时可以使用yield,其将收集yield后的表达式的值并组成一个Array

for (i <- arr if i % 3 == 0) yield i*i

过滤: arr.filter(_ % 3 == 0).map( i => i*i )

 

Map存储的是键值对

val person =  map(“spark” -> 6, “hadoop” -> 11)   //赋值

person += (“flink”-> 5)                 //添加

person -= (“flink” -> 5)                   //删除

person.contains(“spark”)                 //包含

person.getorElse(“spark”,100)   <=>

if(person.contains(“spark”)person(“spark”)else 100)

for((key,value) <- person)  println(key + ” ”+value)  //遍历

              scala.collection.immutable.SortedMap(“key”->value)//key值排序

 

tuple元组    val tuple = “spark” 6 9 6  //赋值,tuple可以包含任意类型元素

                                   tuple._1                        //取元组中位置为1的元素

目录
相关文章
|
2月前
|
Java 程序员 编译器
Scala 基础语法
Scala 基础语法
34 2
|
8月前
|
程序员 Scala
scala的基础语法
scala的基础语法
75 3
|
8月前
|
大数据 Scala
大数据生态思维导图____2021最新最全Scala语法思维导图!(待更新)
大数据生态思维导图____2021最新最全Scala语法思维导图!(待更新)
64 0
|
Java 编译器 Scala
158 Scala基础语法
158 Scala基础语法
59 0
|
安全 Java 编译器
Scala语言入门:初学者的基础语法指南
作为一种在Java虚拟机(JVM)上运行的静态类型编程语言,Scala结合了面向对象和函数式编程的特性,使它既有强大的表达力又具备优秀的型态控制
100 0
|
Java Scala C++
Scala选择和循环语法
Scala选择和循环语法
63 0
|
SQL 分布式计算 Java
Scala基础语法
Scala基础语法
116 0
|
JavaScript 前端开发 Java
Scala语言入门以及基本语法
Scala语言入门以及基本语法
|
Java 大数据 Scala
大数据开发基础的编程语言的Scala的基础语法
Scala是一种基于JVM的多范式编程语言,它支持面向对象编程和函数式编程,并具有强大的类型推导机制和静态类型检查。本文将介绍Scala的基础语法,帮助开发者快速入门这门语言。
83 0
|
Java 编译器 Scala
Scala基本语法
Scala基本语法
Scala基本语法