Scala变量和数据类型
2024-10-20 20:36:57
一、注释及代码规范
- Scala的注释和Java中完全相同:单行注释:// 、多行注释:/* */ 以及文档注释:/** */;
- 使用tab操作,实现缩进,默认整体向右边移动,用shift+tab整体向左移 。或是ctrl + alt + L来进行格式化;
- 运算符两边习惯性各加一个空格;
- 一行最长不超过80个字符,超过的请使用换行展示,尽量保持格式优雅 ;
- Scala与Java的命名规范基本一致,Scala还允许纯操作符的命名形式(操作符(+ - * / # !等),如:var +*-/#! : String = ""。以及反引号包含39个关键字的形式,如:var `if` : String = ""。
二、变量和常量
Java中:
变量类型 变量名称 = 初始值 int a = 10
final常量类型 常量名称 = 初始值 final int b = 20
Scala中:
var 变量名 [: 变量类型] = 初始值 var i:Int = 10
val 常量名 [: 常量类型] = 初始值 val j:Int = 20
注:
1、声明变量类型可以省略,编译器会自动推导;
2、Scala中类型确定后就不能改变了,Scala是强类型语言;
3、变量声明时必须要有初始值;
4、var修饰的对象引用可以改变,val则不可以改变,但对象的状态可以改变(比如;自定义对象、数组、集合等)
object VarTest {
def main(args: Array[String]): Unit = {
//var 修饰的对象属性可变,p1对象本身也可变
var p1 = new Person();
p1.name ="zhangsan"
p1 = null //val 修饰的对象不可变,但属性可变
val p2 = new Person()
p2.name = "lisi"
//p2=null 程序错误
}
}
class Person{
var name:String = "";
}
三、字符串操作
1、字符串拼接与java相同,使用“+”连接;
2、println的输出中,通过“%”进行传值;
3、在字符串模板中,通过${}获取变量值。
4、在多行字符串中,应用Scala中的stripMargin方法,使用三个双引号包围以.stripMargin结尾,中间换行使用“|”。
示例代码:
object CharTypeTest {
def main(args: Array[String]): Unit = {
var name : String = "zhangsan"
var age : Int = 18 //字符串拼接
println("name=" + name +","+"age" + age)
println("name=%s,age=%d",name,age) //多行字符串输出
val s =
"""
|I
|love
|China
|""".stripMargin
println(s)
//通过$传值
val s1 =
s"""
|select *
|from person
|where name="$name" and age=${age+2}
|""".stripMargin
println(s1)
}
}
四、键盘输入
java中:
Scanner input = new Scanner(System.in);
System.out.println("输入姓名:");
String name = input.next();
System.out.println("输入年龄:");
int age = input.nextInt();
Scala中:
object InputTest {
def main(args: Array[String]): Unit = {
println("输入姓名:")
var name:String = StdIn.readLine()
println("输入年龄:")
var age:Int = StdIn.readInt()
}
}
五、数据类型
Java中:
基本类型:byte、short、int、long、float、double、char、boolean;
引用类型:对象类型。
Scala中:
- Scala中一切数据都是对象,都是Any的子类;
- 数据类型分为两大类,数值类型(AnyVal)、引用类型(AnyRef);
- Scala依旧遵守低精度类型向高精度类型自动转换(隐式);
- Scala中的StringOps是对Java中String的增强;
- Scala中的Unit无返回类型等价于Java中的void,但void只是关键字,而Unit依旧是数据类型且包含一个对象();
- Null也是一个类型,只包含一个对象null;
- Noting是一切数据类型的子类,主要用于一个函数没有明确返回值时使用。
- Scala中的整数类型有:Byte、Short、Int、Long;
- 浮点类型:Float、Double;
- 字符型:Char;(单个字符使用单引号'');
- 布尔型:Boolean;
六、类型转换
6.1 隐式转换
当Scala程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数值类型,这个就是自动类型转换(隐式转换)。数据类型按精度(容量)大小排序为:
6.2 强制转换
Java:
double a = 2.2;
int b = (int) a;
Scala:
def main(args: Array[String]): Unit = {
//注意:toInt只针对最近的操作数有效,所以往往要配合小括号使用
var a:Int = 2.7.toInt
}
String类型转基本类型:s1.toInt、s1.toFloat、s1.toDouble、s1.toByte、s1.toLong、s1.toShort。
最新文章
- HTML中的SVG
- MyBatis学习总结(一)——MyBatis快速入门(转载)
- ASP.NET MVC 提示there was error getting the type的解决方法
- 初探JavaScript(一)——也谈元素节点、属性节点、文本节点
- Tomcat访问日志详细配置
- 【freemaker】之获取xml的值
- MySQL一些常用的时间函数
- Python 第六篇(中):面向对象编程中级篇
- 设计模式Adapter模式的五分钟
- C# group 子句
- <;转>;SQL Server CROSS APPLY and OUTER APPLY
- PHP正则表达式修饰符的种类及介绍
- html中hr的各种样式使用
- 20165321实验一 Java开发环境的熟悉
- HFTP Guide
- ubuntu下交叉编译mono
- thymeleaf 标签使用方法
- 【DUBBO】dobbo的application的配置项
- Java常用开发组件介绍
- FIS的安装