scala的基础语法之变量

2023-10-26

1、类介绍

我们在new scala类的时候,这里分为Class和Object两大类(idea2019.1版本,其他新版本应该是四种,case Class和case Object,不过没关系,这里想要使用case的直接在前面写case即可)。

def是define,是对方法的修饰或者叫定义,Unit代表没有返回值。

这里语句后面不需要写;显得简洁。

2、变量

2.1 数据类型

主要分为两个大的数据类型,AnyVal(value  值数据类型)和AnyRef(reference 引用数据类型),这和java中的数据类别一致。而Any是所有数据类型的父类,类似Java中的object。

值得注意的是,AnyVal下的数据类型都是大体上和Java中的八大数据类型一样,但,scala中他们都是大写字母开头,Unit相当于Java中的void,是无返回值的意思。

AnyRef下的Null和java中的null类似,是所有引用类型的子类。

Nothing是所有类型的子类,通常异常时使用。

2.2变量的定义

格式:var | val 变量名 [:数据类型] =变量值

var:是variable修饰变量的

val:是value修饰不可变量,相当于java中final修饰的变量

[ ]中的变量类型是可以省略的,scala编译器可以对数据类型进行推断

注意:

(1)我们一般在修饰变量时,优先用val,以后需要改变值时,再修改为var。

(2)val是线程安全的,使用效率高。

 

在scala中,对于val age:Int = 23来说,age是一个Int数值类型的变量 , 而数值类型的变量也属于一个对象 , 所以age变量就是一个对象,也拥有很多方法,这一点和java完全不同。

2.3数据类型转换

val age="12"
//变量名.isInstanceOf[数据类型]   判断变量是否是该数据类型
println(age.isInstanceOf[String])
//字符串的拼接,发现String和Int运算自动将Int转为了String,类似Java中的类型转换
val str: String = age+10

//数据类型中提供了toxxx
val i: Int = age.toInt+10
println(i)

//强制类型转换asInstanceOf
val res: Int = age.asInstanceOf[Int]

数值类型之间的转换用toxxx。例如这里的string转int

引用数据类型之间的转换用asInstanceOf来强制类型转换(必须有继承关系)。

总体而言,scala的数据类型转换和java基本一致,高精度的类型转换成低精度(强制类型转换)一样可能出现精度丢失的问题。

2.4运算符

和Java中的一致,这里不多介绍

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

scala的基础语法之变量 的相关文章

  • Spark Collect_list 并限制结果列表

    我有以下格式的数据框 name merged key1 internalKey1 value1 key1 internalKey2 value2 key2 internalKey3 value3 我想做的是将数据框分组name 收集列表并l
  • 如何更改 SBT 命令内的设置?

    我想要一个命令publish snapshot这将运行publish修改后的任务version设置 该设置将在执行命令时计算 我想出了如何获取当前值version内部命令 以及Project runTask task scope 似乎是调用
  • 在 Scala 中生成数字的质因数

    如何在 Scala 中生成整数的因子 这是我的看法1 def factorize x Int List Int def foo x Int a Int List Int if a gt Math pow x 0 5 return List
  • 副作用是纯函数中找不到的一切吗?

    可以肯定地说 以下二分法成立 每个给定的函数是 要么纯粹 或有副作用 如果是这样 函数的 副作用就是纯函数中找不到的任何东西 这很大程度上取决于您选择的定义 可以公平地说 函数是pure or impure 纯函数始终返回相同的结果并且不会
  • 为什么“private val”和“private Final val”不同?

    我曾经以为private val and private final val是一样的 直到我看到 Scala Reference 中的第 4 1 节 常量值定义的形式为 final val x e 其中 e 是常量表达式 第 6 24 节
  • Scala 重载构造函数和 super

    我无法理解如何在 Java 上开发类似于以下的 Scala 代码 public abstract class A protected A protected A int a public abstract class B protected
  • 简单的 Scala actor 问题

    我确信这是一个非常简单的问题 但很不好意思地说我无法理解它 我有一个 Scala 值列表 我想使用演员来并行地对每个值进行一些 外部 调用 我想等到所有值都已处理完毕 然后继续 没有共享值被修改 有人可以建议吗 Thanks Scala 中
  • 《使用 Apache Flink 进行流处理》如何从 IntelliJ 运行书籍代码?

    如中所述这个帖子 https stackoverflow com questions 61043860 how to run first example of apache flink我无法成功运行 使用 Apache Flink 进行流处
  • 将列表拆分为多个具有固定元素数量的列表

    如何将元素列表拆分为最多包含 N 个项目的列表 例如 给定一个包含 7 个元素的列表 创建 4 个组 最后一组可能包含较少的元素 split List 1 2 3 4 5 6 seven 4 gt List List 1 2 3 4 Lis
  • Spark:用列的平均值替换数据框中的空值

    如何创建 UDF 以编程方式将每列中 Spark 数据框中的空值替换为列平均值 例如 在示例中 数据 col1 空值的值为 2 4 6 8 5 5 5 示例数据 col1 col2 col3 2 null 3 4 3 3 6 5 null
  • IntelliJ IDEA Scala 插件问题

    我对新的 Intellij IDEA 10 和 Scala 插件有疑问 当我在 Scala 源文件中输入任何内容时 编辑器会永久冻结 在其他文件 java 和其他 编辑器中效果很好 结构视图 scala 检查和显示成员功能已关闭 堆大小增加
  • Scala:在运行时获取 mixin 接口

    我需要在运行时从给定的类获取所有接口 全部加载在类加载器中 例如 如果一个类是这样声明的 trait B trait C trait D class A extends B with C with D 我想在运行时获取这些信息 A 取决于
  • Scala:如何编写将类型化为接收者的实现类型的对象返回的方法

    我知道 Scala 中不推荐使用案例类继承 但为了简单起见 我在以下示例中使用了它 scala gt case class Foo val f String def foo g String Foo this copy f g define
  • 哪些 ORM 与 Scala 配合得很好? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 新式(“内联”)宏需要 scala.meta

    我刚刚更新到 scala meta 2 0 0 M1 和最新的 scala 2 12 3 现在宏不再编译 我所做的唯一更改是将元版本从 1 8 0 更改为 2 0 0 M1 错误 新式 内联 宏需要 scala meta 有谁知道是否有快速
  • 对于空列表,max() 应该返回什么?

    Got java util NoSuchElementException head of empty list所以我试着检查一下 但现在我明白了 info max of a few numbers FAILED info 0 did not
  • 将 Scala 库转换为 DLL (.NET)

    我正在尝试从 scala 类创建一个 Dll 我将 IntelliJ 与 SBT 一起使用 我已经找到了一种使用 ikvm converter 将 jar 文件转换为 Dll 的方法 现在的问题是 当我在 SBT 下使用 package 从
  • 使用 Spray-json 解析简单数组

    我正在尝试 但失败了 了解 Spray json 如何将 json feed 转换为对象 如果我有一个简单的 key gt value json feed 那么它似乎可以正常工作 但是我想要读取的数据出现在如下列表中 name John a
  • 如何捕获 Oozie Spark 输出

    有没有办法捕获spark的输出然后将其输入到shell上 我们当前正在使用 scala 创建 jar 文件 并希望我们的 Spark 输出成为 shell 输入 我的想法是使用 wf actionData spark XXXX var 我只
  • Play Framework 2.3 (Scala) 中的自定义 JSON 验证约束

    我设法使用自定义约束实现表单验证 但现在我想对 JSON 数据执行相同的操作 如何将自定义验证规则应用于 JSON 解析器 示例 客户端的 POST 请求包含用户名 username 我不仅要确保该参数是非空文本 而且还要确保该用户确实存在

随机推荐

  • MES生产管理系统原型 MES产品原型 Axure产品原型

    MES生产管理系统原型 MES产品原型 Axure产品原型 1 生产管理 包括生产订单 生产计划 生产工单 工序任务单 报工记录 可提供高效的生产排程 2 质检管理 包括质检单 质检方案 检验项目 检验组管理 可提升质量追溯水平 3 库存管
  • uniapp tababr凸出图标已经自定义tabbar

    uniapp关于tabbar的文档 现在我想tabbar中间的显示为凸出的图标 类似下图 只需要在app中使用 不用兼容小程序的话 可以使用官方的midButton配置项 该配置项不兼容各种小程序 midButton height 70px
  • vue中使用el-upload组件修改上传的图片时,每次都会自动闪过上一次的图片

    引言 在进行vue后台管理系统开发的时候又遇到了这个问题 由于上次没有写文章记录 所以还是查看了之前写的项目才解决这个问题 遇到的问题 我将上传的表单单独作为一个组件 假设为A页面 然后在另外一个页面 假设为B页面 中使用Dialog来显示
  • 数据清洗,数据分析,数据挖掘的区别

    数据清洗 是指对原始数据进行预处理 包括去重 去噪 填充缺失值 处理异常值等操作 以提高数据的质量和可用性 保证分析和挖掘的可靠性 数据清洗是数据处理的基本步骤 也是数据分析和数据挖掘的前提 数据分析 是指利用统计学和数据科学技术对数据进行
  • linux 开发设计软件,在Linux平台下开发和设计聊天软件

    在网络无所不在的今天 在Internet上 有ICQ MSN Gtalk OICQ等网络聊天软件 极大程度上方便了处于在世界各地的友人之间的相互联系 也使世界好像一下子缩小了 不管你在哪里 只要你上了网 打开这些软件 就可以给你的朋友发送信
  • Python-第三方库的国内源

    清华 https pypi tuna tsinghua edu cn simple 阿里云 http mirrors aliyun com pypi simple 中国科技大学 https pypi mirrors ustc edu cn
  • 【WSL】[04]从C盘解放出来WSL的linux镜像

    前言 C盘的硬盘资源有限 虚拟机的需求无限 所以 要把无限的硬盘需求搞到其他盘去才行啊 方案1 利用工具 move wsl 1 管理员运行PowerShell 创建WSL的工作目录 移动前 C盘的空间大小 base PS C WINDOWS
  • String、StringBuffer、StringBuilder三者的区别

    在前面的文章中 我们已经分别介绍了String StringBuffer StringBuilder三者的基本使用 还不懂String StringBuffer StringBuilder这三个类是如何使用的 可以先去看看之前的文章 Jav
  • unity图集的使用(万能方法)

    图集的意义 使用图集可以说是多加了一个步骤 但是这个步骤不是没有意义的 他可以有效的减少drawcall的数量 多张图片需要多个drawcall 而如果我们合成一个大图 只需要一个drawcall 并且可以减少内存的开销 图集的使用 然后就
  • 最全的jquery datatables api 使用详解

    分别导入css和js文件 加载
  • 【语义分割】4、DFANet: Deep Feature Aggregation for Real-Time Semantic Segmentation

    文章目录 摘要 1 引言 2 相关工作 3 深层特征聚合网络 3 1 Observations 3 2 深层特征聚合 3 3 网络结构 4 实验 4 1 DFA 结构的分析 4 1 1 轻量级 backbone 网络 4 1 2 特征聚合
  • M5311模组对接OneNet平台—AT指令基本操作流程(LwM2M协议)

    目录 概述 一 开机驻网流程 二 注册onenet平台 概述 下面将介绍M5311模组对接OneNet平台 AT指令基本操作流程 LwM2M协议 已在项目中使用 一 开机驻网流程 1 AT SM LOCK 2 AT 3 AT CMEE 1
  • 经典树结构——B+树的原理及实现

    文章目录 B 树的概念 B 树实现 B 树节点参数 B 树的查询 实现 B 树插入 实现 B 树删除 实现 B 树的概念 规则 B 跟B树不同B 树的非叶子节点不保存关键字记录的指针 只进行数据索引 这样使得B 树每个非叶子节点所能保存的关
  • Linux系统基础操作命令

    目录 一 基本使用 1 编辑Linux命令行的辅助操作 2 常用的基础命令 1 切换用户 su 2 pwd 查看当前工作目录 3 cd 切换工作目录 4 cp 复制 5 mkdir 创建目录 6 touch 创建文件 7 创建链接文件ln
  • 《网络安全工程师笔记》 第十一章:WEB服务器和FTP服务器

    注 本笔记来自温晓飞老师的网络安全课程 第十一章 WEB服务器和FTP服务器 第一章 虚拟化架构与系统部署 第二章 IP地址详解 第三章 进制转换 第四章 DOS基本命令与批处理 第五章 用户与组管理 第六章 服务器远程管理 第七章 NTF
  • java基础6

    packagecom edu 01 public class Student 私有化成员变量 private String name private int age set get方法 public voidsetName String n
  • [基础数据结构] 判断是否为完全二叉搜索树

    对二叉搜索树的定义是 一棵深度为k的有n个结点的二叉树 对树中的结点按从上至下 从左到右的顺序进行编号 如果编号为i 1 i n 1 i n 1 i n 的结点与满二叉树中编号为i的结点在二叉树中的位置相同 则这棵二叉树称为
  • UI设计都有哪些设计原则,分享三个给你

    是什么使一个好UI设计容易阅读 是什么让用户轻松浏览 设计师如何创造一个闪亮的UI 任何软件产品的关键部分都是用户界面 好的UI设计 用户甚至会忽略它 如果做得不好 就会成为用户使用产品的绊脚石 为了更有效地设计能够满足用户使用的设计UI
  • 【原理篇】再次带你进入多线程的世界

    1 Java内存模型基础知识 1 1并发编程模型的两个关键问题 线程间如何通信 即 线程之间以何种机制来交换信息 线程间如何同步 即 线程以何种机制来控制不同线程间操作发 的相对顺序 有两种并发模型可以解决这两个问题 消息传递并发模型 共享
  • scala的基础语法之变量

    1 类介绍 我们在new scala类的时候 这里分为Class和Object两大类 idea2019 1版本 其他新版本应该是四种 case Class和case Object 不过没关系 这里想要使用case的直接在前面写case即可