首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Scala变量和常用数据类型

val示例: scala> val a1 = 10 scala> a1 = 20(此处会报错,因为val不允许初始化后再次修改a1变量的引用)12 var示例: scala> var a2 = 10 scala...3、为了减少可变性引起的bug,应该尽可能地使用不可变变量。变量类型可以省略,解析器会根据值进行推断。val和var声明变量时都必须初始化。...1、Any、AnyVal、AnyFloat Any是所有类型的超类型,也称为顶级类 型。它定义了一些通用的方法如equals、hashCode和toString。...Any有两个直接子类:AnyVal和AnyRef。 AnyVal代表值类型。...它的用途之一是给出非正常终止的信号,如抛出异常、程序退出或者一个无限循环(可以理解为它是一个不对值进行定义的表达式的类型,或者是一个不能正常返回的方法)。

38510

scala数据类型

从上图可以得到以下结论: 在 scala 中有一个根类型 Any ,他是所有类的父类. scala中一切皆为对象,分为两大类AnyVal(值类型),AnyRef(引用类型),他们都是Any子类....Nothing类型也是bottomclass,他是所有类的子类,在开发中通常可以将Nothing类型的值返回 给任意变量或者函数, 这里抛出异常使用很多. scala数据类型介绍 Scala 与 Java...有着相同的数据类型,在Scala中数据类型都是对象,也就是说scala没有java中的原生类型 Scala数据类型分为两大类 AnyVal(值类型) 和 AnyRef(引用类型), 注意:不管是AnyVal...Null null , Null 类型只有一个实例值 null Nothing Nothing类型在Scala的类层级的最低端;它是任何其他类型的子类型。...值类型转换 当Scala程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这个就是自动类型转换(隐式转换)。 可以通过类型指定,强制转换,如 5.6.toInt

39810
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    必知|Scala类型层次结构

    这个是有人在群里问浪尖的一个问题,今天浪尖就给大家讲解一下Scala类型层次结构 在Scala中,所有的值都有类型,包括数值和函数。下图阐述了类型层次结构的一个子集。 ? 1....Scala类型层次结构 Any是所有类型的超类型,也称为顶级类 型。它定义了一些通用的方法如equals、hashCode和toString。Any有两个直接子类:AnyVal和AnyRef。...AnyVal代表值类型。有9个预定义的非空的值类型分别是:Double、Float、Long、Int、Short、Byte、Char、Unit和Boolean。...这个列表里由多种类型进行初始化,但是它们都是scala.Any的实例,所以可以把它们加入到列表中。 下面是程序的输出: a string732ctrue 2....它的用途之一是给出非正常终止的信号,如抛出异常、程序退出或者一个无限循环(可以理解为它是一个不对值进行定义的表达式的类型,或者是一个不能正常返回的方法)。

    1.2K10

    如何在Scala中读取Hadoop集群上的gz压缩文件

    存在Hadoop集群上的文件,大部分都会经过压缩,如果是压缩后的文件,我们直接在应用程序中如何读取里面的数据?...答案是肯定的,但是比普通的文本读取要稍微复杂一点,需要使用到Hadoop的压缩工具类支持,比如处理gz,snappy,lzo,bz压缩的,前提是首先我们的Hadoop集群得支持上面提到的各种压缩文件。...本次就给出一个读取gz压缩文件的例子核心代码: 压缩和解压模块用的工具包是apache-commons下面的类: import org.apache.commons.io.IOUtils import...,其实并不是很复杂,用java代码和上面的代码也差不多类似,如果直接用原生的api读取会稍微复杂,但如果我们使用Hive,Spark框架的时候,框架内部会自动帮我们完成压缩文件的读取或者写入,对用户透明...,当然底层也是封装了不同压缩格式的读取和写入代码,这样以来使用者将会方便许多。

    2.7K40

    Python和Scala的类继承关系分析

    AnyVal是Scala所有值类的父类,例如Int,Char,Float等值类,值类之间是没有子类关系的,不同的值类可以互相隐性转换,高精度数值不可以转换为低精度,例如Int可以隐性转换为Double。...scala> 1+1.0 res5: Double = 2.0 不能通过new关键字来创建值类否则就会报错。Unit类前面提到过,用来作为不返回结果的方法的结果类型,有且仅有一个实例()。...除了继承关系外,Scala的数值类型一般情况下都是直接映射在内存上,而需要的时候,会调用相应的类操作,例如Int在使用toString操作的是java.lang.Integer类(自动装箱)。...这一点与Python使用名字空间的方式截然不同。 除了值类和引用类之外还存在一种特殊的类,被称为底类型。有两种底类型,分别是scala.Null和scala.Nothing。...type和object类似于鸡和蛋的关系,但是要注意到Python是一门C写成的语言,抛开Python本身的语法,type和object在Python初始化的时候便作为结构体已经分配好存储空间,真正使用时只需要相互引用即可

    85920

    scala快速入门系列【数据类型与操作符】

    作为scala快速入门系列的第五篇博客,小菌为大家带来的是关于数据类型与操作符的内容。 ?...scala中的类型以及操作符绝大多数和java一样,通过本篇博客,我们将学习: 与Java不一样的一些用法 scala类型的继承体系 ---- 数据类型 基础类型 类型说明 Byte 8位带符号整数 Short...而比较两个对象的引用值,使用eq 示例 有一个字符串"abc",再创建第二个字符串,值为:在第一个字符串后拼接一个空字符串。 然后使用比较这两个字符串是否相等、再查看它们的引用值是否相等。...类型 说明 Any 所有类型的父类,,它有两个子类AnyRef与AnyVal AnyVal 所有数值类型的父类 AnyRef 所有对象类型(引用类型)的父类 Unit 表示空,Unit是AnyVal的子类...,它只有一个的实例() 它类似于Java中的void,但scala要比Java更加面向对象 Null Null是AnyRef的子类,也就是说它是所有引用类型的子类。

    33220

    2021年大数据常用语言Scala(六):基础语法学习 数据类型与操作符

    位运算符 &、||、^、> Scala 中的运算符, 基本上和Java一样, 除了: scala中没有,++、--运算符 与Java不一样,在scala中,可以直接使用==、!...而比较两个对象的引用值,使用eq 示例 有一个字符串"abc",再创建第二个字符串,值为:在第一个字符串后拼接一个空字符串。 然后使用比较这两个字符串是否相等、再查看它们的引用值是否相等。..., 也就是我们Scala是一种单根继承体系 类型 说明 Any 所有类型的父类,,它有两个子类AnyRef与AnyVal AnyVal 所有数值类型的父类 AnyRef 所有对象类型(引用类型)的父类...,但scala要比Java更加面向对象, Unit 本身也是一个类哦, 当返回值为空的时候,返回的就是Unit, Unit的实例就是一个括号() Null Null也就是AnyRef的子类,也就是说它是所有引用类型的子类...val b:Int = null scala会解释报错: Null类型并不能转换为Int类型,说明Null类型并不是Int类型的子类, 也就是不是数值类型AnyVal的子类

    30710

    Scala:统一的对象模型

    类 图片展示了Scala的类层次结构。每一个类都继承自scala.Any,Any的子类可以划分为两个主要的范畴:值类型,继承自scala.AnyVal;引用类型,继承scala.AnyRef。...需要注意的是值类型类空间是平行的,即所有的值类型都继承自scala.AnyVal,但是值类型之间不存在任何关系,比如继承关系。作为替代,值类型之间有视图(隐式类型转换)。...整个类层次最底层有两个类型,scala.Null和scala.Nothing。Null是所有引用类型的子类,它只有一个实例null。...由于Null不是任何值类型的子类,所以null也不是任何值类型的实例,因此把null赋值给int型变量是错的。...Student) //程序没有问题,可以说明List是协变的 关于==,equals,eq:在Scala中,==相当于是equals的别名,用于比较值是否相等,而eq 用于比较引用是否相等: val

    67650

    大数据技术之_16_Scala学习_02_变量

    2.2.2 Scala 变量使用的基本步骤   1、声明/定义变量 (scala 要求变量声明时需要初始化)   2、使用 2.3 Scala 变量的基本使用 示例代码: package com.atguigu.chapter02...AnyVal(值类型) 和 AnyRef(引用类型), 注意:不管是 AnyVal 还是 AnyRef 都是对象。   ...对上图的小结和整理 1、在 scala中有一个根类型,它是所有类的父类。 2、scala 中一切皆为对象,分为两大类 AnyVal(值类型)和 AnyRef(引用类型),它们都是 Any 的子类。...5.12      512.0f      .512   (必须有小数点) 科学计数法形式,如:5.12e2 = 5.12乘以10的2次方     5.12E-2 = 5.12除以10的2次方   4、...null 可以赋值给任意引用类型(AnyRef),但是不能赋值给值类型(AnyVal: 比如 Byte, Short, Int, Long, Float, Double, Char, Boolean)

    1.2K40

    Scala教程之:可扩展的scala

    Scala是扩展的,Scala提供了一种独特的语言机制来实现这种功能: 隐式类:允许给已有的类型添加扩展方法 字符串插值:可以让用户使用自定义的插值器进行扩展 隐式类 隐式类是在scala 2.10中引入的...字符串插值 所谓字符串插值就是将变量引用直接插入处理过的字面字符中。这是在scala2.10.0版本引入的。...插值器知道在这个字符串的这个地方应该插入这个name变量的值,以使输出字符串为Hello,James。使用s插值器,在这个字符串中可以使用任何在处理范围内的名字。 字符串插值器也可以处理任意的表达式。...当使用 f 插值器的时候,所有的变量引用都应当后跟一个printf-style格式的字符串,如%d。...自定义插值器 在Scala中,所有处理过的字符串字面值都进行了简单编码转换。

    1.2K10

    Scala入门

    例如,Scala中的每个值都是一个对象,包括基本数据类型(即布尔值、数字等)在内,连函数也是对象。...另外,类可以被子类化,而且Scala还提供了基于mixin的组合(mixin-based composition)。与只支持单继承的语言相比,Scala具有更广泛意义上的类重用。...No other instance can be created 变量 Scala 定义了两种类型的变量val和var,val类似于Java中的final变量,一旦初始化之后,不可以重新赋值。...time 类型 scala类型系统以Any为根,分为AnyRef和AnyVal 两个分支体系,在AnyRef分支的最底层,有个Null类型的特殊类型,它被当作是所有AnyRef类型的子类型。...更进一步在两个分支共同的最底层类型是Nothing类型,它被当作所有AnyRef和AnyVal类型的子类型。

    88770

    Scala入门笔记

    例如,Scala中的每个值都是一个对象,包括基本数据类型(即布尔值、数字等)在内,连函数也是对象。...另外,类可以被子类化,而且Scala还提供了基于mixin的组合(mixin-based composition)。与只支持单继承的语言相比,Scala具有更广泛意义上的类重用。...No other instance can be created 变量 Scala 定义了两种类型的变量val和var,val类似于Java中的final变量,一旦初始化之后,不可以重新赋值。...time 类型 scala类型系统以Any为根,分为AnyRef和AnyVal 两个分支体系,在AnyRef分支的最底层,有个Null类型的特殊类型,它被当作是所有AnyRef类型的子类型。...更进一步在两个分支共同的最底层类型是Nothing类型,它被当作所有AnyRef和AnyVal类型的子类型。

    89970

    scala 语法深析

    scala特有类型 Null :Trait,唯一实例null,是anyRef的子类 Nothing :Trait,anyRef和anyVal的共同子类 None :Option的两个子类有some和None...Unit :无返回值的函数类型,和void相对应 Nil :长度为0 的list Any所有类型的超类,任何实例都属于Any类型 AnyRef所有引用类型的超类 AnyVal所有值类型的超类 Nothing...xmax, ymax = 100; 4.声明元组 var tuple = (40,"Foo") 5.String类型 Scala本身没有String类,其类型实际上是Java String,而Java...那么可以写成_表示 println(hightFun3(_+_)(200,200)) Trait特性 Trait的概念理解 1》 Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大...switch case ; Scala 提供了强大的模式匹配机制,应用也非常广泛,除了匹配值还可以匹配类型,类型的匹配必须要有变量名。

    65010

    整体分析scala数据类型(重点)

    @ 目录 回顾:Java数据类型 scala数据类型 回顾:Java数据类型 Java基本数据类型:char、byte、short、int、long、float、double、boolean Java引用类型...scala数据类型 ? 首先:Scala中一切数据都是对象,都是Any的子类。 Scala中数据类型分为两大类:数值类型(AnyVal)、引用类型(AnyRef),不管是值类型还是引用类型都是对象。...Scala数据类型仍然遵守低精度的值类型向高精度值类型自动转换(隐式转换)。 Scala中的StringOps是对Java中的String增强。...Unit,对应Java中的void,用于方法返回值的位置,表示方法没有返回值。 Unit,是一个数据类型,只有一个对象就是()。而void不是数据类型,只是一个关键字。...它是所有引用类型(AnyRef)的子类。 Nothing,是所有数据类型的子类,主要用在一个函数没有明确返回值时使用,因为这样我们可以把抛出的返回值,返回给任何的变量或者函数。

    44510
    领券