scala学习

Scala第一天

目录

Scala第一天

1 Scala介绍

2 Scala开发环境安装

2.1 安装JDK

2.2 安装scala SDK

2.3 安装IDEA scala插件

3 scala解释器

3.1 启动scala解释器

3.2 执行scala代码(hello world)

3.3 退出解释器

4 声明变量

4.1 语法格式

4.2在解释器中定义一个变量

4.3 val和var变量

4.4使用类型推断来定义变量

4.5 惰性赋值

5字符串

5.1 使用双引号

5.2 使用插值表达式

5.3 使用三引号

6数据类型与操作符

6.1 数据类型

6.2 运算符

7条件表达式

7.1 有返回值的if

7.2 块表达式

8循环

8.1 for表达式


1 Scala介绍

2 Scala开发环境安装

2.1 安装JDK

安装JDK 1.8 64位版本,并配置好环境变量

2.2 安装scala SDK

本次安装的版本是: 2.12.11

 

百度网盘:

链接:https://pan.baidu.com/s/1GVNIklmyPNERMrNYuUwpRg 

提取码:p1lh 

双击安装

配置环境变量

 在cmd窗口输入  scala -version 

 

出现版本号说明安装成功了

2.3 安装IDEA scala插件

IDEA默认是不支持scala程序开发,所以需要来安装scala插件来支持scala语言。

 装完插件后重启

3 scala解释器

3.1 启动scala解释器

cmd窗口输入输入scala即可

3.2 执行scala代码(hello world)

println(“hello world”)

3.3 退出解释器

:quit

 

4 声明变量

4.1 语法格式

在scala中,可以使用val或者var来定义变量,语法格式如下:

val/var 变量标识:变量类型 = 初始值

其中:

val定义的是不可重新赋值的变量

var定义的是可重新赋值的变量

* scala中定义变量类型写在变量名后面

* scala的语句最后不需要添加分号

4.2在解释器中定义一个变量

示例:定义一个变量保存一个人的名字"tom"

4.3 val和var变量

给名字变量进行重新赋值为Jim,发现报错了,val 定义的变量不能改变值

 使用var重新定义变量来保存名字"tom",并尝试重新赋值为Jim,不报错

优先使用val定义变量,如果变量需要被重新赋值,才使用var

4.4使用类型推断来定义变量

使用更简洁的语法定义一个变量保存一个人的名字"tom" 

 scala可以自动根据变量的值来自动推断变量的类型,这样编写代码更加简洁

4.5 惰性赋值

在企业的大数据开发中,有时候会编写非常复杂的SQL语句,这些SQL语句可能有几百行甚至上千行。这些SQL语句,如果直接加载到JVM中,会有很大的内存开销。

当有一些变量保存的数据较大时,但是不需要马上加载到JVM内存。可以使用“惰性赋值”来提高效率。

语法格式:

lazy val/var 变量名 = 表达式

被标记为惰性的变量, 什么时候使用, 什么时候才会进行加载

 

5字符串

使用三引号方式来定义变量, 一般适用于定义大量文本情况, 定义后, 会保持原有的格式, 也就是输入的格式是什么样子, 输出的格式就是什么样, 同时在三引号内部 认为所有的都是字符串

scala提供多种定义字符串的方式,将来我们可以根据需要来选择最方便的定义方式。

  • 使用双引号
  • 使用插值表达式
  • 使用三引号

5.1 使用双引号

语法

val/var 变量名 = “字符串”

示例

有一个人的名字叫"hadoop",请打印他的名字以及名字的长度。

 

 

5.2 使用插值表达式

scala中,可以使用插值表达式来定义字符串,有效避免大量字符串的拼接

语法

val/var 变量名 = s”${变量/表达式}字符串”

在定义字符串之前添加s

在字符串中,可以使用${}来应用变量或者编写表达式

示例

请定义若干个变量,分别保存:"zhangsan"、30、"male",定义一个字符串,保存这些信息。

打印输出:name=zhangsan, age=30, sex=male 

 

5.3 使用三引号

如果有大段的文本需要保存,就可以使用三引号来定义字符串。

例如:保存一大段的sql语句。三个引号中间的所有字符串都将作为字符串的值。

语法

val/var 变量名 = """字符串1

字符串2"""

示例

定义一个字符串,保存以下SQL语句

select

*

from

    t_user

where

name = "zhangsan"

打印该SQL语句

 

6数据类型与操作符

scala中的类型以及操作符绝大多数和Java一样,我们主要来学习

  1. 与Java不一样的一些用法
  2. scala类型的继承体系

6.1 数据类型

 

注意下 scala类型与Java的区别

  • scala中所有的类型都使用大写字母开头
  • 整形使用`Int`而不是Integer
  • scala中定义变量可以不写类型,让scala编译器自动推断

6.2 运算符

  • scala中没有,++、--运算符

  • 与Java不一样,在scala中,可以直接使用==、!=进行比较,它们与equals方法

表示一致。而比较两个对象的引用值,使用eq

示例

有一个字符串"abc",再创建第二个字符串,值为:在第一个字符串后拼接一个空字符串。

然后使用比较这两个字符串是否相等、再查看它们的引用值是否相等。

6.3 scala类型层次结构

 

类型

说明  

Any     

是所有数据类型的共同的父类, 类似于java中Object

AnyVal  

所有数值类型的父类

AnyRef

所有对象类型(引用类型)的父类

Unit

是 AnyVal下子类, 表示空,  类似于 java中 void

Null

是所有引用类型的子类, 引用类型的可以赋值为 Null

Nothing

是所有类型的子类, 一般直接使用这个类型, 此类型主要是程序在出现异常的时候, 其返回值的类型是Nothing

问题

以下代码是否有问题?

val b:Int = null

 

scala会解释报错:

Null类型并不能转换为Int类型,说明Null类型并不是Int类型的子类

 

7条件表达式

条件表达式就是if表达式,if表达式可以根据给定的条件是否满足,根据条件的结果(真或假)决定执行对应的操作。scala条件表达式的语法和java一样。

7.1 有返回值的if

与Java不一样的是

  • 在scala中,条件表达式也是有返回值的
  • 在scala中,没有三元表达式,可以使用if表达式替代三元表达式

示例

定义一个变量sex,再定义一个result变量,如果sex等于"male",result等于1,否则result等于0

 

7.2 块表达式

  1. scala中,使用{}表示一个块表达式
  2. 和if表达式一样,块表达式也是有值的
  3. 值就是最后一个表达式的值

这段代码 a = 2

8循环

在scala中,可以使用for和while,但一般推荐使用for表达式,因为for表达式语法更简洁

8.1 for表达式

语法

java的for循环:

    for(int i = 10 ; i <= 20 ; i ++) {

       xxxx

    }

scala中定义for循环:

    for(i <- 表达式/数组/集合) {

     // 表达式

}

8.1.1 简单循环

使用for表达式打印1-10的数字 

步骤

1. 生成1-10的数字(提示:使用to方法)

2. 使用for表达式遍历,打印每个数字

参考代码1

简写方式

参考代码2

 

8.1.2 嵌套循环

需求 打印一个 三行五列的 *号  

使用for表达式,打印以下字符

*****

*****

*****

步骤

1. 使用for表达式打印3行,5列星星

2. 每打印5个星星,换行 

 

8.1.3 守卫

for表达式中,可以添加if判断语句,这个if判断就称之为守卫。我们可以使用守卫让for表达式更简洁。

for(i <- 表达式/数组/集合 if 表达式) {

    // 表达式

}

 需求: 使用for表达式打印1-10之间能够整除3的数字

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值