Scala的变量定义

  1. 变量定义

声明一个val变量类似与java的 public static final String 一致,一旦初始化不能改变,和java的泛型类似,Scala会帮我们进行类型推断

如下图所示,一个Scala大致如以下结构:

下面使用shell键入一个命令进行数字运算:

scala> 8 * 5+2
res0: Int = 42 可以使用res0,可以在后续继续操作这个变量
scala> 0.5 * res0
res1: Double = 21.0 进行字符串的拼接
scala> "hello,"+res1
res2: String = hello,21.0 可以使用res2调用方法,可以使用Tab键补全,例如输入res2.to可以提示如下选项:
tail takeWhile toBuffer toFloat toIterator toMap toStream toVector
tails to toByte toIndexedSeq toList toSeq toString transpose
take toArray toCharArray toInt toLong toSet toTraversable trim
takeRight toBoolean toDouble toIterable toLowerCase toShort toUpperCase
输入的内容被快速的编译为字节码,然后将这段字节码交由java虚拟机执行,这个过程称为读取-求助-打印-循环,即REPL(Read-Eval-Print Loop)

声明不可变变量:

scala> val helloWorld="hello World"
helloWorld: String = hello World // 指定String类型进行创建
scala> val helloWorld:String="Hello World"
helloWorld: String = Hello World //String其实就是java.lang.String
scala> val helloWorld:java.lang.String="Hello World"
helloWorld: String = Hello World

声明可变变量使用var

scala> var variable:String="mutable variable"
variable: String = mutable variable scala> variable="haha"
variable: String = haha

下面使用延迟加载变量,相当于懒加载,初始化创建并不进行赋值当使用的时候才真正赋值

scala> lazy val scala="Hello Scala"
scala: String = <lazy> //在真正使用时被赋值
scala> scala
res1: String = Hello Scala

在Scala中变量和函数的类型总是写在变量或函数名称的后面,java声明变量一般为:String hello ,而Scala为hello:String

也可以将多个值或变量放在一起声明:

// 声明x与y都为100
val x,y = 100
// 声明字符串常量greeting与hello为null
val greeting,hello : String = null

Scala常用数据类型和java一样,Scala也有7种数值类型:Byte,Char,Short,Int,Long,Float,Double以及一个Boolean类型,跟java不同的是这些类型为类,Scala并不刻意区分基本类型和引用类型可以对数字执行方法。

// 产生字符串
scala> 1.toString
res0: String = 1 // 类似与遍历
scala> 1.to(10)
res0: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) Scala不需要包装类型,它会自动进行基本类型与包装类型转换。Scala提供了RichInt,RichDouble,RichChar进行--Int,Double,Char中的转换
  1. 算术和操作符重载
> + - * / %等操作符完成,位操作符&|^ >> <<也一样,操作符实际上是方法。如a.+(b) 通常来说可以使用 a 方法 b 作为简写 a.方法(b)这里的方法是一个带有两个参数的方法(一个隐式和一个显式)例如1.to(10) 可以写成1 to 10 Scala并没有提供++和--操作,我们需要使用+=1或者-=1
在Scala中使用数学函数(min 或pow)更为简单-你不需要从某个类调用它的静态方法。sqrt(2),pow(2,4),min(2,pi)import scala.math_ 注意:_类似java中的* Scala没有静态的方法,它有个类似的特性,叫做伴生对象,其方法就跟java中的静态方法一样。举例来说,BigInt类的BigInt伴生对象有一个生成指定位数的随机素数的方法probablePrime: scala> BigInt.probablePrime(100,scala.util.Random)
res1: scala.math.BigInt = 1181989405512407462125610683643
  1. apply方法
scala> "hello"(4)
res0: Char = o
"hello".apply(4) 简写为“hello”(4)同理还有很多类似用法例如,Array(4,4,9,16)会返回一个数组,用的就是Array伴生对象的apply方法。

Scala基础语言api入门学习的更多相关文章

  1. 【百度文库课程】Java语言基础与OOP入门学习笔记一

    一. Java的历史与由来 原名Oak,针对嵌入式系统开发设计,语法与C/C++基本一致 二. Java语言特点 Java由四方面组成:Java编程语言.Java类文件格式.Java虚拟机和Java应 ...

  2. C语言程序设计入门学习五步曲(转发)

    笔者在从事教学的过程中,听到同学抱怨最多的一句话是:老师,上课我也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手.发生这种现象的原因有三个: 一.所谓的看懂听明白,只是很肤浅的 ...

  3. 后端API入门到放弃指北

    后端API入门学习指北 了解一下一下概念. RESTful API标准] 所有的API都遵循[RESTful API标准]. 建议大家都简单了解一下HTTP协议和RESTful API相关资料. 阮一 ...

  4. Scala的安装,入门,学习,基础

    1:Scala的官方网址:http://www.scala-lang.org/ 推荐学习教程:http://www.runoob.com/scala/scala-tutorial.html Scala ...

  5. 【C语言C++编程学习笔记】基础语法,第一个简单的实例编程入门教程!

    C语言/C++编程学习:一个简单的实例 让我们来看一个简单的C语言程序.从下面的程序可以看出编写C语言程序的一些基本特征.   如果你能知道该程序将会在显示器上显示一些内容,那说明你还是知道一些的! ...

  6. 【转载】salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解

    salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解   建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schem ...

  7. 【转载】salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)

    salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)   salesforce中对于数据库操作和JAVA等语言对于数据库操作是有一定区别的.salesfo ...

  8. jQuery学习笔记 - 基础知识扫盲入门篇

    jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...

  9. Scala入门学习笔记三--数组使用

    前言 本篇主要讲Scala的Array.BufferArray.List,更多教程请参考:Scala教程 本篇知识点概括 若长度固定则使用Array,若长度可能有 变化则使用ArrayBuffer 提 ...

随机推荐

  1. oracle sql 命令类别

    1.数据定义语言 DDL 有 create alter drop2.数据操纵语言 DML insert select delete update3.事务控制语言 TCL commit savepoin ...

  2. 浅谈Java——泛型DAO

    首先解释一下为什么要学习泛型DAO.平时在写DAO的时候是一个接口对应一个实现类,实现类里面要写很多的操作数据库的方法.当我们有很多的javaben的时候我们会写很多的接口和实现类,并且里面的代码都是 ...

  3. Django之modelform简介

    在django中内置了form类和model类,当页面中的form值和model字段值完全一样时,此时可以通过model生成一个完全一样的form,Django中的modelForm就因此而生. 目标 ...

  4. mysql group replication观点及实践

    一:个人看法 Mysql  Group Replication  随着5.7发布3年了.作为技术爱好者.mgr 是继 oracle database rac 之后. 又一个“真正” 的群集,怎么做到“ ...

  5. teradata 查询创建表的时间

    如何查询teradata创建表的时间? select tablename,CreateTimeStamp from dbc.tables ---dbc的table,user是在dbc内的吗?具体不清楚 ...

  6. 名词解释:Linux内存管理之RSS和VSZ

    Linux内存管理中不管是top命令还是pmap命令,都会有RSS和VSZ这两个名词,这里解释一下: RSS( Resident Set Size )常驻内存集合大小,表示相应进程在RAM中占用了多少 ...

  7. [翻译] DoImagePickerController

    DoImagePickerController An image picker controller with single selection and multiple selection. Sup ...

  8. 转载、Python的编码处理(二)

    以下转自于:wklken的博客,写的非常好的一段有关编码的总结. Python-进阶-编码处理小结 整理下python编码相关的内容 注意: 以下讨论为Python2.x版本, Py3k的待尝试 开始 ...

  9. [沫沫金]JavaWeb企业信息系统,增加操作记录、数据库记录

    背景 系统出现数据莫名丢失,业务人员的反馈无法复现问题.纠结了很久,最终老板发话要记录操作,通过日志进行分析重现 环境 SSH框架 目标 1.记录访问了那个方法,使用的参数及返回的内容 2.记录新增. ...

  10. .net mvc HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容

    1. 检查服务器上是否安装了“HTTP重定向”功能和“静态内容压缩”功能(在添加/删除程序或增加角色处安装).这是我所遇到的问题: 2. 应用程序池要被配置为“集成” 3. 把.net 4.0安装在i ...