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") //元祖是一个不变的对象序列,使用,分隔的值进行创建。
  }

Scala学习1的更多相关文章

  1. Scala学习资源

    Scala学习资源: Scala官方网站:http://www.scala-lang.org/ Scala github:https://github.com/scala/scala Twitter ...

  2. 【Todo】【读书笔记】大数据Spark企业级实战版 & Scala学习

    下了这本<大数据Spark企业级实战版>, 另外还有一本<Spark大数据处理:技术.应用与性能优化(全)> 先看前一篇. 根据书里的前言里面,对于阅读顺序的建议.先看最后的S ...

  3. 机器学习(三)--- scala学习笔记

    Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编程和函数式编程的各种特性. Spark是UC Berkeley AMP lab所开源的类Had ...

  4. 【Scala】Scala学习资料

    Scala学习资料 java 树形 分类器_百度搜索 决策树分类器-Java实现 - CSDN博客 KNN分类器-Java实现 - CSDN博客 学习:java设计模式—分类 - 飞翔荷兰人 - 博客 ...

  5. Scala学习网址

    scala学习网址为:https://twitter.github.io/scala_school/zh_cn https://www.zhihu.com/question/26707124

  6. Spark之Scala学习

    1. Scala集合学习: http://blog.csdn.net/lyrebing/article/details/20362227 2. scala实现kmeans算法 http://www.t ...

  7. 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性

    基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...

  8. Scala学习笔记及与Java不同之处总结-从Java开发者角度

    Scala与Java具有很多相似之处,但又有很多不同.这里主要从一个Java开发者的角度,总结在使用Scala的过程中所面临的一些思维转变. 这里仅仅是总结了部分两种语言在开发过程中的不同,以后会陆续 ...

  9. Scala学习(一)

    最近在学习Scala,总结了一下比较基础的知识. 一.Scala简介 1.Scalable Language,是一门多范式的编程语言,是一种纯面向对象的语言,每个值都是对象. 2.特点:①Scalab ...

  10. scala 学习笔记(04) OOP(上)主从构造器/私有属性/伴生对象(单例静态类)/apply方法/嵌套类

    一.主从构造器 java中构造函数没有主.从之分,只有构造器重载,但在scala中,每个类都有一个主构造器,在定义class时,如果啥也没写,默认有一个xxx()的主构造器 class Person ...

随机推荐

  1. Apache配置HTTPS协议搭载SSl配置全过程

    1.首先要开启相应的扩展和辅助的dll(ssleay32.dll,libeay32.dll)到system32下 2.生成服务器证书 安装好在bin目录下有一个openssl.exe文件,用来生成证书 ...

  2. mysql 变量set

    在游标循环中,使用使用select into 变量var时,再判断var isnull 或者length(var)=0时,跳出循环. 解决方式: 使用set var=(select id from t ...

  3. Event Delivery: The Responder Chain(事件传递,响应链)

    当我们设计app的时候,我们很可能想动态的响应事件.例如,触摸一个拥有许多不同对象的屏幕,你要决定给哪个对象一个响应事件,怎么样对象接收到事件. 当一个用户产生事件发生时(如 点击),UIKit产生一 ...

  4. Creating a Swap Partition

    Creating a Swap Partition 1.   Use  fdisk /dev/vda  to open your disk in fdisk. (Use gdisk if you ar ...

  5. 阿里云ECS安全改造:改用AWS EC2私钥方式登录

    阿里云ECS有多烂,用过AWS的人都知道,ECS有什么问题呢,简单总结一下: 1)ubuntu居然root直接访问 2)端口全开 3)WEB控制台无法定义安全组及关闭端口 4)云盾黑洞 的确用起来很糟 ...

  6. el和jstl

    <%@page import="cn.bdqn.bean.News"%> <%@ page language="java" import=&q ...

  7. ajax调用webservice(二) 跨域。

    所需工具与项目结构同(一). service.asmx中代码如下: using System; using System.Collections.Generic; using System.Web; ...

  8. 还是把一个课程设计作为第一篇文章吧——学生学籍管理系统(C语言)

    #include <stdio.h> #include<stdlib.h> #include<string.h> typedef struct student { ...

  9. jQuery旋转插件

    jQuery旋转插件,支持Internet Explorer 6.0 + .Firefox 2.0.Safari 3.Opera 9.Google Chrome,高级浏览器下使用Transform,低 ...

  10. gui界面2048小游戏

    坑的地方 JLabel色块要调透明 方向键要用press方法 主界面 package game; import java.awt.BorderLayout; import java.awt.Event ...