数据类型对比
在申明变量之前,首先我们要了解清数据类型,因为变量的申明和数据类型的指定是离不开的。
java | scala |
---|
byte | Byte | short | Short | int | Int | long | Long | float | Float | double | Double | char | Char | boolean | Boolean | String | String |
从中可以看出,java和scala的数据类型可以说是完全对应,区别只是在于书写的时候,java是小写(String例外),scala首字母大写。 注:其实scala在指定数据类型时,也不一定非要是首字母大写,小写也可以,这应该是便于java程序员学习scala的便利,但官方还是建议使用首字母大写。
变量定义
java 在java中,对于每一个变量,都需要指定变量类型,所以在定义变量时,通常是: 变量类型 变量名 如
int test1;
float test2;
double test3;
以上就是java中定义一个变量的格式,但是此时还只是定义了一个变量,并未初始化,如果此时使用这个变量,比如
System.out.println(test1);
那将会报错,因为变量在使用前,变量必须初始化。只有初始化后才可以正常的使用变量。
test1 = 10;
System.out.println(test1);
或者在定义变量的时候就初始化变量
int test1 = 10;
System.out.println(test1);
总之变量在使用之前是需要初始化的。
示例程序:
public class DataType {
public static void main(String[] args) {
int test1 = 10;
System.out.println(test1);
}
}
scala
scala的变量定义格式如下: var 变量名:变量类型 = 初始值 scala和java不一样,scala的变量必须用var修饰符修饰,同时变量名在变量类型前面,中间用冒号隔开。 在java中变量定义和初始化是可以分开的,但是scala不同,在定义变量的同时,就需要对其进行初始化赋值,不能够分开。
var test1:Int = 12
示例程序:
object DataType1 {
def main(args: Array[String]): Unit = {
var test1:Int = 12
println(test1)
}
}
但是scala是聪明的,它比java要聪明,因为它可以自动推断数据类型,变量可以根据初始值的类型自动推断出变量的数据类型,故而并不需要指定数据类型,所以上面的Int是不必要的。从这里也可以猜测出为什么在scala中变量的定义和初始化是不能分开的,因为便于推断,这是scala设计的思路。
var test1 = 12
变量test1是可以通过初始值12来推断出来的,因为12是整型,所以test1自然被推断出整形。 示例程序:
object DataType1 {
def main(args: Array[String]): Unit = {
var test1= 12
println(test1)
}
}
以上也是scala推崇的,极简主义。
常量定义
java 前面讲了如何在java中定义一个变量,那么定义一个常量就很简单,只需要在定义变量的最前面加一个final关键字。
final int test1 = 10;
System.out.println(test1);
示例程序:
public class DataType {
public static void main(String[] args) {
final int test1 = 10;
System.out.println(test1);
}
}
scala scala中定义变量用var,定义常量则用val。
val test1 = 12
示例程序:
object DataType1 {
def main(args: Array[String]): Unit = {
val test1 = 12
println(test1)
}
}
总结
1.java中变量定义格式:变量类型 变量名(int test1) 2.java变量使用前必须初始化(test1 = 10或者int test1 = 10) 3.java常量定义只需要在前面加一个final(final int test1 = 10) 4.scala变量定义格式:var 变量名:=初始值(var test1 = 10) 5.scala常量定义格式:val 常量名:=初始值(val test1 = 10)
最后做一个额外的补充: java中每一句后面需要用分号结尾 scala中不需要用分号结尾
|