Scala基础语言api入门学习
Scala的变量定义
- 变量定义
声明一个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中的转换
- 算术和操作符重载
> + - * / %等操作符完成,位操作符&|^ >> <<也一样,操作符实际上是方法。如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
- apply方法
scala> "hello"(4)
res0: Char = o
"hello".apply(4) 简写为“hello”(4)同理还有很多类似用法例如,Array(4,4,9,16)会返回一个数组,用的就是Array伴生对象的apply方法。
Scala基础语言api入门学习的更多相关文章
- 【百度文库课程】Java语言基础与OOP入门学习笔记一
一. Java的历史与由来 原名Oak,针对嵌入式系统开发设计,语法与C/C++基本一致 二. Java语言特点 Java由四方面组成:Java编程语言.Java类文件格式.Java虚拟机和Java应 ...
- C语言程序设计入门学习五步曲(转发)
笔者在从事教学的过程中,听到同学抱怨最多的一句话是:老师,上课我也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手.发生这种现象的原因有三个: 一.所谓的看懂听明白,只是很肤浅的 ...
- 后端API入门到放弃指北
后端API入门学习指北 了解一下一下概念. RESTful API标准] 所有的API都遵循[RESTful API标准]. 建议大家都简单了解一下HTTP协议和RESTful API相关资料. 阮一 ...
- Scala的安装,入门,学习,基础
1:Scala的官方网址:http://www.scala-lang.org/ 推荐学习教程:http://www.runoob.com/scala/scala-tutorial.html Scala ...
- 【C语言C++编程学习笔记】基础语法,第一个简单的实例编程入门教程!
C语言/C++编程学习:一个简单的实例 让我们来看一个简单的C语言程序.从下面的程序可以看出编写C语言程序的一些基本特征. 如果你能知道该程序将会在显示器上显示一些内容,那说明你还是知道一些的! ...
- 【转载】salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解
salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解 建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schem ...
- 【转载】salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)
salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL) salesforce中对于数据库操作和JAVA等语言对于数据库操作是有一定区别的.salesfo ...
- jQuery学习笔记 - 基础知识扫盲入门篇
jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...
- Scala入门学习笔记三--数组使用
前言 本篇主要讲Scala的Array.BufferArray.List,更多教程请参考:Scala教程 本篇知识点概括 若长度固定则使用Array,若长度可能有 变化则使用ArrayBuffer 提 ...
随机推荐
- win7安装node.js
最新版本的node.js都已经集成了npm,所以直接从官网下载即可!(不用再配置环境变量) 官网:https://nodejs.org/download/release/latest/ 下载解压即安装 ...
- iframe内存释放
Ext 核心开发人员Jack的回答是,TabPanelItem在关闭时并不会对自定义到tab中的元素做特殊处理,这部分工作必须在控件外来完成.另一方面, 相关资料称IE在iframe元素的回收方面存在 ...
- springboot 文件上传 java.io.IOException: The temporary upload location [/tmp/xx] is not valid
转自:http://meia.fun/article/1541578061808 首先分析下出现问题的原因:linux 下的 /tmp 目录,是用来存储由各种程序创建的临时文件的地方.一些配置,导致系 ...
- spring boot(11)-druid监控
druid druid是和tomcat jdbc一样优秀的连接池,出自阿里巴巴.关于druid连接池参数,参考 https://github.com/alibaba/druid/wiki/DruidD ...
- javaweb 读取properties配置文件参数
场景1:在servlet中读取properties配置文件参数 protected void doGet(HttpServletRequest request, HttpServletResponse ...
- Oracle案例13—— OGG-01163 Oracle GoldenGate Delivery for Oracle, reprpt01.prm
由于虚拟机宿主机重启,导致很多虚拟机服务需要重点关注,其中一个DG的从库和另一个report库有OGG同步,所以这里再系统恢复后检查OGG状态的时候,果然目标端的REPLICAT进程处于abend状态 ...
- Ubuntu Linux 14.04 LTS 上安装php7+mysql+nginx
输入 $ sudo apt-get install -y language-pack-en-base$ sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:o ...
- 关于Matlab里面的四个取整(舍入)函数:Floor, Ceil, Fix, Round的解释(转)
转自http://blog.sina.com.cn/s/blog_48ebd4fb010009c2.html floor:朝负无穷方向舍入 B = floor(A) rounds the elem ...
- September 07th 2017 Week 36th Thursday
With the most true of yourself, can you meet the most suitable one. 用最真实的自己,才能遇见最合适的那个人. You are alw ...
- Mysql数据库字符集问题
修改mysql数据库的默认编码方式 修改my.ini文件 加上 default-character-set=gb2312 设定数据库字符集 alter database da_name default ...