1. 相对于java,scala的值修饰用val,变量修饰用var.值相当于java的final 修饰了。

package demo

object ScalaBase extends App {
println(1)
println(1 + 1)
println("Hello!")
println("Hello," + " World!")
/**
* val 是值得修饰符,相当于java的final int x;
* scala 可以不指名类型
*/
val x = 1 + 1
println(x)
///x =2 //不编译的
//指明类型可以如下写
val x1 : Int = 1 + 1
println(x1) /**
* var 是变量修饰符,相当于java int x2,不加final修饰
*/
var x2 = 1 + 1
x2 = 3
println(x2 * x2) /**
* scala 是个万能表达式语言,比如可以通过{}组合表达式
*/
println({
val x = 1 + 1
x + 1
})
println({
val x = "test " + "scala "
x + "demo!"
}) /**
* scala相对于java 方法定义,分为函数和方法
* 函数是带参数的表达式,也就是相对于java8的匿名方法()->{}
* (int x, int y) ->{}
* 左边是参数,右边是表达式
*/
(x: Int) => x + 1
val addOne = (x: Int) => x + 1
println(addOne(1)) val add = (x: Int,y: Int) => x + y
println(add(1,2))
val getTheAnswer = () => 42
println(getTheAnswer()) /**
* def 是方法关键字
* def 后面是方法名
* 与java不同的是,scala的返回类型是写在: Int
* =后面就是方法体
* 类似于java的 public int addMethod(int x, int y) {return x + y}
* 注意:scala虽然有return保留字,一般都不用,scala用最后一行进行返回
* @param x
* @param y
* @return
*/
def addMethod (x: Int, y: Int): Int = x + y
println(addMethod(1, 2))
/**
* 方法可以有多个参数
* 相对于java,scala有多个参数类别,不用定义在同一()里面,比较明显表明表达式结构
*/
def addThenMultiply(x: Int, y: Int)(multiplier: Int): Int = {
(x + y) * multiplier
} /**
* 当然scala也可以没有参数
*/
def name: String = System.getProperty("name")
println("Hello, " + name + "!")
/**
* scala 可以用{}使用多行表达式
*/
def getSquareString(input: Double): String = {
val square = input * input
square.toString
} println(getSquareString(2.22)) /**
* 类跟Java一样都是用class 关键字
* 不同的是scala的参数可以定义在()里面
* 类似于Java的构造函数
* 相对于java用void表示没有返回值,scala用 Unit
*/
class Greeter(prefix: String, suffix: String) {
def greet(name: String): Unit = println(prefix + name + suffix)
} /**
* scala 同样使用new 作为创建实例的关键字
*/
val greeter = new Greeter("Hello,","!")
greeter.greet("Scala developer") /**
* case class 是一个非常特殊的类,它可以用于模式匹配
* case class 可以不用new关键字
* 它是一个public类
* 它自动生成hashCode 、equals
*/
case class Point(x: Int,y: Int)
val point = Point(1, 2)
val anotherPoint = Point(1, 2)
val yetAnotherPoint = Point(2, 2)
if (point == anotherPoint) {
println(point + " and " + anotherPoint + " are the same.")
} else {
println(point + " and " + anotherPoint + " are different.")
}
// Point(1,2) and Point(1,2) are the same. if (point == yetAnotherPoint) {
println(point + " and " + yetAnotherPoint + " are the same.")
} else {
println(point + " and " + yetAnotherPoint + " are different.")
} /**
* Objects 是一个单例,不能用new
* 就像Java定义单例模式一样,它只有一个
*/
object IdFactory {
private var counter = 0
def create(): Int = {
counter += 1
counter
}
} val newId: Int = IdFactory.create()
println(newId)
val newerId: Int = IdFactory.create()
println(newerId) /**
* Traits 类似于Java的Interface,只不过Traits可以部分实现
* Java 只能通过default 进行部分实现,实现包内访问
* trait 只用extends修饰,到不用实现
*/
trait GreeterTrait {
def greet(name: String): Unit
def greetDefault(name: String): Unit =
println("Hello, " + name + "!")
} class DefaultGreeterTrait extends GreeterTrait {
override def greet(name: String): Unit = {
println()
}
} class CustomizableGreeter(prefix: String, postfix: String) extends GreeterTrait {
override def greet(name: String): Unit = {
println(prefix + name + postfix)
}
} val greeterTrait = new DefaultGreeterTrait()
greeterTrait.greet("Scala developer")
val customizableGreeter = new CustomizableGreeter("How are you","?")
customizableGreeter.greet("Scala developer") /**
* scala 是运行与jvm,因此也需要一个主要方法main,main也是一个字符串数组
*/
} object ScalaMain {
def main(args: Array[String]): Unit =
println("Hello, Scala developer!")
}

Scala 学习记录(一)的更多相关文章

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

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

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

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

  3. Quartz 学习记录1

    原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...

  4. Java 静态内部类与非静态内部类 学习记录.

    目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...

  5. Apache Shiro 学习记录4

    今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...

  6. UWP学习记录12-应用到应用的通信

    UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...

  7. UWP学习记录11-设计和UI

    UWP学习记录11-设计和UI 1.输入和设备 通用 Windows 平台 (UWP) 中的用户交互组合了输入和输出源(例如鼠标.键盘.笔.触摸.触摸板.语音.Cortana.控制器.手势.注视等)以 ...

  8. UWP学习记录10-设计和UI之控件和模式7

    UWP学习记录10-设计和UI之控件和模式7 1.导航控件 Hub,中心控件,利用它你可以将应用内容整理到不同但又相关的区域或类别中. 中心的各个区域可按首选顺序遍历,并且可用作更具体体验的起始点. ...

  9. UWP学习记录9-设计和UI之控件和模式6

    UWP学习记录9-设计和UI之控件和模式6 1.图形和墨迹 InkCanvas是接收和显示墨迹笔划的控件,是新增的比较复杂的控件,这里先不深入. 而形状(Shape)则是可以显示的各种保留模式图形对象 ...

随机推荐

  1. Hihocoder #1098 : 最小生成树二·Kruskal算法 ( *【模板】 )

    #1098 : 最小生成树二·Kruscal算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 随着小Hi拥有城市数目的增加,在之间所使用的Prim算法已经无法继续使用 ...

  2. Axios 请求配置参数详解

    axios API 可以通过向 axios 传递相关配置来创建请求 axios(config)   // 发送 POST 请求   axios({   method: 'post',   url: ' ...

  3. ss连接不上

    突然ss就连接不上了,而vps的ip能ping通,ssh也能登录. 折腾了半天都没解决. 后来解决了,关键点有两个 (1)更改ss的服务端口,原本是9000,随便改为其他的: (2)在switch里设 ...

  4. bzoj 1894 游戏

    题目大意: $n$个装备,每个装备有两个值,可以攻击该值对应的怪兽.每个装备最多用一次 每个怪兽被打一次之后就会死,每个怪兽可以被打当且仅当前面的都死了,求最多打多少个 思路: 很明显的二分图匹配,如 ...

  5. 深入理解js里面的this

    闲聊两句(可以忽略): 毕业有半年了,时间还过得真快,不过还好,感觉自己相对于刚毕业那会确实成长了很多:好久没有打游戏了(自己决心要戒掉的),消磨时光的时候就看看电影或者追追电视剧,再无聊就洗洗衣服. ...

  6. struts2添加需要的jar包

    转自:https://blog.csdn.net/fance611261/article/details/6790737 以前总是在myeclipse中添加jar包的,由于现在转向了eclipse,原 ...

  7. JAVA基础-面向对象07

    一.代码块 1. 含义: 就是使用大括号括起来的一段代码 格式 { 代码: } 2.静态代码块 格式 static{ 代码: } 书写位置: 直接书写在类中成员位置: 怎么执行呢? 在类加载的最后一步 ...

  8. poj3187【dfs】

    挑战-搜索 题意: 给一个n和sum,代表n层的杨辉三角,然后给一个和,问最低层的数字情况. 思路: ①:预处理一个底层对于和的系数数组, sum = 0Cn-1*num[1] + 1Cn-1*num ...

  9. CF1045G AI robots(动态开点线段树)

    题意 火星上有$N$个机器人排成一行,第$i$个机器人的位置为$x_{i}$,视野为$r_{i}$,智商为$q_{i}$.我们认为第$i$个机器人可以看到的位置是$[x_{i}-r_{i},x_{i} ...

  10. Phoenix在2345公司的实践(转)

    本文介绍Phoenix在2345公司的实践,主要是实时查询平台的背景.难点.Phoenix解决的问题.Phoenix-Sql的优化以及Phoenix与实时数仓的融合思路.具体内容如下: 实时数据查询时 ...