学习scala: Hello World

最近在学习scala编程语言,看了几章确实很好用,尤其是函数式编程,之前曾了解过haskell函数式编程语言,就深深地喜欢上了,不过在实际应用中,确实很少。scala不一样,兼容java字节码,可以理解为Java的一种语法糖,Java的类库可以无缝使用,工作中更多的用的时Java,这样学习了scala,就可以在工作中大显身手。

先来一段hello world程序

object HelloWorld{
    def main(args : Array[String]){
        println("HelloWorld")
    }
}

按照scala编程的说法,该对象称之为孤立对象,如果定义了object,又定义class,那么对象叫伴生对象,class称之为伴生类。

Scala的程序最终是由scalac编译成java字节码,由JVM加载执行,所以说学习scala的同时,对比着编译后的字节码,就很容易学习,当然我们不会去看字节码,而是通过反编译工具查看反编译后的代码,这里推荐jd-gui。下载地址:http://jd.benow.ca/

scalac HelloWorld.scala

编译后会生成两个scala文件

通过jd-gui反编译class后,查看文件

//-------------------------------HelloWorld$.class-------------------------
import scala.Predef.;

public final class HelloWorld$
{
  public static final  MODULE$;

  static
  {
    //创建对象,调用HelloWorld$()构造函数
    new ();
  }

  public void main(String[] args)
  {
    //MODULE$在构造函数中已经指向对象本身
    Predef..MODULE$.println("HelloWorld");
  }

  private HelloWorld$()
  {
    MODULE$ = this;
  }
}
//-------------------------------HelloWorld.class-------------------------
import scala.reflect.ScalaSignature;

public final class HelloWorld
{
  public static void main(String[] paramArrayOfString)
  {
    // 实际调用HelloWorld$下的println方法
    HelloWorld..MODULE$.main(paramArrayOfString);
  }
}

可以看到,最终执行还是java的类和对象组合。

时间: 2024-12-13 12:50:38

学习scala: Hello World的相关文章

学习Scala

团队已经决定逐步由java转向scala.现在的项目已经使用了几种编程语言.Java为主,ruby做代码生成器,python做安装脚本和命令行工具. 其实从ruby和python的使用经验中,已经或多或少地接触到了FP的概念.Scala旗帜鲜明地在Java上增加了FP的功能,观念的冲突和复杂的语法让其看起来并不容易入门. 随着工作经验的加深,我现在已经不太凭兴趣去追新,有点失了锐气,但同时也更开放:简单来说,我的看法是,能简洁稳定的实现目标,用什么都可以. 希望Scala带来的好处值得花这些功夫

学习Scala第一篇-从hello World开始

最近开始系统性的学习scala.其实之前使用过scala的,比如我在用Gatling这款性能测试工具的时候就接触到了scala了.Gatling本身就是用Scala写的,而且Gatling的性能测试配置文件本身就是一个scala类,可以随意使用scala甚至是Java提供的各种类库.当时觉得用Gatling特别舒服的原因就在于配置文件强大的表现力.而这种表现力就是由Scala语言提供的. 言归正传,学习Scala还是从最简单的Hello world开始.在Scala官网中显著的标题就是: Obj

第一天学习scala:scala字符串操作

package com.dyq import java.util.{Date,Locale}  //导入多个包 //import java.util.Locale; import java.text.DateFormat import java.text.DateFormat._  //导入所有包 object FrenchDate {   def main(args: Array[String]){     val now=new Date     val dffrance = getDate

学习Scala 进击大数据Spark生态圈

第1章 初识Scala 了解Scala是什么,学习Scala的意义何在, Scala安装,快速入门,Scala与Java开发对比 第2章 Scala入门 掌握Scala变量与常量,数据类型,lazy的使用,Scala开发IDEA选择以及使用IDEA整合Maven搭建Scala应用程序开发环境 第3章 Scala函数 掌握函数在Scala中的定义以及使用的注意实现,条件以及循环表达式在Scala中的使用 第4章 Scala对象 这是Scala中的重中之重,务必要掌握,涉及到的内容有:类.构造器.继

如何快速学习Scala

大数据学习过程中,会学习非常多的技术,但SCALA无疑是必不可少,那我们在大数据技术的学习过程中,如何快速的认识scala,并且学习它,感谢科多大数据公司的余老师提供的详细素材,本人整理成章,希望对你们有帮助. 众所周知,Spark支持4门语言,分别为R.Python.Java与Scala,但真正的底层实现语言则是Scala.在我以往的实践分享中,除了Python,我还会利用Scala去实践一遍,而且在面对大规模的数据建模中,我都会推荐去使用Hadoop.Spark去工程开发,充分利用集群的计算

02Scala学习-Scala函数定义、流程控制、异常处理入门实战

一 Scala 函数的定义 按照以下格式定义scala函数. def 函数名称(函数输入参数类型){ //函数的实现提 } 1) 第一个简单的例子 HelloWorld object Test2 { def main(args: Array[String]):Unit = { println("HelloWorld") } } a)可以看到输出语句的结尾没有以“;”结束,因为scala的设计者认为,多大一个字符对开发者来说是痛苦的. 他不太赞成在语句的结束写 “;” , 但你也可以写 

安装开发环境,准备学习Scala

昨天在Debian环境下安装了Scala,使用apt-get方式安装的,版本只到2.9.2,而网站上的版本却是2.11,不过用apt-get安装的比较方便,也就认了. 同时还安装了ANT(1.8.2),准备手动方式安装Playframework框架,为开发移动App应用的后端服务做准备. 整个安装比较顺利,Java环境是Debian自带的OpenJDK(1.6.0_33). 随后在网上搜集了一些Scala.Akka.Play!框架的学习资料,学习Actor模式的知识,这些内容网上的资料多数以英文

学习scala trait

// 类接口,但是可以实现方法 // 作用 多重继承 trait traitA{ val tnum: Int def log(msg: String): Unit ={ println("log : " + msg) } } trait traitB extends traitA{ def test: Unit ={ log("trait tb call ") } } trait traitC extends traitB{ override def test: U

Scala学习——Scala By Example

这一篇是来自官网的Scala By Example 即Tutorial后更详细地对Scala怎么用给了示例 1.Programing with Actors and Message 2.Expressions and Simple Functions 3.First-class Functions 4.Class and Objects 5.Case Classes and Pattern Matching 6.Generic  Types and Methods 7.Lists 8.For-C