scala 中的变量

一、变量

1.1 scala 变量使用步骤

1、声明/定义变量 (scala 要求变量声明时初始化)
2、使用

package variable

/**
 * scala 变量输出的三种方式
 */
object Point2 {
  def main(args: Array[String]): Unit = {
    // 1、使用 +
    var name: String = "tom"
    var sal: Double = 1.2
    println ("hello" + sal + name)
    // 2、使用格式化的方式 printf
    printf("name=%s sal=%f\n", name, sal)
    // 3、使用 $ 引用的方式,输出变量,类似 php
    println(s"第三种方式 name=$name sal = ${sal + 1}")
  }
}

注:scala 中变量声明必须初始化。

1.2 scala 语言变量使用说明

1、基本语法:var | val 变量名 : 变量类型 = 变量值。
2、声明变量时,类型可以省略(编译器自动推导,即类型推导)。
3、类型确定后,就不能修改,说明 scala 是强数据类型语言。
4、在声明/定义一个变量时,可以使用 var 或者 val 来修饰,var 修饰的变量可改变,val 修饰的变量不可改。
(1) val 修饰的变量在编译后,等同于加上 final。
(2) var 修饰的对象引用可以改变,val 修饰的则不可改变,但对象的状态(值)却是可以改变的。(比如:自定义对象、数组、集合等等)。

scala 设计者为什么设计 var 和 val ?
1、在实际编程,我们更多的需求是获取/创建一个对象后,读取该对象的属性或者是修改对象的属性值,
但是我们很少去改变这个对象本身,这时,我们就可以使用 val。
2、因为 val 没有线程安全问题,因此效率高,scala 的设计者推荐我们 val。
3、如果对象需要改变,则使用 var。

1.3 scala 中的数据类型

1、介绍
(1) Scala 与 Java 有着相同的数据类型,在 Scala 中数据类型都是对象,也就是说 scala 没有 java 中的原生类型。
(2) Scala 数据类型分为两大类 AnyVal(值类型) 和 AnyRef(引用类型),注意:不管 AnyVal 还是 AnyRef 都是对象。
(3) 相对于 java 的类型系统,scala 要复杂些,也正是这复杂多变的类型系统才让面向对象编程和函数式编程完美的融合在了一起。

2、scala 数据类型图
在这里插入图片描述
(1) 在 scala 中有一个根类型 Any,他是所有类的父类。
(2) scala 中一切皆为对象,分为两大类 AnyVal(值类型)、AnyRef(引用类型),他们都是Any子类。
(3) Null 类型是 scala 的特别类型,它只有一个值 null,他是 bottom class,是所有 AnyRef 类型的子类。
(4) Nothing 类型也是 bottomclass,他是所有类的子类,在开发中通常可以将 Nothing 类型的值返回给任意变量或者函数,这里抛出异常使用很多。

3、scala 数据类型列表
在这里插入图片描述

4、值类型转换
(1) 隐式转换
在这里插入图片描述
A、有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
B、当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换。
C、(byte, short) 和 char 之间不会相互自动转换。
D、byte、short、char 他们三者可以计算,在计算时首先转换为 int 类型。
E、自动提升原则,表达式结果的类型自动提升为操作数中最大的类型。

(2) 强制类型转换
A、自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转函数,但可能造成精度降低或溢出,格外要注意。
B、当进行数据的从大 -> 小,就需要使用到强制转换。
C、强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级。
D、Char 类型可以保存 Int 的常量值,但不能保存 Int 的变量值,需要强转。
E、Byte 和 Short 类型在进行运算时,当做 Int 类型处理。

<think>嗯,用户想知道在Ubuntu系统中如何正确配置Scala的环境变量。首先,我需要回忆一下相关的步骤。根据之前看到的引用内容,比如引用[1]提到使用tar命令解压Scala到/usr/local目录,然后配置环境变量。引用[4]则具体说明了在.bashrc文件中添加PATH变量,路径是/usr/local/share/scala-2.12.12/bin。不过用户可能使用的Scala版本不同,所以路径中的版本号需要根据实际情况调整。 首先,我应该确认安装步骤是否正确。通常安装Scala需要先安装JDK,因为Scala运行在JVM上,这点引用[3]也提到了。所以可能需要先检查Java是否安装。然后解压Scala的压缩包到指定目录,比如/usr/local,这样符合Linux的标准做法。 接下来,环境变量的配置是关键。用户需要编辑.bashrc文件,添加SCALA_HOME和PATH变量。这里要注意路径是否正确,特别是版本号部分,比如用户安装的可能是2.13.10而不是2.12.12。需要提醒用户根据实际安装目录修改。 另外,引用[2]提到验证安装和环境变量配置,所以应该指导用户如何验证,比如运行scala -version命令。如果出现问题,可能需要检查路径是否正确,或者重新加载.bashrc文件。 可能用户遇到的常见问题包括路径错误、忘记source .bashrc导致配置未生效,或者版本不兼容。需要将这些潜在问题考虑进去,并在回答中给出解决方案。例如,建议用户使用tar解压时指定正确的目标目录,或者使用ls命令确认路径是否存在。 最后,是否需要添加SCALA_HOME变量?有些教程可能会建议设置SCALA_HOME,然后在PATH中引用它,这样更灵活。比如export SCALA_HOME=/usr/local/scala-2.13.10,然后PATH=$PATH:$SCALA_HOME/bin。这样如果以后版本升级,只需修改SCALA_HOME即可,不需要改动PATH的其他部分。这可能是一个更好的做法,但引用中提到的例子是直接添加路径到PATH里。需要根据引用内容来决定,因为用户提供的引用[4]是直接添加PATH,所以可能需要遵循这个例子,或者同时建议两种方式。 总结步骤应该是:1. 安装JDK;2. 解压Scala到指定目录;3. 编辑.bashrc添加环境变量;4. 验证安装。同时需要给出具体的命令示例,比如解压命令、编辑文件的命令,以及验证命令。还要注意权限问题,可能需要使用sudo来解压到/usr/local目录,但用户是否有权限?如果用户没有sudo权限,可能需要安装到用户目录,比如~/apps,这时候环境变量的路径也要相应调整。 另外,是否需要系统级配置还是用户级配置?用户可能是在自己的账户下配置,所以修改~/.bashrc是合适的。如果是系统级配置,可能需要放在/etc/profile里,但一般用户可能没有权限,所以指导用户修改自己的.bashrc更安全。 可能的误区是用户下载的Scala版本和教程中的不一致,导致路径错误,需要强调根据实际版本修改路径。还有,环境变量修改后需要重新加载或者新开终端才会生效,这点也要提醒用户。</think>在Ubuntu系统中配置Scala环境变量需按以下步骤操作: ### 1. **安装依赖(JDK)** Scala依赖Java环境,需先安装JDK 1.8或更高版本: ```bash sudo apt update sudo apt install openjdk-8-jdk ``` 验证Java安装:`java -version`。 ### 2. **解压Scala安装包** 将下载的Scala压缩包(如`scala-2.13.10.tgz`)解压到系统目录: ```bash sudo tar -zxvf scala-2.13.10.tgz -C /usr/local # 需根据实际文件名调整[^1] ``` ### 3. **配置环境变量** 编辑用户环境变量文件`.bashrc`: ```bash nano ~/.bashrc # 或使用vim等其他编辑器 ``` 在文件末尾添加以下内容(**注意版本号需与实际路径一致**): ```bash export SCALA_HOME=/usr/local/scala-2.13.10 # 解压后的目录名可能不同,需核对 export PATH="$PATH:$SCALA_HOME/bin" ``` 保存后执行`source ~/.bashrc`使配置生效[^4]。 ### 4. **验证配置** 输入命令检查是否成功: ```bash scala -version ``` 若输出类似`Scala code runner version 2.13.10`,则配置成功[^2]。 ### 常见问题解决 - **路径错误**:若提示`scala: command not found`,检查`SCALA_HOME`路径是否与解压目录完全一致,可使用`ls /usr/local`确认。 - **环境变量未生效**:确保执行`source ~/.bashrc`或重启终端。 - **版本兼容性**:确保Scala版本与Spark或其他依赖组件兼容[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值