`

java8和scala的简略对比

    博客分类:
  • jdk8
阅读更多

简单介绍一下java和scala的不同,公司里暂时还没有使用到scala,也就没有更多的去看它的API,语法挺精简的,有兴趣的可以多看下官网:  http://www.scala-lang.org/api/current/#package

 

1、scala中的hello world:

def main(args: Array[String]){
    var n:int = 2;
    while(n<=6){
         // 此处可以scala中的插值操作符s,
         // 而不必要像java中使用+来连接每个字符串:"hello " + n + " world"
        println (s"hello ${n} world")  
        n += 1
    }
}

 

 

2、区间的表达

// java中的区间
IntStream.rangeClosed(1, 7).forEach(n -> System.out.println("hello " + n + " world"));
//guava中的区间
Range<Integer> range = Range.closed(1, 7);

// scala中的区间创建: start to end 或 start.to(end)
// 1 to 7 foreach { n => println(s"hello ${n} world")}
// groovy中的区间创建: 
// def list = (1..7).collect()

 

 

3、scala中基础数据结构

(1)对比map的创建方式

HashMap java_map = new HashMap();
HashMap<Object, Object> guava_map = Maps.newHashMap();
val scala_map = Map("name" -> "xiaomi", "email" -> "max@xxx.com")
def groovy_map = [name:'xiaomi', email:"max@xxx.com"]

 

(2)scala中val和var的区别

val: 表示变量为只读状态,类似java中使用final修饰过一样。

var: 表示变量可以被读写。

 

(3)不可变集合

之所以在scala中引入val不可变集合是因为,scala中的这些集合都是持久化的,当更新一个集合时实际上并不是在原集合上更新,而是创建了一个新的集合并持久化。

不可变集合的对比:

ImmutableList<Object> guava_list = ImmutableList.of();
Object java_list = Collections.unmodifiableList(list);
val scala_list = List("name", "email");

 

(4)对比java+scala中集合的操作(都采用并行流的方式)

List<String> views = Arrays.asList("wsbs","xwzx","bmfw","wshd");
views.parallelStream().filter(str -> str.length()>3).map(String::toUpperCase);
views.par filter(_.length()>3) map(_.toUpperCase())
// scala中的stream还可以记录曾经计算出过的值(在内存中使用缓存保存的)
// scala在调用方法时,若方法没有参数值,那么可以省略它的括号,比如直接toUpperCase

 

(5)元组

val person = ("xiaomi", "max@xxx.com");
println (person._1)  // xiaomi,取值时从1开始取
println (person._2)	// max@xxx.com

 

 

更多API请参考: http://www.scala-lang.org/api/current/#package

分享到:
评论

相关推荐

    scala和java混合编译

    在现代软件开发中,Java和Scala是两种广泛使用的编程语言。它们各有特色,Java以其稳定性和广泛的社区支持而著名,Scala则以其强大的函数式编程特性及对Java虚拟机(JVM)的无缝集成受到青睐。当一个项目中同时包含...

    scala-java8-compat_2.11-0.7.0-API文档-中英对照版.zip

    赠送jar包:scala-java8-compat_2.11-0.7.0.jar; 赠送原API文档:scala-java8-compat_2.11-0.7.0-javadoc.jar; 赠送源代码:scala-java8-compat_2.11-0.7.0-sources.jar; 赠送Maven依赖信息文件:scala-java8-...

    面向Java开发人员的Scala指南

    《面向Java开发人员的Scala指南》是一本专为熟悉Java编程语言的开发者设计的书籍,旨在帮助他们理解和掌握Scala这门强大的多范式编程语言。Scala结合了面向对象和函数式编程的特点,提供了更高的代码抽象能力和性能...

    scala-java8-compat_2.11-0.7.0-API文档-中文版.zip

    赠送jar包:scala-java8-compat_2.11-0.7.0.jar; 赠送原API文档:scala-java8-compat_2.11-0.7.0-javadoc.jar; 赠送源代码:scala-java8-compat_2.11-0.7.0-sources.jar; 赠送Maven依赖信息文件:scala-java8-...

    面向Java开发人员Scala指南,Scala和servlet的比较

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,为Java开发者提供了一种更高效、更简洁的编程选择。在Java开发领域,Servlet是用于构建Web应用程序的标准API,广泛应用于服务器端编程。本...

    2018 Scala for Java Developers: A Practical Primer

    Master the fundamentals of Scala and understand its emphasis on functional programming that sets it apart from Java. This book will help you translate what you already know in Java to Scala to start ...

    scala java相关开发工具

    标题中的“Scala Java相关开发工具”表明我们讨论的是与Java和Scala编程语言相关的开发环境和工具。Java和Scala都是在JVM(Java虚拟机)上运行的语言,它们有着紧密的联系,但各自拥有独特的特性和用途。 首先,...

    scala-to-java:将Scala代码转换为Java代码的命令行工具

    确保您已安装Java 1.8和Maven 检出项目 在项目目录中调用mvn clean package 。 在目标目录中scala-to-java.jar将创建scala-to-java.jar 使用java -jar target/scala-to-java.jar --slim运行应用程序。 可选的--...

    基于maven的scala与java相互调用的简单实例

    本示例着重讲解如何在Java和Scala之间进行互调用,这是基于Maven构建系统的。Maven是Apache开发的项目管理工具,它可以帮助开发者管理项目的构建、依赖关系以及文档的生成。在Java和Scala的混合开发环境中,Maven...

    面向Java开发者的Scala教程

    - **函数式编程**:Scala支持高阶函数、闭包和模式匹配等函数式编程特性,这些在Java中需要借助额外的库或Java 8及以上版本的Lambda表达式实现。 - **案例类和模式匹配**:Scala的案例类和模式匹配提供了处理数据...

    为Java虚拟机编译Scala(Michel Schinz)Compiling Scala for the Java Virtual Machine (Michel Schinz)

    - **类型表示**:包括对各种类型(比如Java类类型、Scala类类型、数组类型、单例类型、复合类型、值类型、特殊类型)的表示和处理。 ### 例子 文档中还提到了一些具体的翻译例子,尽管这部分内容没有提供具体细节...

    SpringBoot + SpringData Jpa + Scala + Mysql(java+Scala混编)

    在Java项目中使用Scala,通常被称为Java和Scala的混编。这种混编允许开发团队在已有的Java项目中逐渐引入Scala代码,以利用其优势,同时保持与现有Java代码的兼容性。在实际应用中,可能会在服务端逻辑或者特定组件...

    scala-2.13.8 解压安装版

    总的来说,Scala-2.13.8提供了一个强大且灵活的编程平台,适用于开发复杂、高性能的应用,同时结合了面向对象和函数式编程的优点,为开发者提供了丰富的工具和资源。通过深入学习和实践,开发者可以充分利用其特性,...

    scala-java8-compat:用于Scala的Java 8兼容性工具包

    scala-java8-compat Scala的Java 8兼容性套件。 该API目前仍处于试验阶段:我们尚不能保证与将来的版本保持源代码或二进制兼容性。 Javadoc在。 Scala功能的功能接口 一组用于scala.FunctionN的。 这些设计用于...

    IBM:面向Java开发人员的Scala指南-p178.7z

    总的来说,《IBM:面向Java开发人员的Scala指南》的第178页可能会详细讨论以上的一些概念,帮助Java开发者理解Scala的独特之处,掌握如何将这些特性应用到实际的项目中,以提升代码质量和开发效率。通过学习Scala,...

    Java 和 Scala 并发性基础.doc

    Java 和 Scala 并发性基础

    JGSK, Java,Groovy,Scala,Kotlin 四种语言的特点对比.zip

    Java、Groovy、Scala和Kotlin是四种在Java平台上广泛使用的编程语言,它们各自具有独特的特点和优势。这里我们将深入探讨这四种语言的核心特性,并对比它们在实际开发中的应用。 首先,Java作为最古老的成员,自...

    Google的pagerank实现(Java+scala)Eclipse工程实例带测试数据结果和JAR包

    功能:实现google的PageRank算法,带完整的测试数据和结果,java、scala语言版本 ********************************************************* 版本: scala2.10.4 spark 1.6.1 Scala IDE Build id: 4.4.1-vfinal...

Global site tag (gtag.js) - Google Analytics