欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

【Scala】Scala语言基础(IDEA创建项目、基本数据类型、range、键盘输入语句)

发布时间:2024/1/1 编程问答 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 【Scala】Scala语言基础(IDEA创建项目、基本数据类型、range、键盘输入语句) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

文章目录

  • 1 简介
  • 2 特点
  • 3 函数式编程
  • 3 为什么要学习Scala
  • 4 第一个程序
  • 5 使用IDEA创建Scala项目
  • 6 Scala的变量
    • 6.1 var变量
    • 6.2 val变量(推荐)
  • 7 Scala的基本数据类型与操作
    • 7.1 数据类型
    • 7.2 操作符
  • 8 range
  • 9 键盘输入语句

1 简介

  • Scala是一门多范式的编程语言
  • Scala运行在Java虚拟机上,并兼容现有的Java程序
  • Scala源代码被编译成Java字节码,所以它可以运行在JVM之上,并可以调用现有的Java类库
  • Scala函数式编程更适合用于Map/Reduce和大数据模型,它摒弃了数据与状态的计算,着眼于函数本身
  • Spark、Flink等都是采用Scala开发的

2 特点

Scala运行在Java虚拟机之上,轻松实现和丰富的Java类库互联互通,既支持面向对象的编程方式,又支持函数式编程,属于静态语言(但是像动态语言一样简介)

总结起来,Scala具有4个核心特点:

  • OOP v.s. OFP:面向对象和函数式
  • Static Type:静态类型
  • Expansibility:扩展性
  • Concurrency:并发性

3 函数式编程

1、特点

  • 函数是一等公民
  • 以表达式为中心
  • 无副作用
  • 不修改状态
  • 引用透明

2、 优势

  • 代码简洁,开发速度快
  • 接近自然语言,易于理解
  • 易于代码管理
  • 适合并发编程
  • 适用于热开发

3、 总结

纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数只要输入确定,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数的内部变量状态不确定,同样的输入可能得到不同的输出,这种函数是有副作用的

3 为什么要学习Scala

1、API优雅

2、速度快:Scala语言表达能力强,开发速度快;Scala是静态编译的,和JRuby和Groovy比起来速度快很多

3、能融合到Hadoop生态圈:Spark不能够替代Hadoop,但是可以完善Hadoop生态,但是Java做出来的API太丑

4 第一个程序

//1、object表示一个伴生对象,简单理解为一个对象 //2、a就是对象的名字,它底层真正对应的类名是a$ // 对象是a$类型的一个静态对象MODULE$ //3、当我们编写一个object对象时,在底层会生成两个.class文件,分别为a和a$ object a { //4、def表示一个方法,是一个关键字 //5、main表示方法名称 //6、args: Array[String]表示形参,scala的特点是参数名在前面,类型在后面 //7、Array[String]表示类型是一个数组 //8、: Unit=表示该函数的返回值为空def main(args: Array[String]): Unit = {print("hello world!");} }

Scala在运行时的流程如下:

  • 先从 a 的 main 开始执行
  • 然后调用 a$ 类的方法 a$ .MODULE$.main
  • 即执行了下面的代码
public void main(String[]args){Predef..MODULE$.print("hello world!");}

5 使用IDEA创建Scala项目

1、创建一个普通的maven项目

2、在main目录下创建一个scala目录,并标记为source root目录

3、加入scala框架(第一次配置选择configure,选择本机的scala目录)


4、选择创建scala项目(选择object)

6 Scala的变量

6.1 var变量

我们在Scala解释器输入var i发现它能够自己识别变量的类型

var变量是可以改变的

完整定义格式:var index1 : Int=1

6.2 val变量(推荐)

val变量是不可变的,相当于java中的常量

例如:

var变量是不好的存在,在Scala中尽可能使用val的不变量,主要原因是:

  • val的不可变有助于清理头绪,但是相对的会付出一部分性能代价
  • 使用var,可能会担心值被错误的更改
  • 使用val而不是var的第二点好处是他能更好支持等效推论
  • 7 Scala的基本数据类型与操作

    7.1 数据类型

    Scala拥有和java一样的数据类型,和java的数据类型内存布局、精度完全一致

    • Byte、Char、Short、Int、Long、Float、Double和Boolean。
    • Unit:表示无值,与void相同
    • Null:表示空值或空引用,可以赋值给任意引用类型(AnyRef),但是不能赋值给值类型(如:Int、Float、Char、Boolean等)
    • Nothing:最底端,表示没有值
    • Any:表示所有类型的超类,任何实例都属于Any类型
      例如:person p = new person();any是new person()的超类
    • AnyRef:表示所有类型的超类

    在Scala中,这些类型都是“类”,并且都是包“scala”的成员,比如,Int的全名是scala.Int。对于字符串,Scala用java.lang.String类来表示字符串。

    例如:

    7.2 操作符

    在Scala中,可以使用加(+)、减(-) 、乘(*) 、除(/) 、余数(%)等操作符,而且,这些操作符就是方法。例如,5 + 3和(5).+(3)是等价的,也就是说:

    a 方法 b a.方法(b)

    需要注意的是和Java不同,在Scala中并没有提供++和–操作符,当需要递增和递减时,可以采用如下方式表达:

    scala> var i = 5; i: Int = 5 scala> i += 1 //将i递增 scala> println(i) 6

    8 range

    在执行for循环时,我们经常会用到数值序列,比如,i的值从1循环到5,这时就可以采用Range来实现。

    在创建Range时,需要给出区间的起点和终点以及步长(默认步长为1)。下面通过几个实例来介绍:

    1、创建一个从1到5的数值序列,包含区间终点5,步长为1

    scala> 1 to 5 res0: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5)

    之前我们已经介绍过,在Scala中允许对“字面量”直接执行方法,所以,上面的代码,也可以用下面的代码来实现:

    scala> 1.to(5) res0: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5)

    2、创建一个从1到5的数值序列,不包含区间终点5,步长为1

    scala> 1 until 5 res1: scala.collection.immutable.Range = Range(1, 2, 3, 4)

    3、创建一个从1到10的数值序列,包含区间终点10,步长为2

    scala> 1 to 10 by 2 res2: scala.collection.immutable.Range = Range(1, 3, 5, 7, 9)

    9 键盘输入语句

    例子:从控制台接收用户信息(姓名,年龄,薪水)

    import scala.io.StdInobject TestScala {def main(args: Array[String]): Unit = {println("请输入姓名")val name = StdIn.readLine()println("请输入年龄")val age = StdIn.readInt()println("请输入薪水")val sal = StdIn.readDouble()printf("name=%s age=%d sal=%f",name,age,sal)} }

    总结

    以上是生活随笔为你收集整理的【Scala】Scala语言基础(IDEA创建项目、基本数据类型、range、键盘输入语句)的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。