scala基础学习--变量,标识符,类型和类型转换

一、基本学习

1、输出语句和分号

1.换行输出

println(打印数据)

2.不换行输出

print(打印数据)

3.分号使用
在多个打印在一行中间的分号必须写,末尾可以不写

2、Scala中常量

常量是指:在程序发生变化过程中,不会发生变化的值
1.字面值常量
整型常量、浮点型常量、字符常量、字符串常量、布尔值常量、空常量

object scala {def main(args: Array[String]): Unit = {println(1,2,10,20,100)  //整型常量println(10.5,5.1,21.4)  //浮点型常量println("abc","ufo")    //字符串常量println('a','b')        //字符常量println(false,true)     //布尔值println(null)           //空常量}
}

3.Scala中变量

变量定义: 在程序过程中,其值发生变化的量
1.在Scala中使用val和var来定义变量,语法格式如下

val/var 变量名:变量类型 = 初始值

-val定义的不可重新赋值的变量,也就是自定义常量
-var定义的是可以赋值的变量

案例:

val name:String = "chen"; //不可再赋值,否则会报错
var name1:String = 99; //可以再赋值,值会变成最后赋值的结果

2.使用类型推断来定义变量
可以通过不写变量类型,来定义变量,这样比java更加整洁

val name= "chen"; //不可再赋值,否则会报错
var name1= 99; //可以再赋值,值会变成最后赋值的结果

Scala可以根据变量值自身推断出类型

4.Scala字符串

1.使用双引号,定义字符串变量
格式:

val/var 变量名 = "字符串值"

案例:

object scala {def main(args: Array[String]): Unit = {val name= "chenxudong";println(name,name.length) //查看字符串长度}
}
结果: (chenxudong,10)

2.使用插值表达式
解释:使用插值表达式来定义字符串,避免过多字符串拼接
语法:

val/var 变量名 = s"${变量/表达式}字符串"

案例:

object scala {def main(args: Array[String]): Unit = {val name= "chenxudong";val age = 28;val sex = "male"val result = s"name=${name}, asg=${age},sex${sex}" //使用插值表达式println(result)}
}
结果:name=chenxudong, asg=28,sexmale

3.使用三引号来定义字符串
解释:如果有大段的文本要保存,就可以使用三引号来定义字符串,它可以保留字符串的格式,空格换行等。
格式:

val/var 变量名 = """字符串值1
字符串2"""

案例:

object scala {def main(args: Array[String]): Unit = {val name="""select*from testwhere a = 1""";println(name)}
}
select*
from test
where a = 1

4.惰性赋值
解释:在企业开发过程中,有时候会编写复杂的sql语句,这些语句可能成百上千行,这些sql语句直接加载到JVM中,会产生大量开销,这个时候可以通过惰性赋值来提高效率。
语法:

lazy val/var 变量名 = 表达式

案例:

object scala {def main(args: Array[String]): Unit = {lazy val sql="""select... //省略一千行from testwhere a = 1""";println(sql)}
}

解释:这里加 lazy 后,它的sql 一千多行代码不会加载到内存中,只有在被调用或者打印这个sql 时才会加载到内存,不加的话就是正常的三引号定义字符串,在定义时会先加载到内存中,所以如果文本过长,可以使用惰性赋值提高效率。

3、Scala 标识符

解释:就是给变量,类,方法等取一个别名,但是别名要有规范和意义
命名规则:
-必须大小英文字母,数字,下划线_,美元符$,这四个部分任意组合
-数字不能开头
-不能和Scala中关键字重名
-最好见名知意

命名规范
-变量和方法的命名,从第二个单词开始每个首字母大写其他小写,名小驼峰命名法
-类和特质命名,每个单词首字母大写,其他小写,名为大驼峰命名法
-包的命名一般都是小写,多个包用点隔开

5、数据类型

Byte    //8位带符号整数
Short   //16位带符号整数
Int     //32位带符号整数
Long    //64位带符号整数
Char    //16位无符号Unicode字符
String  //Char类型序列(字符串)
Float   //32位单精度浮点数
Double  //64位双精度浮点行
Boolean //true或者false

6.类型转换

在进行运算或者赋值时,范围小的数据类型会自动转换数值大的自动类型值,例如1+1.1,int类型加duble类型,最后等于2.1是duble类型。
Scala中类型转换分为 值类型的类型转换引用类型的类型转换
值类型的转换:自动类型转换 和 强制类型转换

1.自动类型转换
解释:范围小的数据类型值会自动转换为范围大的数据类型值,这个东站叫做自动类型转换

自动类型转换从小到大分别为:Byte,Short,Char -> Int -> Long -> Float -> Double

案例:

val a:Int = 1
val b:Double = 2 + 1.2  //因为是Int 和 Double进行计算,最终输出是Double类型
val c:Byte = a + 1    //这样会报错,它的结果为Int 类型,给它赋值类型为Byte就会报错

2.强制类型转换
解释:范围大的数据类型通过强制转换,转换成范围小的数据类型,这个动作叫强制转换,但是会出现精度缺失的情况。
格式:

val/var 变量名:数据类型 = 具体值.toXXX

案例:

object scala {def main(args: Array[String]): Unit = {val  a:Int = 1val b:Int = (a + 1.1).toIntprintln(b)}
}
结果:2

3.值类型和String类型之间的相互转换
(1)值类型转换层String
格式一

val/var 变量名:String = 值类型数据 + ""

格式二

val/var 变量名:String = 值类型数据.toString

案例:

object scala {def main(args: Array[String]): Unit = {val  a:Int = 10val b = a + "abc"  //方法一:通过后面加String的值,将Int类型a变成Stringval c = a.toString //方法二:通过强制转换将a的Int类型转成Stringprintln(b,c+10)}
}
结果:(10abc,1010) //因为都是String ,所有字符是拼在一起的

(2)String类型转换成对于值类型

val/var 变量名:值类型 = 字符串值.toXXX  //XXX表示你要转换的类型

案例:

object scala {def main(args: Array[String]): Unit = {val  a = "10"val  b =  "5"val  c = a.toInt + b.toInt //使用强制转换将String类型转成Intprintln(c)}
}
结果:15

7.键盘录入

解释:上面都是我们写死的值,如何让用户直接输入数据,然后我们通过代码接受呢
使用方法:
1.导包
格式:

import scala.io.Stdln

2.通过StdIn.readXxx()来接受用户键盘录入的数据

接收字符串数据:StdIn.readLine()
接收整数数据:StdIn.readInt()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/5547.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跨语言摘要CLS近期论文研究总结(一)

1. A Cross-Lingual Summarization method based on cross-lingual Fact-relationship Graph Generation 基于跨语言事实关系图生成的跨语言摘要方法学习 首先,从源语言文档和目标语言参考摘要中提取事实三重信息,并构建其事实关系图。 然后&#xff0c…

汽车制造业安全事故频发,如何才能安全进行设计图纸文件外发?

汽车制造业产业链长,关联度高,汽车制造上游行业主要为钢铁、化工等行业,下游主要为个人消 费、基建、客运和军事等。在汽车制造的整个生命周期中,企业与上下游供应商、合作商之间有频繁、密切的数据交换,企业需要将设计…

开发总结-Controller层

Controller层一定要try catch一下,不然里面报的错可能导致程序报错。 catch中就表示有错误就 Return ResultUtils.err(e.getMessage()) 必填项校验 在实体属性中添加注解 NotNull : 用在基本类 型上 不能为null 但可以为空字符串 NotEmpty : 用在集合类上 不能为…

PHP SMTP 电子邮件错误‘354结束数据‘data: 354 Enter mail, end with .

荆轲刺秦王 公司的邮箱发送验证码功能 之前一直正常工作 但是最近停止了 查看代码发现邮件类使用的是codeigniter框架的Email class 原有的代码是: /application/config.php mail >[protocol > smtp,smtp_host > mail.baidu.com,smtp_user > roo…

oracle pl/sql 如何让sql windows 显示行号

oracle pl/sql 如何让sql windows 显示行号 下载最新版的pl/sql第一步,在preferences中对sql Windows进行设置,如下所示第二步,在preferences中对User interface进行设置,如下所示结果如下当然,还可以通过右键选择是否…

ccpc热身赛题目1:中文系Roliy的困惑

代码 import java.util.ArrayList; import java.util.Scanner;public class Main {public static void main(String[] args) {ArrayList<String> list new ArrayList<>();char [] charArr new char[32];for (int i 0; i < charArr.length; i) {charArr[i] 0…

OPPO Reno10Pro/Reno11/K10手机强解BL刷root权限KSU内核抓包刷机救砖

OPPO Reno10Pro/Reno11/K10手机虽然发布时间并不久&#xff0c;但由于天玑处理器的体质&#xff0c;已经支持强制解锁BL了&#xff0c;该漏洞来自第三方工具适配&#xff0c;支持OPPO天机8100/8200刷机救砖解锁BL不需要等待官方深度测试直接实现。解锁BL后的OPPO Reno10Pro/Ren…

PC-3000 Mobile Pro: 智能手机及平板设备数据提取及取证工具

天津鸿萌科贸发展有限公司从事数据安全业务20余年&#xff0c;在数据恢复、数据取证、数据备份等领域有丰富的案例经验、前沿专业技术及良好的行业口碑。同时&#xff0c;公司面向取证机构及数据恢复公司&#xff0c;提供数据恢复实验室建设方案&#xff0c;包含数据恢复硬件设…

深度学习之基于Tensorflow卷积神经网络公共区域行人人流密度可视化系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 在公共区域&#xff0c;如商场、火车站、地铁站等&#xff0c;人流密度的监控和管理对于确保公共安全…

Android OpenMAX(一)漫谈

在开始正式的学习前,我们先来聊一聊Android音视频开发中的一些问题、感受与想法。(有一点要事先说明,我的问题与答案、想法并不一定正确,请读者带着审慎的思考来阅读,后续的文章也是一样,希望读者边阅读边思考,看到错误可以指出让我改正,如有问题也可以提出一起讨论。)…

制作一个RISC-V的操作系统十五-软件定时器

文章目录 定时器分类定时器相关分类软件定时器设计初始化创建删除触发流程图形示意 优化代码 定时器分类 硬件定时器&#xff1a;由硬件频率和触发限制的大小决定&#xff0c;只有一个&#xff0c;精度高 软件定时器&#xff1a;基于硬件定时器实现&#xff0c;精度大于等于硬…

YOLOV8模型更改

速递 | YOLOv8模型改进的N种方法-CSDN博客 【10】yolov8目标检测模型改进之添加注意力机制_yolov8中添加无参数注意力-CSDN博客 YOLO系列助力涨点&#xff01;新SOTA让缺陷检测更准更快&#xff01;(附开源数据集下载) - 哔哩哔哩 (bilibili.com)

Docker在linux安装步骤超详细

官网 Install Docker Engine on CentOS | Docker Docs yum -y install gcc yum -y install gcc-c 安装工具 sudo yum install -y yum-utils 设置国内的镜像 yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yu…

Scala 多版本下载指南

Scala&#xff0c;这一功能丰富的编程语言&#xff0c;结合了面向对象和函数式编程的精华&#xff0c;为开发者提供了强大的工具来构建高效、可扩展的应用程序。随着Scala社区的不断壮大和技术的演进&#xff0c;多个版本的Scala被广泛应用于不同的项目与场景中。本文旨在为您提…

acwing算法提高之数据结构--线段树

目录 1 介绍2 训练3 参考 1 介绍 线段树是算法竞赛中常用的用来维护区间信息的数据结构。 线段树可以在O(logN)时间复杂度内完成以下操作&#xff1a; 单点修改。区间修改&#xff08;需要加入懒标记&#xff09;。区间查询&#xff08;区间求和、求区间最大值、求区间最小值…

更新-上市公司董事会多样性指标计算参考SMJ2021(代码+数据)1990-2022年

01、数据介绍 董事会多样性&#xff08;Board Diversity&#xff09;是指公司董事会成员在性别、年龄、种族、教育背景、专业技能、国籍等方面的多元化程度。多样性的董事会能够为公司带来更广泛的观点、经验和技能&#xff0c;有助于提高公司的战略决策质量和创新能力。同时&…

ping命令操作记录

1&#xff0c;ping 主机可查看主机是否在线 2&#xff0c;ping -a参数&#xff0c;解析主机的名称 3&#xff0c;ping -r 跟踪打印路由信息 ping命令的作用&#xff1a;确认目标主机是否存活&#xff0c;确定网络是否畅通 ping的原理&#xff1a;ping发送ICMP&#xff08;互联…

深入探索Elasticsearch中的QueryBuilders

Elasticsearch的查询构建器(org.elasticsearch.index.query.QueryBuilders)是构建复杂查询的强大工具集。本文将逐一介绍其主要成员属性和方法&#xff0c;帮助你更高效地进行数据检索与分析。 基础查询 matchAllQuery 功能&#xff1a;匹配所有文档的查询。示例&#xff1a…

深入解析yolov5,为什么算法都是基于yolov5做改进的?(一)

YOLOv5简介 YOLOv5是一种单阶段目标检测算法&#xff0c;它在YOLOv4的基础上引入了多项改进&#xff0c;显著提升了检测的速度和精度。YOLOv5的设计哲学是简洁高效&#xff0c;它有四个版本&#xff1a;YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x&#xff0c;分别对应不同的模型大小…

中科院突破:TalkingGaussian技术实现3D人脸动态无失真,高效同步嘴唇运动!

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享&#xff0c;与你一起了解前沿深度学习信息&#xff01; 引言&#xff1a;探索高质量3D对话头像的新方法 在数字媒体和虚拟互动领域&#xff0c;高质量的3D对话头像技术正变得日益重要。这种技术能够在虚拟现实、电影…