大数据笔记--scala(第一篇)

目录

一、Scala介绍 

1、概述

2、Scala语言的特点

二、Scala Windows运行环境配置及使用

1、安装步骤

2、两种模式

3、使用IDE来开发Scala

①、eclipse

②、IDEA

三、Scala基础语法一

1、基础

2、类型转换

3、scala运算符

4、基础语法

四、Scala基础语法二

1、for循环

2、for yield


一、Scala介绍 

官网:http://www.scala-lang.org

1、概述

Scala即是面向对象的语言,也是面向函数的语言。scala可以为你在做大量代码重用和扩展时提供优雅的层次结构,并可以通过高阶函数来实现这样的目标。(高阶函数是函数式编程里的特性之一,允许函数作为参数传递,也允许函数作为返回值来返回)

创始人:Martin Odersky马丁·奥德斯基,他在整个职业生涯中一直不断追求着一个目标:让写程序这样一个基础工作变得高效、简单、且令人愉悦。他编写了javac,这是目前大部分Java程序员所使用的编译器。他也编写了Scala编译器scalac。

2、Scala语言的特点

Scala并不适用于编程的初级课程,反而它是为专业程序员定制的强力语言。

1)它是一门现代编程语言,作者是Martin Odersky(javac之父),受到Java、Ruby、Smalltalk、ML、Haskell、Erlang等语言的影响。

2)它即是一门面向对象(OOP)语言,每个变量都是一个对象,每个“操作符”都是方法。scala语言在面向对象的方面,要比java更彻底。 

3)它同时也是一门函数式(FP)编程语言,可将函数作为参数传递。可以用OOP与FP结合编写代码。

4)Scala代码通过scalac编译成.class文件,然后在JVM上运行,可以无缝使用已有的丰富的Java类库。即Scala的代码会编译成字节码,运行在Java虚拟机(JVM)上。

5)接触语言的第一天你就能编出有趣的程序,但是这门语言很深奥,随着学习的深入,你会发现更新、更好的编写代码的方式。Scala会改变你对编程的看法。针对同一任务,可以有很多种不同的实现方式,并且可读性以及性能都有不一样的体现。

二、Scala Windows运行环境配置及使用

1、安装步骤

①、安装scala-2.11.7.msi,一直下一步就行

 

②、添加scala安装目录的bin目录的路径到系统的环境变量中

③、通过cmd命令窗口,输入scala

2、两种模式

交互模式:可以通过命令行直接输入scala命令,比如:

编译模式:也可以先编写  ***.scala文件,通过执行文件来执行命令,比如:

先在D盘下创建一个scala.scala文件

然后通过cmd运行:

3、使用IDE来开发Scala

我们可以使用eclipse或者IDEA来进行scala的开发:

①、eclipse

eclipse我推荐一款集成scala插件的版本

直接解压就可使用:

 打开后是这样的:

②、IDEA

idea我们可以安装scala的插件:

 

 然后重启新建项目:

 寻找本机安装的scala

 

选择scala的安装文件

 

 然后创建即可:

三、Scala基础语法一

1、基础

语句

说明

示例

var

用来声明一个变量,
变量声明后,在程序执行过程中可以被修改。

 

val

用来声明一个常量,
一旦被赋值就不能再进行修改

操作符

scala中操作符即方法,方法即操作符

所以 可以认为 scala中并没有传统意义上的操作符 所有的操作符都是方法 所有的方法也都可以像操作符一样去使用

算术运算符

+ - * / %

关系运算符

==  !=  >   <   >=  <=== > < >= <=

逻辑运算符

&&  ||  !

位运算符

~  &  |  ^  <<   >>   >>>

赋值运算符

=  +=  -=   *=   /=   %=

1、scala的变量和常量
        变量:var(variable的缩写),变脸赋值后可以修改的
        常量:val(value的缩写),常量一经赋值,不允许更改
2、scala是以换行符为一条语句的结束标识,所以不需要加;
3、如果要在一行中写多条语句,则需要用;隔开   比如:val v3="hello" ;val v4=150
4、scala不需要显示的指定对象类型,可以根据结果自动推断出类型
5、scala也可以显示的指定对象类型,比如:  val v5:Int=100
6、变量var赋值后可以修改,但是需要和初始类型保持一致
7、scala中没有基本类型。即
        Int,Short,Char,Double,Float,Boolean,Byte,Long等在scala中都是一个类。比如下面的v1,v2等本质上都是一个对象。
        所以可以这样来理解:在scala中,都是类(类对象)和方法(函数),所以scala的面向对象要比java更彻底
8、scala中的顶级父类是Any,可类比于Java的Object

1、scala中用于对象、类、方法的名称称为标识符。标识符区分大小写,关键字不能作为标识符,命名规则:
        ①类名首字母大写
        ②方法名首字母小写
        ③可以由字母、数字、下划线和$组成。但建议:最好不要用下划线_和$。因为在scala底层有特殊作用
        ④不能由数字开头

2、scala中一共有39个关键字。
val var true false null try catch finally throw class object this super
private protected extends with override import package abstract  trait new type lazy sealed
if else do while for yield match case def return implict forSome final

3、scala的运算符包含以下几种类型:
        ①算术运算符: +  -  *  /  %
        ②关系运算符: ==  !=  >   <  >=  <=
        ③逻辑运算符: &&  ||  !
        ④位运算符:& ! ^  <<  >>
        ⑤赋值运算符: =  +=  -=  *= /=  %=

        注意:scala中没有三目(三元)运算符,也没有++ --操作符
4、如果想通过scala的手册去查方法,可以在scala安装目录\api\scala-library\index.html

5、字符串的基础方法:

6、to方法用于生成指定的一个区间。常用于for循环时遍历的次数区间

 

2、类型转换

scala的类型转换,形式固定:to指定类型。比如:toInt toString toLong  toArray toList

3、scala运算符

①、算术运算符

②、关系运算符

③、逻辑运算符

④、位运算符

⑤、赋值运算符

4、基础语法

 1、scala的算术运算符的优先级和java一样,
     但是注意:也可以通过调用方法的形式操作,
     此时按方法调用顺序执行
 2、scala中,print是打印不换行。 println是打印换行
 3、scala中的if else作用同java。不同的在于:scala的 if else有返回值,可以接
 4、scala中的Unit类比于Java的void 空类型。
 5、scala中通用规则:会将方法体{}中最后的那一行代码作为返回值返回。不需要加return关键字
 6、scala中print或println 的返回值为Unit
 7、scala中通用的化简规则:如果方法体{}中只有一行代码,则方法体{}可以省略
 8、if else的方法体如果返回值类型不一致,则返回的类型为Any。建议返回值类型保持一致
 9、scala中的while用法同java。
10、scala中通过下标操作集合集合类型时,是通过(index),不同于java的[index]


object ScalaDemo02 {
  def main(args: Array[String]): Unit = {
    println(1+2*3)            //结果位7
    println(1.+(2).*(3))      //结果为9

    val num =8
    val result =if(num>5){
      println("big")          //打印big
      100
    }else{
      println("small")
      200
    }
    println(result)           //返回值为 100

    val result02=if(num>5) "big" else "small"
    println(result02)         //result02 为big

    if(num>5){
      println("big")      //结果打印big
    }else if(num==5){
      println("equal")
    }else{
      println("small")
    }

    val a1=Array(1,2,3,4)
    var index=0
    while(index<a1.length){
      println(a1(index))        //结果遍历数组,换行输出 1 2 3 4
      index+=1
    }
  }

}

四、Scala基础语法二

1、for循环

scala中的for要比java的for强大,使用很频繁,需要熟练掌握。

object ScalaDemo03 {
  def main(args: Array[String]): Unit = {
    //生成一个1~100的区间,区间类型是range
    val a1 = 1 to 100
    //循环遍历并打印
    for(i<-a1){
      println(i)
    }
    //支持条件过滤
    for(i<-a1;if i >50){
      println(i)
    }
    //支持多条件过滤
    for(i<-a1;if i>50;if i%2==0;if i<90){
      println(i)
    }
    //也可以写成下面的形式
    for(i<-1 to 100;if i>50&&i<90&&i%2==0){
      println(i)
    }
  }


}

九九乘法表:

// 方法一 
for (i<-1.to(9)){
    for(j<-1.to(i)){
      print(i+"*"+j+"="+i*j+"\t")
    }
    println()
  }
// 方法二,必须是常量(val)连接
for(i<-1.to(9);j<-1.to(i);val sep=if(i==j)"\r\n" else "\t"){
    print(i+"*"+j+"="+j*i+sep)

    print(s"$i*$j=${i*j}$sep") // 两种打印方法
}

2、for yield

for yield表达式:遍历一个集合,并将操作的数据返回到一个新的集合中
scala的集合是大的概念,常见的:Array,List,Set,Range,Iterator,Map
for yield 遍历的是什么集合类型,则返回对应类型的新集合。

    val arr = Array(1,2,3,4)
    val arr1=for(i<-arr)yield {i*2}
    for(i<-arr1)print(i)    // 2468

    val list = List(1,2,3,4)
    val list1=for(i<-list)yield {i*2}
    for(i<-list1)print(i)   // 2468

    val map = Map("tom"->23,"jary"->30,"yang"->24)
    //遍历map的k,v对
    for(i<-map)print(i)   //(tom,23)(jary,30)(yang,24)
    //通过二元元组形式来遍历map
    for((k,v)<-map)print(k) //tomjaryyang

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是小先生

知识是无价的,白嫖也可以的。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值