1.小试牛刀

使用Scala自带的REPL shell(Read Evaluate Print Loop)学习和尝试Scala语言库,创建的变量在会话期间都是有效的。

Ctrl+D可退出REPL shell

实验1:

scala> println("hello world")
hello world

scala> 5*7
res1: Int = 35

scala> 2* res1
res2: Int = 70

2.处理数据中的字面量、值、变量和类型

字面量:直接在源代码中出现的数据,如字母A数字3文本"Hello world"

值:不可变的有类型的存储单元,不允许重新赋值。val <name>:<type>=<literal>

变量:可变的 有类型的存储单元

类型:对数据的定义或分类

注意:Scala中一些变量或值不在使用由Java虚拟机的垃圾回收系统自动撤销其中的数据,不能手动撤销,也不需要这么做。

实验2:

2.1值的操作:

scala> val x: Int =5
x: Int = 5

scala> x
res0: Int = 5

scala> x*2
res1: Int = 10

scala> x/2
res3: Int = 2

scala> res0*res1
res4: Int = 50

------------------

scala> val greeting:String ="Hello world"
greeting: String = Hello world

scala> val atSysout='@'
atSysout: Char = @

错误的写法

scala> val x:Int="Hello"
<console>:11: error: type mismatch;
found : String("Hello")
required: Int
val x:Int="Hello"

2.2变量的操作:

Scala中的变量可以指定类型(如下)也可以不指定类型,Scala会根据使用的类型来推断变量正确的类型。

scala> var a:Double =2.72
a: Double = 2.72

scala> a=255.0/133/0
a: Double = Infinity

scala> a=5
a: Double = 5.0

scala> var b="string"
b: String = string

scala> b="opp"
b: String = opp

尽管可以重新赋值,但是不能赋值类型不兼容的情况

scala> var x=5
x: Int = 5

scala> x="string"
<console>:12: error: type mismatch;
found : String("string")
required: Int
x="string"

2.3 命名

scala采用驼峰命名法,首字母小写,后面一些列字母采用大写形式

#字母开头,后面可以使数字字母的组合,也可以使用下划线链接。

#反引号可以将任意不合法的字符做原样输出。

scala> val a.b=23
<console>:12: error: value b is not a member of Double
val a.b=23
^

scala> val `a.b`=4   #正确的方式
a.b: Int = 4

2.4 类型

scala的数值类型如下

Byte : 有符号的整数 1字节(大小)

Short:有符号的整数 2字节(大小)

Int:有符号的整数 4字节(大小)  如5

Long:有符号的整数 8字节(大小) 如5l,5L(大小写不区分)

Float:有符号的浮点数 4字节(大小) 如5f,5F(大小写不区分)

Double:有符号的浮点数 8字节(大小)  如5.0 默认为无修饰(前缀和后缀)的小数前面是Double类型

注:以0x前缀开头的是16进制表示

scala> val aInt=5
aInt: Int = 5

scala> val yellow=0xffff00
yellow: Int = 16776960

scala> val id=100L
id: Long = 100

scala> val pi=3.1415
pi: Double = 3.1415

scala支持不同等级的数值类型的转换,低等级可转化为高等级

如果高等级转化为低等级使用toType方法手动转化,所有类型都有这个方法

scala> val l:Long=20
l: Long = 20

scala> val i:Int =l
<console>:12: error: type mismatch;
found : Long
required: Int
val i:Int =l

scala> val i:Int=l.toInt
i: Int = 20

3.字符串

直接由双引号声明,可以添加转义字符,可采用+链接字符串,可使用==判断字符串值是否相等,使用三个双引号代表原样输出

scala> val hello="Hello you"

hello: String = Hello you

scala> val sinature="with regard,\n Your friends"
sinature: String =
with regard,
Your friends

scala> val greeting="Hello, "+"World"
greeting: String = Hello, World

scala> val matched=(greeting== "Hello, World")
matched: Boolean = true

scala> val theme="Na "*16+"Batman!"
theme: String = Na Na Na Na Na Na Na Na Na Na Na Na Na Na Na Na Batman!

scala> val greeting="""She was a good gril   
| she said "love you"
| "Why do that?",he said."""
greeting: String =
She was a good gril
she said "love you"
"Why do that?",he said.

字符串内插

scala> val approx=355/113f
approx: Float = 3.141593

scala> println("Pi,using 355/113,is about"+approx+".")
Pi,using 355/113,is about3.141593.

使用s前缀,使用$指示外部数据

scala> println(s"PI,using 355/113,is about $approx.")
PI,using 355/113,is about 3.141593.

scala> val item="apple"
item: String = apple

如果引用非字符,如算式,或者引用无法与周围的文本区分,就需要选用大括号,如下使用

scala> s"How do you like them ${item}s?"
res7: String = How do you like them apples?

scala> s"How do you like them $item?"
res8: String = How do you like them apple?

scala> s"Fish a chips,${"pepper "*3}salt"  //输出三次pepper
res10: String = Fish a chips,pepper pepper pepper salt

scala> f"I wrote a new $item%.3s today" //输出小数点后三位,如果是字母输出前三个
res12: String = I wrote a new app today

scala> f"Enjoy this $item ${355/113.0}%.5f tims today"//保留5位小数
res13: String = Enjoy this apple 3.14159 tims today

4.正则表达式

由字符和标点符号组成的一个字符串,表示一个搜索模式

Scala基于java类的jaba.utils.regex.Pattern,通过这个类的javadoc可了解

几个基本操作如下:

  matches

  replaceAll

  replaceFirst

语法:用正则表达式求值

val <Regex value>(<identifier>)=<input string>

实验:

scala> val input ="Enjoying this apple 3.14159 times today"   //给定的字符
input: String = Enjoying this apple 3.14159 times today

scala> val pattern=""".* apple ([\d.]+) times .*""".r   //捕获的是apple times之间的数字序列和一个点号
pattern: scala.util.matching.Regex = .* apple ([\d.]+) times .*

scala> val pattern(amountTest)=input   //独特的写法,将要匹配的字符串写在等号后面
amountTest: String = 3.14159

scala> val amount =amountTest.toDouble
amount: Double = 3.14159

正则表达式补充:

特别字符 描述
$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$。
( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。
+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。
. 匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 \. 。
[ 标记一个中括号表达式的开始。要匹配 [,请使用 \[。
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。
\ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。
^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。
{ 标记限定符表达式的开始。要匹配 {,请使用 \{。
| 指明两项之间的一个选择。要匹配 |,请使用 \|。

====================================================================================================

限定字符 6种 描述
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。

====================================================================================================

字符 描述
^ 匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与 \n 或 \r 之后的位置匹配。
$ 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与 \n 或 \r 之前的位置匹配。
\b 匹配一个字边界,即字与空格间的位置。
\B 非字边界匹配。

=====================================================================================================

5.Scala

转载于:https://www.cnblogs.com/jackchen-Net/p/6624599.html

Scala学习笔记(1)-基本类型归纳相关推荐

  1. Scala学习笔记02:数据类型、常量与变量

    Scala学习笔记02:数据类型.常量与变量 一.数据类型 1.基本数据类型 Byte 字节型 Short 短整型 Int 整型 Long 长整型 Char 字符型 String 字符串 Float ...

  2. Scala学习笔记(三)

    Scala学习笔记(三) 一.模式匹配 1. 简单模式匹配 2. 匹配类型 3. 守卫 4. 匹配样例类 5. 匹配数组 6. 匹配列表 7. 匹配元组 8. 变量声明中的模式匹配 8.1 获取数组中 ...

  3. Scala学习笔记(一)

    Scala学习笔记(一) 一.Scala简介 二.Scala安装与配置 1. 安装JDK 2. 安装Scala SDK 3. 安装IDEA插件 三.Scala解释器 1. 启动Scala解释器 2. ...

  4. WebGL three.js学习笔记 6种类型的纹理介绍及应用

    WebGL three.js学习笔记 6种类型的纹理介绍及应用 本文所使用到的demo演示: 高光贴图Demo演示 反光效果Demo演示(因为是加载的模型,所以速度会慢) (一)普通纹理 计算机图形学 ...

  5. Scala 学习笔记

    Scala 学习笔记 1 object func_exp { 2 println("Welcome to the Scala worksheet") //> Welcome ...

  6. Scala学习笔记04:内建控制结构

    Scala学习笔记04:内建控制结构 scala提供的控制结构并不算多,因为在函数式编程中,可以自己开发出各种功能的控制结构,所以scala提供的原生控制结构仅仅够用为止. 1.if - 判断 if是 ...

  7. Scala学习笔记03:操作符

    Scala学习笔记03:操作符 一.scala中操作符与方法的等价性 scala中操作符即方法.方法即操作符.scala中操作符其实是普通方法调用的另一种表现形式,运算符的使用其实就是隐含地调用对应的 ...

  8. Go圣经-学习笔记之复合类型(二)

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇 Go圣经-学习笔记之复合类型 下一篇 Go圣经-学习笔记之复合数据结构(三) map介绍和简单使用 map是一种无序的 ...

  9. c语言存储类型关键字作用,c语言学习笔记.关键字.存储类型关键字等

    关键字const 1.修饰变量. 修饰的对象为常量,只读. 2.修饰指针. const 也可以和指针变量一起使用,这样可以限制指针变量本身,也可以限制指针指向的数据. const 离变量名近就是用来修 ...

  10. [读书笔记]C#学习笔记三: C#类型详解..

    前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...

最新文章

  1. IOS可执行文件学习总结
  2. optee的RPC设计(模型)详解
  3. AOP - PostSharp 2.0
  4. Linux之ubuntu的root无法连接FTP
  5. 如何设计APP版本号?
  6. 使用ADMT3.2迁移域用户
  7. The LAO将于4月2日启动Neptune DAO,旨在为其他区块链项目提供流动性
  8. 苹果Mac强大的思维导图软件:MindNode 帮你轻松理清思路
  9. java mysql备份_java调用mysql服务做备份与恢复
  10. ALtera DE2开发板学习04
  11. 多目标跟踪综述-Multiple Object Tracking: A Literature Review
  12. matlab中三种原油问题,基于MATLAB联合站原油加热模糊控制(程序)
  13. 无视任何限制和权限 强制删除文件夹/文件
  14. AMD OpenCL Programming Guide - OpenCL Architecture
  15. opencv图像对比度
  16. 计算机网络第七版笔记--第一章
  17. 机器学习之用Hog+Svm人脸检测、交通标志和字符识别等(初学者)
  18. java 如何杀线程,您如何杀死Java中的线程?
  19. html文档生成pdf离线文件,将Swagger2文档导出为HTML或markdown等格式离线阅读解析.pdf...
  20. 推荐:一个人体穴位图解网站

热门文章

  1. Android AndroidManifest.xml文件权限出现“Permission is only granted to system apps”的解决办法
  2. 《工业控制系统信息安全防护指南》实施建议(下)
  3. linux系统如何看懂日志信息,Linux系统查看日志信息总结
  4. ITSM体系的整体目的
  5. 新生研讨课有感——陈睿周
  6. 性能测试模型-曲线拐点模型-压力曲线分析图
  7. 服务器网站中断,如何解决无法打开网页及服务器已断开连接的问题?
  8. 腾讯云后端面试15问(6年工作经验)
  9. 揭秘沃尔玛、腾讯、京东、浙商银行的供应链管理方案
  10. ML-Agent——使用可执行.exe文件