Scala入门详解
object作为Scala中的一个关键字,相当于Java中的public static class这样的一个修饰符,也就说object中的成员都是静态的! 所以我们在这个例子中的main方法是静态的,不需要类的实例就可以直接被虚拟机调用,而这正是作为JVM平台上程序入口的必备条件;
疑问:object是不是一个对象(此时,你肯定是从Java的角度是考虑),事实是object是Scala中的静态类,不是对象 从Spark的Master和Worker的源码中我们都发现了其入口的main方法是在object中的;
package com.dtspark.scala.basics
/**
* object作为Scala中的一个关键字,相当于Java中的public static class这样的一个修饰符,也就说object中的成员都是静态的!
* 所以我们在这个例子中的main方法是静态的,不需要类的实例就可以直接被虚拟机调用,而这正是作为JVM平台上程序入口的必备
* 条件;
* 疑问:object是不是一个对象(此时,你肯定是从Java的角度是考虑),事实是object是Scala中的静态类,不是对象
* 从Spark的Master和Worker的源码中我们都发现了其入口的main方法是在object中的;
*/
object HelloScala {
/**
* 1,def是什么,def是scala的关键字,所有用def定义的内容都是函数或者方法;
* 2,这里的main是方法,因为被def定义且不具有函数特征;
* 3,main是Scala语言中规定的Scala的应用程序的入口,一个运行的Scala应用程序只能有一个Main入口
* 4,args: Array[String] 其中args是参数名称,Array[String]表面应用程序运行时候的传入参数集合
* 5,: Unit 表明main入口方面的类型是Unit,也就是说执行main方法后返回的Unit类型;
* 6,Unit是什么类型呢?相当于Java中Void类型
* 7,= 是什么?是表明main方法执行的结果是由谁来赋值的,或者或main方法的方法体在哪里?在“=“的右面!
* 8,方法体一般有{}来封装,里面可以有很多条语句
* 9,{}语句块默认情况下最后一条语句的结果类型就是{}的返回类型
* 10,跟踪println的源代码的一个额外的收获是发现Scala的println的IO操作是借助了Java的IO操作,也就是说Scala调用了Java!!!
* 11,如果方法或者函数的类型或者返回类型是Unit的话,就可以直接把“:Unit = ”去掉,其他的非Unit类型则不可去掉
* 12,关于println打印出内容到控制台,底层借助了Java IO的功能,一个事实情况是Scala在做很多比较底层的实现的时候经常会
* 使用Java的实现来缩短开发时间,例如说操作数据源(DB、NoSQL(Cassandra、HBase)等)的JDBC,再例如关于线程Thread的操作,Scala
* 往往也会直接使用Java中的Thread;
* 13,按照当今OS的原理,程序的main入口方法都是运行在主线程中的,OS的运行分为Kernel Space和User Space
* ,应用程序是运行在User Space中,应用程序Scala所在的进程一般都是透过OS Fork出来,被Fork出来的应用程序进程默认会有主线程
* 而我们的main方法就是默认在主线程中的;
*/
def main(args: Array[String]){
println("Hello Scala!!!") //在Console上打印出"Hello Scala!!!"这个字符串并且换行
// println(args.length)
}
}
Scala入门详解的更多相关文章
- Scala 入门详解
Scala 入门详解 基本语法 Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的 Scala 程序是对象的集合,通过调用彼此的方法来实现消息传递.类,对象,方法,实例变 ...
- Linq之旅:Linq入门详解(Linq to Objects)
示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...
- SQL注入攻防入门详解
=============安全性篇目录============== 本文转载 毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱,事实上是没机 ...
- SQL注入攻防入门详解(2)
SQL注入攻防入门详解 =============安全性篇目录============== 毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱 ...
- Quartz 入门详解
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个, ...
- Redis快速入门详解
Redis入门详解 Redis简介 Redis安装 Redis配置 Redis数据类型 Redis功能 持久化 主从复制 事务支持 发布订阅 管道 虚拟内存 Redis性能 Redis部署 Redis ...
- [转]SQL注入攻防入门详解
原文地址:http://www.cnblogs.com/heyuquan/archive/2012/10/31/2748577.html =============安全性篇目录============ ...
- [置顶]
xamarin android toolbar(踩坑完全入门详解)
网上关于toolbar的教程有很多,很多新手,在使用toolbar的时候踩坑实在太多了,不好好总结一下,实在浪费.如果你想学习toolbar,你肯定会去去搜索androd toolbar,既然你能看到 ...
- 转:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法、shiro认证与shiro授权
原文地址:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法.shiro认证与shiro授权 以下是部分内容,具体见原文. shiro介绍 什么是shiro shiro是Apache ...
随机推荐
- 挖一挖C#中那些我们不常用的东西之系列(5)——FlagAttribute
说到FlagsAttribute,源自前几天看到了一小段代码,大概意思就是根据航班政策来返回哪些配送方式是否可用,根据这些是否可用 来隐藏或者开启界面的相关配送方式,如果大家订过机票可能知道配送方式有 ...
- Java并发之CountDownLatch 多功能同步工具类
package com.thread.test.thread; import java.util.Random; import java.util.concurrent.*; /** * CountD ...
- YUV420查表法高效、无失真的转换为RGB32格式
YUV格式有两大类:planar和packed.planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V,这里所讲述的就是这中存储格式的:packed的YUV ...
- python基础(一)
简单的‘Hello World!’ Python命令行 假设你已经安装好了Python, 那么在Linux命令行输入: $python 将直接进入python.然后在命令行提示符>>> ...
- Fatal error: Call-time pass-by-reference has been removed
下面的代码报错:Fatal error: Call-time pass-by-reference has been removed function myFunc($arg) { do somethi ...
- Buffer Overflow Study
-- These days I learned and studied buffer overflow. I like to write on the paper and it can keep sy ...
- Android 之窗口小部件详解--App Widget
Android 之窗口小部件详解--App Widget 版本号 说明 作者 日期 1.0 添加App Widge介绍和示例 Sky Wang 2013/06/27 1 App ...
- Vijos1680距离/openjudge2988计算字符串的距离[DP]
描述 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为”abcbcd”,则字符串“abcb_c_”,“_a_bcbcd_”和“abcb_c_”都是X的扩展 ...
- 06章 Struts2数据校验
一.三种实现方式 ① 用validate()方法实现数据校验 继承ActionSupport类,该类实现了Validateable接口,该接口中定义了一个validate()方法,在自定义的Actio ...
- 已Access为支持,书写一个C#写入的记录的方案
/// <summary> /// 读取Excel文档 /// </summary> /// <param name="Path">文件名称 ...