Scala是一种静态语言、面向对象的函数式编程语言。它的程序代码以.scala结尾,编译时会编译成.class字节码在jvm上运行。

  类和方法默认是public的,不必显式声明public。

  return是可选的,方法调用会默认返回最后一行表达式;

  不需要再每行代码后面写";",如果是多行代码在一行则需要写";"

  scala建议优先使用val常量,而不是var。这样能提升不变性和函数式风格。

  scala中对象引用和调用方法之间的“.”是可以不写的,例如java中int a = 1*1;等同于scala中val a = 1.*(1)/val a = 1 * 1

  从技术层面上看scala是没有运算符的,+、-、*、/、%、!=、>、>=、<、<=运算符都是数值对象提供的方法。

程序执行入口main函数

object Test1 {

  def main(args: Array[String]) {

    println("hello scala")

  }

}

忽略main函数的可执行类

object Test1 extends App {

  println("hello scala")

}

常量与变量的声明方式(变量声明后必须初始化)

val a=1

var b=1

函数的声明

循环与增强循环
 
  def main(args: Array[String]) {
    
    //输出从1到3
      for(i<-1 to 3){    // 实际上是调用1.to(3)方法,scala把所有都视为对象(数字1是RichInt类的方法,这个类型是由Int隐式转换来的。to()方法返回的是一个Range类的实例)
          print(i+",")     // 不换行输出。注意i是一个val常量,不是var变量。每次循环都创建一个叫做i的val常量,不可以在循环中改变常量i的值。
      }
    println()          // 换行输出
    
    //输出从1到2,until方法不包含最后一个值
    for(i<-1 until 3){ // 实际上是调用1.until(3)方法,scala把所有都视为对象(数字1是RichInt类的方法,这个类型是由Int隐式转换来的。until()方法返回的是一个Range类的实例)
      print(i+",")     // 不换行输出。注意i是一个val常量,不是var变量。每次循环都创建一个叫做i的val常量,不可以在循环中改变常量i的值。
    }
    println()          // 换行输出
    
    //输出从1到3
    (1 to 3).foreach(i=>print(i+",")) // 使用Range类的foreach()方法,foreach()方法接收的的参数是一个函数值,所以需要在括号中提供一段代码体
   
    
  }

元组

def main(args: Array[String]) {
    //元祖和多重赋值-1
    val (name, age, mail) = getPersonInfo();
    println("姓名:"+name+"\n年龄"+age+"\n邮箱"+mail)
    //元祖和多重赋值-2
    val info = getPersonInfo()
    println("姓名:"+info._1+"\n年龄"+info._2+"\n邮箱"+info._3)
    
  }
 
  //返回多个值的函数(姓名、年龄、邮箱)。java中通过对象、String数组和list,scala中使用元祖和多重赋值表现
  def getPersonInfo()={
    //创建包含3个对象的元祖
    ("zhangsan", "123", "zhangsan@126.com") //元祖是一个不变的对象序列,使用,分隔的值进行创建。
  }

最新文章

  1. 如何远程断点调试本地localhost项目
  2. 深入理解 Javascript 面向对象编程
  3. DS实验题 Inversion
  4. MTK6589下传感器框架结构和代码分析以及传感器的参数指标
  5. some words we should know
  6. 【Stage3D学习笔记续】山寨Starling(六):动画实现和测试
  7. “面包屑导航”——SiteMapPath控件的使用(ASP.NET)(转)
  8. Centos7网络配置+图形界面设置
  9. Maven之自定义archetype生成项目骨架
  10. 设计模式之责任链模式——Java语言描述
  11. python之异常处理和re模块补充
  12. JavaSE 集合类HashSet保证自定义对象唯一性
  13. Centos + docker,Ubuntu + docker介绍安装及详细使用
  14. 我的Java之旅 第二课 Eclipse使用
  15. JMeter&#160;逻辑控制之While循环控制器(While&#160;Controller)
  16. byte以及UTF-8的转码规则
  17. Method not found: &#39;System.Data.Entity.ModelConfiguration.Configuration.XXX
  18. 我用Xamarin开发android应用,应用在真机上一打开就退出了
  19. POJ1742Coins
  20. Java之集合(二十七)其它集合

热门文章

  1. Win7系统安装MySQL5.5.21图解教程
  2. Chapter 7. Dependency Management Basics 依赖管理基础
  3. 桶排序与基数排序代码(JAVA)
  4. NYOJ 116士兵杀敌(二) 树状数组
  5. 《fullPage.js》创建全屏滚动的网站
  6. 查询数据库返回List&lt;Entity&gt;问题
  7. storm-kafka教程
  8. Mysql中的DQL查询语句
  9. MVC中修改报错
  10. C++服务器linux开发环境管理