在这里对Scala实现与Java实现的几个不同之处做个介绍。

  • 第一是Scala对HelloWorld的修饰符使用的是object。其实Scala中也有class关键字,那么object关键字和class关键字有什么区别那?简单来说object关键字定义了一个匿名类,并且创建了该匿名类的单个实例(采用单例模式),该实例名为HelloWorld。所以object中定义的方法自动都是static的。我觉得object关键字存在的价值之一就是建立起了面向对象和函数式的桥梁。因为在面向对象的系统中,所有方法都必须存在于类中,而函数式编程中没有类的概念,使用函数无需new类的实例,所以object中的方法都是静态方法,可以直接被调用。进一步解读请到这里。

  • 第二是Scala中对变量的类型的定义方式是变量名在前,类型在后,中间用冒号相隔。原因之一是代码更可读。因为我们更关心变量名,而类型其次,尤其是你拥有一个超级长的类型的情况下(比如 HashMap<Shape, Pair<String, String>>);原因之二据说是这样的方式在实现Scala类型时技术上要简单些。进一步解读请到这里。

  • 第三是main函数的返回值是Unit,而不是Java中的Void。为什么是这样那?我想是因为Scala为了实现自己的类型系统,对于无显式返回值的函数直接使用Void是不合适的。

  • 第四是Scala中表达式最后的分号是可选的。原因就是为了契合函数式编程的哲学,即一切尽可能的简单。不写分号程序员一天可以多敲一些代码出来。
public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World!");}
}object HelloWorld  {def main(args: Array[String]): Unit = {println("Hello, World!")}
}object HelloWordV2 extends App {println("Hello, World!")
}

代码从三行减少到了两行,Scala终于胜出了。那么App是个什么鬼?App是一个trait。trait又是什么鬼?trait是Scala中的一个特殊类型,它与Java中的interface很相似,但比interface强大。HelloWordV2添加了对App的扩展后,就自动成为了一个可以运行的程序,由于App中定义了main方法,所以HelloWorldV2中就无需再定义了,牛逼的地方在于HelloWorldV2的body中的代码都会作为main方法中的代码被执行

不知有没注意到其实main方法是有个叫args的参数的,那么新版HelloWorld中如何使用该参数那?直接使用它就行。

fava:

在使用静态方法的时候需要注意一下几个方面:

在静态方法里只能直接调用同类中其他的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象。(备注:静态变量是属于整个类的变量而不是属于某个对象的)

静态方法不能以任何方式引用this和super关键字,因为静态方法在使用前不用创建任何实例对象,当静态方法调用时,this所引用的对象根本没有产生。

转载于:https://www.cnblogs.com/qiuhong10/p/8399187.html

scala helloworld相关推荐

  1. Spark Scala语言学习系列之完成HelloWorld程序(三种方式)

    三种方式完成HelloWorld程序 分别采用在REPL,命令行(scala脚本)和Eclipse下运行hello world. 一.Scala REPL. windows下安装好scala后,直接C ...

  2. Scala基础教程(一):简介、环境安装

    Scala基础语法 如果有很好的了解Java语言,那么将很容易学习Scala. Scala和Java间的最大语法的区别在于;行结束符是可选的.考虑Scala程序它可以被定义为通过调用彼此方法进行通信的 ...

  3. IDEA+scala+spark程序开发流程

    1. 新建JAVA工程 2. 设置scala SDK File -> Project Struction -> Libraries -> +; 添加Scala SDK.如果没有配置过 ...

  4. scala命令行运行spark代码

    /home/appleyuchi/scripts/scala.sh #!/bin/bash # author:菜鸟教程 # url:www.runoob.comecho "Shell 传递参 ...

  5. 第一个Scala程序——Hello World!

    一.交互式编程 交互式编程不需要创建脚本文件,可以通过以下命令调用: $ scala Welcome to Scala 2.13.3 (Java HotSpot(TM) 64-Bit Server V ...

  6. Spark基础学习笔记08:Scala简介与安装

    文章目录 零.本讲学习目标 一.Scala简介 (一)Scala概述 (二)函数式编程 (三)Scala特性 1.一切都是对象 2.一切都是函数 3.一切都是表达式 (四)在线运行Scala 二.选择 ...

  7. java 运行scala_使用java命令运行scala代码

    Scala是运行在JVM上的语言,跑在标准的Java平台上,可以与所有的Java库实现无缝交互. 下面运行一个小程序来看看在JVM上如何使用java命令来运行Scala程序. 在编写代码之前,我们首先 ...

  8. array函数参数 scala_3小时Scala入门

    〇,编程环境 1,安装Java 2,配置Java环境变量 3,安装Scala 4,配置Scala环境变量 参考文末阅读原文链接. 一,算术运算 二,输入输出 输出:println,print,prin ...

  9. scala编程_Scala编程语言简介

    scala编程 Scala is a programming language that integrates the object oriented and functional language ...

最新文章

  1. java note项目_note(java)
  2. 泛型集合中对继承类的转换
  3. python打包软件后报错 :SyntaxError: Non-UTF-8 code starting with ‘\x90‘ in file 的原因及解决方法
  4. 10 个非常有用的 SVG 动画的 JavaScript 库
  5. TCMalloc:线程缓存Malloc以及tcmalloc与ptmalloc性能对比
  6. 【整理】C#2.0特性之局部类、空属类型和静态类
  7. Datalogic得利捷发布IMPACT 2D机器人引导URCap插件
  8. 中国大学Mooc平台,自动下载pdf文档
  9. 概率统计Python计算:离散型2-维随机向量的联合分布律及边缘分布
  10. 操作系统存储管理之虚拟存储与分页式虚拟存储系统
  11. 老板,上班迷路了,晚点到~
  12. 指甲半月痕的奥秘!!
  13. java 中文转拼音_JAVA 将中文转化为拼音工具类
  14. c 语言多个if并联使用,if的嵌套和多个并列if的效率有关问题
  15. linux服务器---代理认证
  16. Secure CRT 乱码 问题
  17. 元宇宙价值、风险与展望
  18. STM8S105S4T6C和STM8S105C6T6对比
  19. 面试的时候面试官问如何看待加班,该怎么回答?
  20. Word 2016 如何设置黑底白字

热门文章

  1. Linux TCP 性能調優筆記
  2. Button with Round Progress
  3. OpenResty实现LNMP的缓存前移(到达nginx前端层面)
  4. 在一家公司产生倦怠感,如何化解?
  5. 记一次坑爹报错之旅 -bash: /etc/profile: line 11: syntax error near unexpected token
  6. SushiSwap将于5月17日上线IDO平台Miso
  7. ChaiNext:大盘横盘,主流币未有突出表现
  8. OpenSea2月总交易额为9390.4万美元 用户总数突破5万人
  9. SAP License:SAP S/4HANA Cloud [ERP 云]
  10. SAP License:第三只眼看财务-快速编制现金流量