[原创]Scala学习:关于变量(val,var,类型推断)

1.常量定义:  val

val 类似于java中的final变量。一旦初始化了,val就不能再被赋值
val megs = "hello world"

2.变量的定义: var

var 如同java里面的非final变量,可以在它的声明周期内多次被赋值
var spark:String = " i am big data "
var spark: String = " i am"

解释器中支持table键 补充和提示

3.变量类型推断:

当分配一个初始值给一个变量,Scala编译器可以计算出根据分配给它的值的变量类型。这就是所谓的变量类型推断。因此,可以写这些变量的声明如下这样:

var myVar = 10;
val myVal = "Hello, Scala!";

在这里,默认情况下,myVar是int类型,将设为myVal为String类型变量。

时间: 2024-11-15 21:22:58

[原创]Scala学习:关于变量(val,var,类型推断)的相关文章

scala学习手记17 - 容器和类型推断

关于scala的类型推断前面已经提到过多次.再来看一下下面这个例子: import java.util._ var list1: List[Int] = new ArrayList[Int] var list2 = new ArrayList[Int] list2 add 1 list2 add 2 var total = 0 for (index <- 0 until list2.size()) { total += list2.get(index) } println("Total i

scala学习手记20 - 方法返回类型推断

除了推演变量的类型,scala也会推演方法的返回类型.不过这里有一处需要注意:方法返回类型的推演依赖于方法的定义方式.如果用等号"="定义方法,scala就会推演方法返回类型:否则,它就认为方法的返回为void.看一个例子: def printMethodInfo(methodName: String) { println("The return type of " + methodName + " is " + getClass().getDe

[原创]Scala学习:数组的基本操作,数组进阶操作,多维数组

1.Scala中提供了一种数据结构-数组,其中存储相同类型的元素的固定大小的连续集合.数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合 2 声明数组变量: 要使用的程序的数组,必须声明一个变量来引用数组,必须指定数组变量可以引用的类型.下面是语法声明数组变量: var z:Array[String] = new Array[String](3) or var z = new Array[String](3) or var z = Array("Zara", &

scala学习手记4 - Java基本类型对应的scala类

在Java中变量类型分为两大类:基本类型和引用类型.虽然在JDK1.5以后引入了自动装箱和自动拆箱机制,大大减少了我们在直接类型和引用类型之间的纠结,但仍有一些我们不得不考虑的问题.比如我在工作遇到的基本类型和其包装类型的默认值的问题,比如泛型只能使用引用类型,比如默认情况下直接类型的值不能作为对象来操作(1.toString()就不能通过编译)等等. 在scala中一切都是对象. 在scala中1.toString()这样的写法是完全可以接受的.java中的每个基本类型在scala中都有对应的

[原创]Scala学习:流程控制,异常处理

1.流程控制 1)do..while 1 def doWhile(){ 2 var line="" 3 do{ 4 line = readLine() 5 println("readlineConetent" + line ) 6 }while(line != " ") 7 } 2)for 方式一: 1 for (arg <-args) 2 println(arg) 方式二: 1 for (i <- 1 to 10 if i % 2

[原创]Scala学习:for,function,lazy

1.for循环是一个循环控制结构,可以有效地编写需要执行的特定次数的循环.Scalar的循环说明如下的各种形式: 1)Scala中for循环最简单的语法是: for( var x <- Range ){ statement(s); } 在这里,范围可能是一个数字范围,并且表示为i到j或有时像i到j左箭头 < - 操作者被称为生成器,这样命名是因为它是从一个范围产生单个数值. 2)for循环中,循环将遍历给定范围内的所有可能的计算,可以使用分号 (;) 分隔多个范围.下面是使用两个范围的例子,也

scala学习02-类与对象,类型与操作

Scala类与对象,类型与操作 类的声明 class MyClass{ private var num = 0 // 如果想要不对外开放,使用private,如果不写,默认就是public //方法 //花括号前没有=号,这种情况下,返回值类型一定是Unit,也就是空,所以如果想有返回值,一定要加=号 def add(b:Byte){ num += b } //如果计算表达式只有一行,可以省略掉花括号 def add1(b:Byte):Unit = num += b //有返回值的正常方法: d

[原创]Scala学习:Tuple,Array,Map ,文件操作

1.Tuple:元祖.是一个有用的容器对象. 1)特点:  ① 元祖是不可变的,即,当声明完了一个元祖,那么它的长度就不可以在改变:  ② 元祖可以包含不同类型的数据,对象:   ③ 索引是从 '_1' 开始,读取元祖中的内容 ④标识:' () ' 2)代码 1 //元祖 2 def doTuple() { 3 //'()' 定义元祖 4 val pair = (100, "scala", "spark") //元祖的类型val pair: (Int, String

[原创]Scala学习:函数的定义

方式一:标准的定义函数 def 函数名(参数1: 参数类型,参数2: 参数类型): 返回值类型 = { 函数体 } 例子 def max(x: Int,y: Int): Int ={ if(x > y) x else y } 注意:参数列表中必须标注好参数类型,因为scala编译器无法推断参数的类型 方式二:在一般的情况下可以省略,函数返回值的类型 def 函数名(参数1: 参数类型,参数2: 参数类型) = { 函数体 } def max(x: Int,y: Int)={ if(x > y)