Scala
满岛菜鸟
励志成为大神的菜鸟
展开
-
Scala如何在for循环中实现continue和break效果
与Java不同,在Scala中是不能够直接使用continue和break两个关键字来实现跳过本次循环以及跳出当前循环体的,其替代方式主要如下:(1)continue效果:主要是通过循环守卫的方式来实现的,可参照如下代码:for(i <- 1 until 5 if i % 2 == 0){ println(i)} 2 4保护式为true则进入循环体内部,为false则跳过,类似于continue。(2)break效果:import scala.util.control.Break原创 2020-06-16 23:10:37 · 2437 阅读 · 0 评论 -
关于Scala中表达式的值
在Scala中,任何表达式都是有值的,这是其语言特性中比较特殊的地方,主要体现在一下三个方面:(1)if else条件表达式的值是每个分支的最后一行代码的结果:print(if(1 > 2) 1 else 2) --2print(if(true) println(1) else print(2)) --()(2)一般情况下,for循环和while循环表达式的值是Unit:var t = for(i <- 1 to 5){print(i)}print(t)var i = 1va原创 2020-06-16 22:41:43 · 271 阅读 · 0 评论 -
Scala字符串中==和eq的区别
在Scala中处理两个字符串时,==更加类似于Java中的equals,比较的是两个字符串的内容是不是相同的;而eq方法比较的是两个字符串的首地址的地址值是否相同。可以看下面这段代码:def main(args: Array[String]): Unit = { val s1 = "abc" val s2 = new String("abc") println(s1 == s2) println(s1.eq(s2))} 输出结果:truefalse...原创 2020-06-16 22:14:44 · 751 阅读 · 0 评论 -
Scala中Unit、Nothing和Null之间的区别概述
在Scala中,Unit、Nothing和Null是三个比较特殊的数据类型,三者之间的区别如下:Unit类似于Java中的void,表示没有返回值,用于不返回任何结果的方法的结果类型。只有一个实例值,就是()。Null表示返回值为空,是任意AnyRef类型的子类型;只有一个实例值,就是null。Nothing密封的抽象类,没有任何的实现的子类;主要作用是辅助类型的推导。在实际的开发中,主要是在方法抛出异常的时候会采用Nothing作为返回值,这样有一个好处,就是我们可以把返回的值(异常)原创 2020-06-16 21:53:42 · 2088 阅读 · 0 评论 -
Scala数据类型概述
Scala是完全面向对象的语言,这从其数据类型中就可以看出来。本文将对Scala中的数据类型进行简单的总结:(1)Scala中一切数据都是对象,都是Any的子类(2)Scala中的数据类型默认分为两大类:数值类型(AnyVal)和引用类型(AnyRef),不管是什么类型的数据都是对象(3)Scala中的数据类型仍然遵守低精度类型向高精度类型进行自动类型转换(4)在书写上,基本数据类型开头的字母都是大写的,类似于Java中的包装类关于Unit,Nothing和Null三者之间的区别将在另外一篇文章原创 2020-06-16 21:41:56 · 301 阅读 · 0 评论 -
Scala中的多种print输出方式
相较于Java的输出方式,Scala显得更加灵活和多样,首先需要了解的是,在Scala中,print方式的调用主要是调用预定义对象Predef的print方法,这个对象不用import就可以直接使用。以下是自己整理的几种常用的输出方式:(1)普通输出方式:object HelloWorld { def main(args: Array[String]): Unit = { var i:Int = 10 val j:Int = 20 println("Hello World"原创 2020-06-15 23:22:14 · 8221 阅读 · 1 评论 -
Scala中标识符命名的注意事项
Scala中的标识符与Java还是存在一些区别的,主要表现在以下几个方面:(1)组成:Scala中标识符只包括数字、大小写字母、操作符等,$是不可以出现在标识符中的(2)不能以数字开头,这一点与Java是一致的(3)如果以操作符开头的话,标识符中只能包含操作符(+ - * / # !等)(4)Scala中的关键字可以使用``进行区分:...原创 2020-06-15 22:58:07 · 298 阅读 · 0 评论 -
Scala中变量声明的注意事项
Scala的变量声明与Java既有相似之处也有其独特的语法,需要注意一下几点:(1)声明变量的时候,类型可以省略,编译器自动推导,即类型推导。(2)类型一旦确定之后是不可以进行修改的,说明Scala是强类型语言。(3)Scala中声明的变量必须显示赋初始值,这与Java是不一样的。(4)在声明/定义一个变量时,可以使用var或者val来修饰,var修饰的变量可改变,val修饰的变量不可改(在实际开发中能够使用val的地方尽可能不要使用var)...原创 2020-06-15 22:44:31 · 521 阅读 · 0 评论 -
Scala-class与object的区别
class、object和trait是Scala语言中非常重要的组成部分,是完全面向对象和函数式编程特性的重要载体,在此对其中比较常见的class和oject使用比较简洁的语言进行一下比较:classclass就是一个普通的类,编译后只会生成一个文件;可以和object同名(此时class被称为伴生类,object被称为伴生对象)object在编译之后会生成两个.class文件,主要目的是为了模拟java的静态方法:(1)当前类名.class(2)当前类名$.class:内部使用单利模式创建单一原创 2020-06-15 22:29:01 · 1061 阅读 · 0 评论 -
Scala中样例类和普通类的区别
Scala中样例类的设计主要是为了代替Java语言中的JavaBean和RPC通信使用,普通类和样例类之间的区别总结如下:首先创建一个样例类:object CaseClassDemo { def main(args: Array[String]): Unit = { val user:User = User("zhangsan",26) }}case class ...原创 2020-02-06 15:52:28 · 2689 阅读 · 0 评论 -
Scala中Ordering和Ordered的区别
一般学习Scala语言的人,都是有Java语言基础的。我们知道在Java语言中对象的比较有两个接口,分别是Comparable和Comparator。那么它们之间的区别是什么呢?实现Comparable接口的类,重写compareTo()方法后,其对象自身就具有了可比较性;实现comparator接口的类,重写了compare()方法后,则提供一个第三方比较器,用于比较两个对象。由于S...原创 2020-02-06 15:30:05 · 478 阅读 · 0 评论 -
Scala集合中运算符操作的区别总结
在Scala的集合操作中,会经常见到诸如:::,+:,:+等运算符的操作,掌握彼此之间的区别很重要:下面是详细的示例:(1):: 符号:作用是向集合的头部添加元素list.::(10)和10::list的作用是等价的。object OperatorTest { def main(args: Array[String]): Unit = { val list = List(...原创 2020-02-06 15:10:34 · 303 阅读 · 0 评论 -
Scala中下划线的作用总结
在Scala语言中,下划线的使用可谓是无处不在,在此将其用法暂时总结如下:(1)可以作为变量的名称,但是不可以print(2)变量的初始值(3)导入包中的所有类(作为包引入的通配符)(4)在导入某个包中的类时屏蔽某个类//例如在java.util包下将Date屏蔽,import java.util.{Date =>_,_}(5)将函数作为一个整体返回(6)在集合操作中,如果...原创 2020-02-06 13:49:33 · 519 阅读 · 0 评论