Scala学习 - 基础类型

Scala中的类型相对于Java来说,与.net的想法更为接近,所有的类型都是基于一个基础类型,包括值类型也是继承自该类型;

Java中值类型是语言直接提供的,这点上有点不同;

类型关系图如下:

其中所有类型的基类与Any

Any之后分为两个AnyVal与AnyRef

其中AnyVal是所有值类型的父类型

AnyRef是所有引用类型的父类型

与其他语言稍微有点不同的是,Scala还定义了底类型

其中Null类型是所有引用类型的底类型,及所有AnyRef的类型的空值都是Null

而Nothing是所有类型的底类型,对应Any类型

Null与Nothing都表示空,这个大家一看就明白了吧。

在基础类型中只有String是继承自AnyRef的,与Java、.net一样,Scala中的String也是内存不可变对象,这就意味着,所有的字符串操作都会产生新的字符串。

其他的基础类型如Int等都是Scala包装的类型,例如Int类型对应的是Scala.Int只是Scala包会被每个源文件自动引用,看上去Int类型就像是直接内置在语言中一样。

更多精彩内容请关注:http://bbs.superwu.cn

关注超人学院微信二维码:

时间: 2024-10-13 21:57:49

Scala学习 - 基础类型的相关文章

Scala学习——基础篇

一.基础 1.变量val 标志符: 声明常量: 如,val answer = 1var 标志符:声明变量: 类型推断:变量的类型由scala根据初始化变量的表达式推断而来: 鼓励使用val: 注:声明变量时不做初始化会报错. 明确类型: scala的变量或函数的类型总是写在变量或函数的后面. 1 val a:Int = 1 2 val str:String = 2 2.常用类型 Scala支持7种数值类型和1种Boolean类型. Byte/Char/Short/Int/Long/Float/D

Scala学习 -- 基础语法

一.变量 1.三种变量修饰符 val 定义 immutable variable(不修改 常量) var 定义 immutable variable(可修改 变量)   lazy val (惰性赋值的常量):不直接算出结果,在系统第一次调用 lazy val 的时候计算结果 scala> val d = 12 d: Int = 12 scala> val e = 20 e: Int = 20 scala> lazy val f = d * e f: Int = <lazy>

typescript学习-基础类型

/** * 布尔值 */ let isDone: boolean = false; /** * 数字 */ let decLiteral: number = 6; let hexLiteral: number = 0xf00d; /** * 字符串 */ let userName: string = `smith`; /** * 数组 */ let list: number[] = [1, 2, 3]; let list2: Array<number> = [1, 2, 3]; /** * 元

Scala学习:第一张基础 - 心得

这是一个神奇的语言. 安装环境就够折腾了,居然还挑eclipse,最新的4.4居然不支持,要用4.3.2 第一张都是些简单的概念介绍,但是通过第一张可以看出scala和其他语言的语法上存在较大的区别(当然根据我的知识范围也就是指的c#,Java) 关键点: 1.Scala中,我们不需要包装类型. 读到这里时,我对性能产生了担心,于是赶快查了下对Scala和Java的性能对比.有个比较好的文章.内容不多,字字珠玑. 不要使用for循环 不要使用scala.collection.mutable 不要

Scala学习笔记一之基础语法,条件控制,循环控制,函数,数组,集合

前言:Scala的安装教程:http://www.cnblogs.com/biehongli/p/8065679.html 1:Scala之基础语法学习笔记: 1:声明val变量:可以使用val来声明变量,用来存放表达式的计算结果,但是常量声明后是无法改变它的值的,建议使用val来声明常量: 声明var变量:如果要声明可以改变的引用,可以使用var变量,声明的常量的值可以改变. 3:指定类型:无论声明val变量还是声明var变量.都可以手动指定其类型,如果不指定,scala会自动根据值,进行类型

scala学习手记17 - 容器和类型推断

关于scala的类型推断前面已经提到过多次.再来看一下下面这个例子: import java.util._ var list1: List[Int] = new ArrayList[Int] var list2 = new ArrayList[Int] list2 add 1 list2 add 2 var total = 0 for (index <- 0 until list2.size()) { total += list2.get(index) } println("Total i

Typescript学习笔记(一)基础类型

为了面向ng2和前端未来,开始搞向ts,ts是微软出的一枚语言,作为es6的超集,他出的一些特性还是蛮好用的(略坑).对于我等纯前端(从开始就接触javascript)的人来说,真想说,这特么什么鬼.部分特性同es6(个人对es6还是蛮有好感的).ts同期的coffeescript,将js python化,ts也把js搞的向其他语言靠拢.. 中文学习,这里是英文学习.如果不想看这些东西,那看我笔记学吧.哈哈. ts的基础类型,布尔值,数字,字符串,数组,元组(Tuple),枚举,任意值,空值.后

TypeScript学习笔记之基础类型

从今天开始学习typescript了,记录ts学习点滴,最后,使用ts结合nodejs开发后端应用,一起共勉吧: typescript最新版本2.6,所有演示代码均基于此版本 开始之前确定安装了如下npm包: npm i typescript -g // ts全局包 npm i ts-node -g // 使用ts-node可以直接运行ts文件 基础类型 布尔类型 let isDone: boolean = false let isExist: boolean = true console.lo

scala学习手记4 - Java基本类型对应的scala类

在Java中变量类型分为两大类:基本类型和引用类型.虽然在JDK1.5以后引入了自动装箱和自动拆箱机制,大大减少了我们在直接类型和引用类型之间的纠结,但仍有一些我们不得不考虑的问题.比如我在工作遇到的基本类型和其包装类型的默认值的问题,比如泛型只能使用引用类型,比如默认情况下直接类型的值不能作为对象来操作(1.toString()就不能通过编译)等等. 在scala中一切都是对象. 在scala中1.toString()这样的写法是完全可以接受的.java中的每个基本类型在scala中都有对应的