Scala入门

why is Scala?

1)Spark新一代内存级大数据计算框架,是大数据的重要内容。

2)Spark就是使用Scala写的。因此为了更好的学习Spark, 需要掌握Scala这门语言海量数据的采集,存储,计算分析mapreduce,Spark】/ [java,python,scala主力]】

3)Scala Scalable Language 的简写,是一门(编程的方式[面向对象编程,函数式编程])编程语
4)邦理工学院洛桑(EPFL Martin Odersky2001/2003推出 年开始设计Scala

5)Spark的兴起,带动Scala语言的发展!

Scala语言诞生小故事

始人马丁·奥德斯基(Martin Odersky)是编译器及编程的狂热爱好者,长时间的编程之后,希望发明一种语言,能够让写程序这样的基础工作变得高效所以当接触到JAVA语言后,对JAVA这门便携式,运行在网络,且存在垃圾回收的语言产生了极大的兴趣,所以决定将函数式编程语言的特点融合到JAVA中,由此发明了两种语言(Pizza & Scala

 

PizzaScala大地推动了Java编程语言的发展。[如何理解?]

 

jdk5.0 的泛型,for循环增强, 自动类型转换等,都是从Pizza 引入的新特性。

jdk8.0 的类型推断,Lambda表达式就是从scala引入的特性

 

且现在主流JVMjavac编译器就是马丁·奥德斯基编写出来的。Jdk5.0 Jdk8.0编译器就是马丁·奥德斯的,因此马丁·奥德斯个人的战斗力抵得上一个Java开发团队。

Scala Java  以及 jvm 的关系分析图

般来说,学Scala的人,都Java,而Scala

是基于Java的,因此我们需要将ScalaJava以及JVM

的关系搞清楚,否则学习Scala你会蒙圈。

 

:如果没有任何Java基础的同学,先学Java,至少要

学习JavaSE,再学习Scala

 

我们析一下Scala Java  以及 jvm 的关(重要!)

Scala语言的特点

Scala是一门以java虚拟机(JVM)为运行环境并将面向对象函数式编程的最佳特性结合在一

态类型编程语

 

1)Scala 是一门多范(multi-paradigm) 编程语言,Scala持面向对象和函数式编

2)Scala源代码(.scala)会被编译成Java字节码(.class),然后运行于JVM之上,并可以调用现有的Java类库,实现两种语言的无缝对[例演示]

3)scala 单作为一门语言来看, 非常的简洁高效  三元运算符, ++  --】

4)Scala 在设计时,马丁·奥德斯基 是参考了Java的设计思想,可以说Scala是源于java,同时马丁·奥德斯基 也加入了自己的思想,将函数式编程语言的特点融合到JAVA, 此,对于学习过Java的同学,只要在学习Scala的过程中,搞清楚Scala java相同点和不同点,就可以快速的掌握Scala这门语

速有效掌握Scala的建议 [1. 学习sala独有的内容(语法,功能)2 搞清scala java的区别,3 如果正确的规范的使用scala]  //ssm  => ssh hibernate mvc

 

 

Scala快速开发入门

//对scala的基本的程序结构说明

//1. object 是一个关键字,表示一个伴生对象

//2. 如果该文件只出现了一个object HelloScala 就会在编译后两个.class文件

//3. 第一个文件是HelloScala.class 这个表示他的伴生类,但是空的.

//4. 第2个文件是HelloScala$.class 对应的是object HelloScala,但是本质是调用它对应的一个静态属性 MODULE$

//5. 这两个文件的关系和main函数的入口关系一会分析

object HelloScala {

      // 1. def 表示一个方法或者一个函数

      // 2. main 表示入口

      // 3. args: Array[String] 表示形参,args 是形参名 Array[String] 是形参类型表示一个Array数组

      // 4. :Unit  表示返回值类型为 Unit ,等价于java 的void

      // 5. = 表示 后面写的是函数体/方法体, 它还有返回值类型推导的作用

      def main(args: Array[String]):Unit = {

             // 表示是 输出, 类似System.out.println("hello, scala世界!")

             // 在scala 语句后,不需要带; //体现简洁

             println("hello, scala世界!")

      }

}

 

 

代码:

object HelloScala {

  def main(args: Array[String]): Unit = {

    println("hello,scala!")

  }

}

Scala程序反编译

  1. 看反编译代码
  2. 模拟代码

 

//类

public final class HelloScala2

{

    public static void main(String[] paramArrayOfString)

    {

        HelloScala2$.MODULE$.main(paramArrayOfString);

    }

}

 

final class HelloScala2$

{

    public static final HelloScala2$ MODULE$;

    static

    {

        MODULE$ = new HelloScala2$();

    }

    public void main(String[] args)

    {

        System.out.println("hello,scala!~~~~~~ 模拟");

    }

    //private HelloScala$() { MODULE$ = this; }

}

  • 为什么一个object A,对应两个class 文件

Scala执行流程分析

Scala语言输出的三种方式

  1. 字符串通过+号连接(类似java)。
  2. printf用法 (类似C语言)字符串通过 % 传值。(格式化输出)
  3. 字符串通过$引用(类似PHP)。

object InputDemo {

  def main(args: Array[String]): Unit = {

    val name:String = "tom"

    val age:Int = 10

    val sal:Double = 7890.144

    //格式化输出

    //sal=%.2f 保留小数点两位的方式输出(四舍五入)

    printf("name=%s age=%d sal=%.2f\n", name, age, sal)

    //字符串通过$引用(类似PHP)。

    println(s"name=$name age=${age+1} sal=$sal sum2=${sum2(23,90)}")

  }

  //函数/方法

  def sum2(n1:Int,n2:Int): Int = {

    return n1 + n2

  }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值