Scala
海边看花开
越努力越幸福
展开
-
19 scala的模式匹配
scala的模式匹配使用的 match 关键字,每个分支使用 case 进行声明,会从第一个case 语句进行匹配,匹配成功则执行相关逻辑,匹配不成功,则执行 case _ 的逻辑, 如果没声明 case _ 且没匹配成功,则会抛出 MatchError 的错误。1 守卫匹配 for (ch <- "+-3!") { var sign = 0 var digit = 0 ch match { case _ if ch.toString.原创 2021-01-25 00:33:13 · 123 阅读 · 1 评论 -
18 Scala常用集合操作
1 map映射操作map 映射可以将集合内的每一个元素通过指定的功能(函数) 映射转化成新的集合# 将 list1内的每一个元素加 1 操作 ,也可以传入一个函数scala> val list1=List(1,2,3,4)list1: List[Int] = List(1, 2, 3, 4)scala> val list2 = list1.map(x=>x+1)list2: List[Int] = List(2, 3, 4, 5)scala> list2res0原创 2021-01-24 23:58:55 · 238 阅读 · 0 评论 -
17 scala集合使用
1 数组的使用1.1 定长数组的使用val arr01 = new Array[Int](4) // 定义一个数组,类型为Int,长度为4的数组arr01(3)=10 // 修改数组arr01的下标为3的元素1.1 变变数组的使用import scala.collection.mutable.ArrayBufferval arr02 = ArrayBuffer[Any](3, 2, 5) // 定义一个类型为Any的变长数组 # 可变数组的增删改查 arr02(0) // 查询原创 2021-01-05 00:16:08 · 189 阅读 · 0 评论 -
16 Scala 构造器基本使用
在scala中构建对象时也需要使用构造器,并且可以用多个构造器,scala的构造器分为主构造器和辅助构造器两类, 构造器的作用时为了完成对新对象的初始化,构造器没有返回值。每一个辅助构造器都必须把 主构造器的参数列表调用一遍(可以直接或间接)辅助构造器,必须在第一行显式调用主构造器,方法名字为: this基本使用:// person有4个构造器,一个主构造器Person() 三个辅助构造器class Person2(){ var name:String = _ var age:Int原创 2020-11-23 23:14:49 · 114 阅读 · 0 评论 -
15 scala异常处理
scala中为了防止代码异常终止,处理就需要用到 try 和catch 块处理,出错的代码写在 try 块中,catch用来处理异样基本语法: /* 说明 * 1. 在scala中只有一个catch * 2. 在catch中可以有多个case,每个case可以匹配一种异常 case ex:ArithmeticException * 3. => 关键符号,表示后面要执行的代码块 * 4. finally 最后要执行的 * */原创 2020-11-23 22:27:18 · 117 阅读 · 0 评论 -
14 scala-惰性函数
惰性函数又称为懒汉模式,在使用时需要加上 lazy 关键字惰性函数使用需注意:1 lazy 不能修饰var类型的变量2 在调用函数时加了lazy,函数会延时执行3 在声明一个变量时,如果加了lazy,也会延时执行惰性函数的基本使用:object lazydemo { def main(args: Array[String]): Unit = { lazy val res = sum(10,20) // 代码在这里只是做了缓冲,并未真正执行,可以根据打印观察 println原创 2020-10-29 00:33:16 · 98 阅读 · 0 评论 -
13 scala-Io操作
1 从控制台读取import scala.io.StdInobject IoDemo { def main(args: Array[String]): Unit = { // 从控制台接受用户信息: name,age,sal val name = StdIn.readLine() // name val age = StdIn.readInt() // age val sal = StdIn.readDouble() //sal printf("姓名为:原创 2020-10-28 00:39:59 · 200 阅读 · 0 评论 -
12-Scala类型转换
object TypeConvert { def main(args: Array[String]): Unit = { /* * classOf 可以得到类名 * isInstanceOf 判断是否为指定类型 * asInstanceOf 类型转换 * 注意点: * 1 需要使用isInstanceOf 判断对象是否为指定类的对象,如果是的话,则可以使用 asInstanceOf 将对象转换为指定类型; * 2 p.isInstanceOf[原创 2020-10-17 10:56:28 · 160 阅读 · 0 评论 -
11 scala 伴生对象之apply方法
在scal的伴生对象中,可以通过apply来实现类名加参数的方式来创建对象object ApplyDemo { def main(args: Array[String]): Unit = { val list = List(1,2,3) println(list) val pig = new Pig("xiaohua") // 使用apply来创建对象 val pig1 = Pig("heizhu") val pig2 = Pig() p原创 2020-09-14 22:44:55 · 205 阅读 · 0 评论 -
10 Scala 伴生对象基本使用
object Accompanyobject { def main(args: Array[String]): Unit = { println(ScalaPerson.sex) // true 在底层等价于 ScalaPerson.MOUDLE$.sex() ScalaPerson.sayHi() // 在底层等价于 ScalaPerson.MOUDLE$.sayHi() }}// 说明:// 1. 当在同一个文件中,如果有class ScalaPerson 和objec原创 2020-09-13 16:33:35 · 125 阅读 · 0 评论 -
9 while循环
object Demo1 { def main(args: Array[String]): Unit = { var i= 0 while (i < 10){ println("hello word" + i) i += 1 } }}原创 2020-08-30 23:35:40 · 97 阅读 · 0 评论 -
8 scala数据类型
1 在scala中数据类型都是对象,scala中没有java中的原生类型varnum1:Int=10//Int是一个类,因此它可以有多个实例//在scala中,如果一个方法没有形参,则可以省略println(num1.toDouble+"\t"+num1.toString())2 scala数据类型分为两大类AnyVal(值类型)和AnyRef(引用类型),注意,不管是AnyVal还是AnyRef都是对象1 在scala中有一个根类型Any,他是所有类的父类2 scala中一切皆对象,分为原创 2020-08-26 22:30:51 · 195 阅读 · 0 评论 -
7 Scala注释
原创 2020-08-26 22:22:38 · 86 阅读 · 0 评论 -
6 scala实现break和continue
1 Break的实现import scala.util.control.Breaks._object useBreak { def main(args: Array[String]): Unit = { var num = 99 var sum = 0 /* breakable(op :=>Unit) 1):op :=>Unit 表示接受的参数没有输入也没有返回值的函数 2):breakable(op :=>Unit) 可以接受一原创 2020-07-05 11:06:58 · 3592 阅读 · 0 评论 -
5 Scala for循环基本用法
1 基本使用:val start = 1 val end = 10 // start从那个值开始循环 // to关键字 // end循环结束的值 // start to end 表示前闭后闭 for(i <- 1 to 10){ println(i) } // for也可以对集合进行遍历 var list = List("hello","tom","30") for(item <- list)原创 2020-07-04 22:51:12 · 304 阅读 · 0 评论 -
4 scala值类型与string类型转换
val d1 = 1.2// 基本数据类型转换stringval s1 = d1 + "" // 下划线表示编译器做了转成// string类型转基本数据类型var s2 = "12"var num1 = s2.toIntvar num2 = s2.toByte// 注意在将string类型转换成基本数据类型时,要保证string类型能够转换成有效的数据// 比如可以把“123”转换成一个整数,但不能把“hello”转成一个整数// 在对string进行转换时要注意,如果带有小数点,原创 2020-07-04 10:20:28 · 1201 阅读 · 0 评论 -
3 scala字符串输出
var str1: String = "Hello"var str2: String = "World!"var name: String = "Tom"var age: Int = 10var sal: Float = 10.67fvar height: Double = 180.15println(str1 + str2)// 格式化输出printf("名字:%s,年龄:%s,身高:%s,薪水:%s", name, age, height, sal)// scala支持使用$输原创 2020-07-04 10:16:21 · 278 阅读 · 0 评论 -
2 scala字符串切割 IndexOf,lastIndexOf,substring,split
var str: String = "6月29日, 直播带货最火爆, 各方关注问题多。"// IndexOf(int index)返回string对象第一次在str中出现的位置,找不到返回-1var first_num: Int = str.indexOf("火爆,")println(first_num) //11//带两个参数:int indexOf(int ch,int Index),注:ch表示字符,Index表示从str字符串的第Index个字符开始查找到的位置,如果找不到返回-1var原创 2020-07-03 22:58:47 · 5776 阅读 · 0 评论 -
1 scala 查找首字母,和尾字母
var str1: String = "Hello"println("方法一:-------------")var first_str :String= str1.take(1)var last_str :String= str1.reverse.take(1)println("first_str:"+first_str)println("last_str:"+last_str)println("方法二:-------------")println("first_str:"+str1.he原创 2020-07-03 22:01:47 · 773 阅读 · 0 评论