Scala学习笔记(1)-基本类型归纳
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)-基本类型归纳相关推荐
- Scala学习笔记02:数据类型、常量与变量
Scala学习笔记02:数据类型.常量与变量 一.数据类型 1.基本数据类型 Byte 字节型 Short 短整型 Int 整型 Long 长整型 Char 字符型 String 字符串 Float ...
- Scala学习笔记(三)
Scala学习笔记(三) 一.模式匹配 1. 简单模式匹配 2. 匹配类型 3. 守卫 4. 匹配样例类 5. 匹配数组 6. 匹配列表 7. 匹配元组 8. 变量声明中的模式匹配 8.1 获取数组中 ...
- Scala学习笔记(一)
Scala学习笔记(一) 一.Scala简介 二.Scala安装与配置 1. 安装JDK 2. 安装Scala SDK 3. 安装IDEA插件 三.Scala解释器 1. 启动Scala解释器 2. ...
- WebGL three.js学习笔记 6种类型的纹理介绍及应用
WebGL three.js学习笔记 6种类型的纹理介绍及应用 本文所使用到的demo演示: 高光贴图Demo演示 反光效果Demo演示(因为是加载的模型,所以速度会慢) (一)普通纹理 计算机图形学 ...
- Scala 学习笔记
Scala 学习笔记 1 object func_exp { 2 println("Welcome to the Scala worksheet") //> Welcome ...
- Scala学习笔记04:内建控制结构
Scala学习笔记04:内建控制结构 scala提供的控制结构并不算多,因为在函数式编程中,可以自己开发出各种功能的控制结构,所以scala提供的原生控制结构仅仅够用为止. 1.if - 判断 if是 ...
- Scala学习笔记03:操作符
Scala学习笔记03:操作符 一.scala中操作符与方法的等价性 scala中操作符即方法.方法即操作符.scala中操作符其实是普通方法调用的另一种表现形式,运算符的使用其实就是隐含地调用对应的 ...
- Go圣经-学习笔记之复合类型(二)
2019独角兽企业重金招聘Python工程师标准>>> 上一篇 Go圣经-学习笔记之复合类型 下一篇 Go圣经-学习笔记之复合数据结构(三) map介绍和简单使用 map是一种无序的 ...
- c语言存储类型关键字作用,c语言学习笔记.关键字.存储类型关键字等
关键字const 1.修饰变量. 修饰的对象为常量,只读. 2.修饰指针. const 也可以和指针变量一起使用,这样可以限制指针变量本身,也可以限制指针指向的数据. const 离变量名近就是用来修 ...
- [读书笔记]C#学习笔记三: C#类型详解..
前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...
最新文章
- IOS可执行文件学习总结
- optee的RPC设计(模型)详解
- AOP - PostSharp 2.0
- Linux之ubuntu的root无法连接FTP
- 如何设计APP版本号?
- 使用ADMT3.2迁移域用户
- The LAO将于4月2日启动Neptune DAO,旨在为其他区块链项目提供流动性
- 苹果Mac强大的思维导图软件:MindNode 帮你轻松理清思路
- java mysql备份_java调用mysql服务做备份与恢复
- ALtera DE2开发板学习04
- 多目标跟踪综述-Multiple Object Tracking: A Literature Review
- matlab中三种原油问题,基于MATLAB联合站原油加热模糊控制(程序)
- 无视任何限制和权限 强制删除文件夹/文件
- AMD OpenCL Programming Guide - OpenCL Architecture
- opencv图像对比度
- 计算机网络第七版笔记--第一章
- 机器学习之用Hog+Svm人脸检测、交通标志和字符识别等(初学者)
- java 如何杀线程,您如何杀死Java中的线程?
- html文档生成pdf离线文件,将Swagger2文档导出为HTML或markdown等格式离线阅读解析.pdf...
- 推荐:一个人体穴位图解网站
热门文章
- Android AndroidManifest.xml文件权限出现“Permission is only granted to system apps”的解决办法
- 《工业控制系统信息安全防护指南》实施建议(下)
- linux系统如何看懂日志信息,Linux系统查看日志信息总结
- ITSM体系的整体目的
- 新生研讨课有感——陈睿周
- 性能测试模型-曲线拐点模型-压力曲线分析图
- 服务器网站中断,如何解决无法打开网页及服务器已断开连接的问题?
- 腾讯云后端面试15问(6年工作经验)
- 揭秘沃尔玛、腾讯、京东、浙商银行的供应链管理方案
- ML-Agent——使用可执行.exe文件