Scala变量和数据类型
一、注释及代码规范
- 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。
Scala变量和数据类型的更多相关文章
- Scala 基础(五):Scala变量 (二) 数据类型
1 scala数据类型介绍 Scala 与 Java有着相同的数据类型,在Scala中数据类型都是对象,也就是说scala没有java中的原生类型 Scala数据类型分为两大类 AnyVal(值类型) ...
- Scala基础篇-01变量,数据类型
一.Scala变量 共有3种变量修饰符: val: 可变 var: 不可变 lazy val: 第一次应用时才计算 二.Scala的数据类型 1)类型不匹配:高精度数值赋给低精度数据类型. 2)Uni ...
- Scala变量(三)
变量是一种使用方便的占位符,用于引用计算机内存地址,变量创建后会占用一定的内存空间. 基于变量的数据类型,操作系统会进行内存分配并且决定什么将被储存在保留内存中.因此,通过给变量分配不同的数据类型,你 ...
- Scala变量| 流程控制
Scala 是 Scalable Language 的简写,是一门多范式(编程的方式)的编程语言 Scala是一门以java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程的最佳特性结合在一起的 ...
- 2. Scala变量
2.1 变量是程序的基本组成单位 举一个简单的例子 object boke_demo01 { def main(args: Array[String]): Unit = { var a: Int = ...
- Spark记录-Scala变量/访问修饰符/运算符
变量是保存存储值的内存位置的名称.这意味着当创建变量时,可以在内存中保留一些空间. 根据变量的数据类型,编译器分配内存并决定可以存储在预留内存中的内容.因此,通过为变量分配不同的数据类型,可以在这些变 ...
- Scala系统学习(四):Scala变量
变量是保存存储值的内存位置的名称.这意味着当创建变量时,可以在内存中保留一些空间. 根据变量的数据类型,编译器分配内存并决定可以存储在预留内存中的内容.因此,通过为变量分配不同的数据类型,可以在这些变 ...
- Scala 基础(四):Scala变量 (一) 基础
1.概念 变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门 牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量(值). 2 变量使用的基本步骤 1) 声明/定义变量 ( ...
- [C语言入门笔记]变量与数据类型
变量与数据类型 什么是变量? 变量是一个变化的量 是内存中的一个空间 变量的定义方法是什么? 数据类型 变量名 = 值; 数据类型有哪些? 整型int 浮点型float double 字符型char ...
随机推荐
- 分享一款开源堡垒机-jumpserver
本文主文章地址为:https://blog.csdn.net/KH_FC JumpServer是由FIT2CLOUD(飞致远)公司旗下一款开源的堡垒机,这款也是全球首款开源的堡垒机,使用 GNU GP ...
- python float运算时存在浮点误差,结果小数点带.00002及解决方法
背景: 返回一个json字符串,result结果里面嵌套多个内容一样,只有具体数据不一样的列表[字典],现在需要从里面取指定的key值,来计算最后的总额. 原来使用的类型,float 通过取到json ...
- git 忽略本地文件的修改
项目开发过程中,会遇到本地配置文件每个开发人员不同的情况,但如果遇到类似数据库配置这种最终需要加入 git 版本控制的配置,则会陷入两难境地.要么不跟踪,要么有人提交后其他人同步下来必须手动修改,非常 ...
- spring cloud --- Ribbon 客户端负载均衡 + RestTemplate + Hystrix 熔断器 [服务保护] ---心得
spring boot 1.5.9.RELEASE spring cloud Dalston.SR1 1.前言 当超大并发量并发访问一个服务接口时,服务器会崩溃 ,不仅导致这个接口无法 ...
- mysql 连接表 内连接 inner
字段去重 关键字distinct 去除重复记录 可配合分组函数使用 select distinct job,deptno from emp; 未使用 distinct之前 使用后: 笛卡尔积现象:当 ...
- java如何对接企业微信
前言 最近实现社群对接企业微信,对接的过程遇到一些点,在此记录. 企业微信介绍 企业微信具有和微信一样的体验,用于企业内部成员和外部客户的管理,可以由此构建出社群生态. 企业微信提供了丰富的api进行 ...
- 纯手画WinForm的Alert提示弹出框
纯手画WinForm的Alert弹框 一.窗体设置 设置以下属性: 属性名 属性值 说明 AutoScaleMode None 确定屏幕分辨率或字体更改时窗体如何缩放 BackColor 103, 1 ...
- ubuntu18.04下取消中键复制粘贴功能
Q: armlinux开发,主机采用ubuntu18.04操作系统,使用过程中关于鼠标中键有如下操作现象, 操作: 1.选中文本, 2.将鼠标光标定位到要插入的位置 3.按下鼠标中键 现象:将自动复制 ...
- 《Java核心技术·卷Ⅰ:基础知识(原版10》学习笔记 第5章 继承
<Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1 ...
- 【C++】STL容器
STL容器 标签:c++ 目录 STL容器 容器的成员函数 所有容器都有的 顺序容器和关联容器 顺序容器(vector/string/list/deque) 容器 vector 构造函数 操作 set ...