scala helloworld
在这里对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相关推荐
- Spark Scala语言学习系列之完成HelloWorld程序(三种方式)
三种方式完成HelloWorld程序 分别采用在REPL,命令行(scala脚本)和Eclipse下运行hello world. 一.Scala REPL. windows下安装好scala后,直接C ...
- Scala基础教程(一):简介、环境安装
Scala基础语法 如果有很好的了解Java语言,那么将很容易学习Scala. Scala和Java间的最大语法的区别在于;行结束符是可选的.考虑Scala程序它可以被定义为通过调用彼此方法进行通信的 ...
- IDEA+scala+spark程序开发流程
1. 新建JAVA工程 2. 设置scala SDK File -> Project Struction -> Libraries -> +; 添加Scala SDK.如果没有配置过 ...
- scala命令行运行spark代码
/home/appleyuchi/scripts/scala.sh #!/bin/bash # author:菜鸟教程 # url:www.runoob.comecho "Shell 传递参 ...
- 第一个Scala程序——Hello World!
一.交互式编程 交互式编程不需要创建脚本文件,可以通过以下命令调用: $ scala Welcome to Scala 2.13.3 (Java HotSpot(TM) 64-Bit Server V ...
- Spark基础学习笔记08:Scala简介与安装
文章目录 零.本讲学习目标 一.Scala简介 (一)Scala概述 (二)函数式编程 (三)Scala特性 1.一切都是对象 2.一切都是函数 3.一切都是表达式 (四)在线运行Scala 二.选择 ...
- java 运行scala_使用java命令运行scala代码
Scala是运行在JVM上的语言,跑在标准的Java平台上,可以与所有的Java库实现无缝交互. 下面运行一个小程序来看看在JVM上如何使用java命令来运行Scala程序. 在编写代码之前,我们首先 ...
- array函数参数 scala_3小时Scala入门
〇,编程环境 1,安装Java 2,配置Java环境变量 3,安装Scala 4,配置Scala环境变量 参考文末阅读原文链接. 一,算术运算 二,输入输出 输出:println,print,prin ...
- scala编程_Scala编程语言简介
scala编程 Scala is a programming language that integrates the object oriented and functional language ...
最新文章
- java note项目_note(java)
- 泛型集合中对继承类的转换
- python打包软件后报错 :SyntaxError: Non-UTF-8 code starting with ‘\x90‘ in file 的原因及解决方法
- 10 个非常有用的 SVG 动画的 JavaScript 库
- TCMalloc:线程缓存Malloc以及tcmalloc与ptmalloc性能对比
- 【整理】C#2.0特性之局部类、空属类型和静态类
- Datalogic得利捷发布IMPACT 2D机器人引导URCap插件
- 中国大学Mooc平台,自动下载pdf文档
- 概率统计Python计算:离散型2-维随机向量的联合分布律及边缘分布
- 操作系统存储管理之虚拟存储与分页式虚拟存储系统
- 老板,上班迷路了,晚点到~
- 指甲半月痕的奥秘!!
- java 中文转拼音_JAVA 将中文转化为拼音工具类
- c 语言多个if并联使用,if的嵌套和多个并列if的效率有关问题
- linux服务器---代理认证
- Secure CRT 乱码 问题
- 元宇宙价值、风险与展望
- STM8S105S4T6C和STM8S105C6T6对比
- 面试的时候面试官问如何看待加班,该怎么回答?
- Word 2016 如何设置黑底白字
热门文章
- Linux TCP 性能調優筆記
- Button with Round Progress
- OpenResty实现LNMP的缓存前移(到达nginx前端层面)
- 在一家公司产生倦怠感,如何化解?
- 记一次坑爹报错之旅 -bash: /etc/profile: line 11: syntax error near unexpected token
- SushiSwap将于5月17日上线IDO平台Miso
- ChaiNext:大盘横盘,主流币未有突出表现
- OpenSea2月总交易额为9390.4万美元 用户总数突破5万人
- SAP License:SAP S/4HANA Cloud [ERP 云]
- SAP License:第三只眼看财务-快速编制现金流量