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入门详解的更多相关文章

  1. Scala 入门详解

    Scala 入门详解 基本语法 Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的 Scala 程序是对象的集合,通过调用彼此的方法来实现消息传递.类,对象,方法,实例变 ...

  2. Linq之旅:Linq入门详解(Linq to Objects)

    示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...

  3. SQL注入攻防入门详解

    =============安全性篇目录============== 本文转载 毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱,事实上是没机 ...

  4. SQL注入攻防入门详解(2)

    SQL注入攻防入门详解 =============安全性篇目录============== 毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱 ...

  5. Quartz 入门详解

    Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个, ...

  6. Redis快速入门详解

    Redis入门详解 Redis简介 Redis安装 Redis配置 Redis数据类型 Redis功能 持久化 主从复制 事务支持 发布订阅 管道 虚拟内存 Redis性能 Redis部署 Redis ...

  7. [转]SQL注入攻防入门详解

    原文地址:http://www.cnblogs.com/heyuquan/archive/2012/10/31/2748577.html =============安全性篇目录============ ...

  8. [置顶] xamarin android toolbar(踩坑完全入门详解)

    网上关于toolbar的教程有很多,很多新手,在使用toolbar的时候踩坑实在太多了,不好好总结一下,实在浪费.如果你想学习toolbar,你肯定会去去搜索androd toolbar,既然你能看到 ...

  9. 转:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法、shiro认证与shiro授权

    原文地址:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法.shiro认证与shiro授权 以下是部分内容,具体见原文. shiro介绍 什么是shiro shiro是Apache ...

随机推荐

  1. iCalendar格式中关于RRule的解析和生成

    最近在做一个关于Calendar的项目,相当于Google Calendar或者Outlook中的Calendar.在Calendar的发布和共享中,使用到了iCalendar,是一种日历数据交换的标 ...

  2. iOS tabbar 自定义小红点 消息显示,定制边框、颜色、高宽

    一般我们需要显示消息数,会利用到系统提供的api UIApplication.sharedApplication().applicationIconBadgeNumber = 10 但如果我们不想显示 ...

  3. 非常不错的点餐系统应用ios源码完整版

    该源码是一款非常不错的点餐系统应用,应用源码齐全,运行起来非常不错,基本实现了点餐的一些常用的功能,而且界面设计地也很不错,是一个不错的ios应用学习的例子,喜欢的朋友可以下载学习看看,更多ios源码 ...

  4. [转]backbone.js 示例 todos

    本文转自:http://www.css88.com/doc/backbone/examples/todos/index.html <!DOCTYPE html> <html lang ...

  5. C#学习笔记-icon托盘图标的简单知识

    在做整个类似QQ的毕业设计中,有一个小图标把我给难了一阵子,就是托盘小图标

  6. JAVA中关于并发的一些理解

    一,JAVA线程是如何实现的? 同步,涉及到多线程操作,那在JAVA中线程是如何实现的呢? 操作系统中讲到,线程的实现(线程模型)主要有三种方式: ①使用内核线程实现 ②使用用户线程实现 ③使用用户线 ...

  7. 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Preferred)

    A 思路: 贪心,每次要么选两个最大的,要么选三个,因为一个数(除了1)都可以拆成2和3相加,直到所有的数都相同就停止,这时就可以得到答案了; C: 二分+bfs,二分答案,然后bfs找出距离小于等于 ...

  8. 网页下载Google Play 的App

    前言 当你想在google play上下载某个应用,而无奈手机的系统并没有安装google servicess,此刻是否有些捉急? 本文分享的是一个网站,它可以无需手机而直接通过网页下载Google ...

  9. 在Ubuntu14.04下安装vsftp服务器

    猜想在Ubuntu下搭建ftp服务器来实现windows和ubuntu下文件互传是一件很简单的事儿,但是在网上找了好几篇文章都不行,故自己在这里总结一下方法. 首先安装vsftp服务器 sudo ap ...

  10. 向tiny6410中移植中移植linux-4.5.1内核(最新)

    下载linux-4.5.1.tar.gz 解压在任意目录下.我解压在/home/tiny6410/ # tar xvzf linux-4.5.1.tar.gz # cd linux-4.5.1/ 修改 ...