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

devtools/2024/10/19 3:33:46/

一、基本学习

1、输出语句和分号

1.换行输出

scala">println(打印数据)

2.不换行输出

scala">print(打印数据)

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

2、Scala中常量

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

scala">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来定义变量,语法格式如下

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

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

案例:

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

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

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

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

4.Scala字符串

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

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

案例:

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

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

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

案例:

scala">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)}
}
scala">结果:name=chenxudong, asg=28,sexmale

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

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

案例:

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

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

scala">lazy val/var 变量名 = 表达式

案例:

scala">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、数据类型

scala">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.自动类型转换
解释:范围小的数据类型值会自动转换为范围大的数据类型值,这个东站叫做自动类型转换

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

案例:

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

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

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

案例:

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

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

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

格式二

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

案例:

scala">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)}
}
scala">结果:(10abc,1010) //因为都是String ,所有字符是拼在一起的

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

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

案例:

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

7.键盘录入

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

scala">import scala.io.Stdln

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

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

http://www.ppmy.cn/devtools/27241.html

相关文章

贪心-排队打水

排队打水 问题描述 有 n个人排队到 1 个水龙头处打水,第 i个人装满水桶所需的时间是 ti,请问如何安排他们的打水顺序才能使所有人的等待时间之和最小? 输入格式 第一行包含整数 n。 第二行包含 n个整数,其中第 i个整数表示第 …

C++并发编程 - 线程管理

目录 等待线程的完成 传递参数 属性API Reference 我们的std::thread对象就是在创建的时候方才执行函数,而不是使用某一个类似于run的API执行。这使得我们启动一个线程的方式变得很简单: void task(void); // A demo std::thread(task); 我们这样就…

基于JSP/Servlet校园二手交易平台

摘 要 本系统采用JSP/servlet技术,是使用Java编程语言编写的一套校园网二手交易平台软件。系统采用的是最近几年流行的B/S开发模式,以互联网方式运行,服务器端只需要安装本系统,而客户端用户只要可以上网,就可以非常方…

03_Scala变量和数据类型

文章目录 [toc] **变量和数据类型****1.注释****2.变量和常量****3. 标识符的命名规范****4.scala的字符串****5.键盘输入****5.1 StdIn.readLine()****5.2 从文件中读取数据****5.3 Scala向外写数据** 变量和数据类型 1.注释 和Java完全一样 ** ** 2.变量和常量 var name…

两性情感课程笔记 2020~2023

2020 剽悍生活博客七爱哦耶浪迹小鹿魔卡Chris李越泰阳欧阳浮夸舞步爱情光谱乌鸦倪称男哥路易梵公子绅士派艾克迪诺校长感觉流卡卡危险人物晓辉爱上情感恋爱研习社摄影艾瑞克Chic情叔明日恋爱情受最绅士魅男其它 2021 城市猎人知乎文章 20210926阿尔法安小妖曹学敏Chris七分学…

[高质量]2024五一数学建模A题保奖思路+代码(后续会更新)

你的点赞收藏是我继续更新的最大动力,可点击文末卡片获取更多资料 你是否在寻找数学建模比赛的突破点? 作为经验丰富的数学建模团队,我们将为你带来2024 年华东杯(A题)的全面解析包。这个解决方案包不仅包括完整的代…

百度语音识别的springboot应用

1、pom依赖 <dependency> <groupId>com.baidu.aip</groupId> <artifactId>java-sdk</artifactId> <version>4.16.18</version> </dependency> 2、测试的demo 创建语音识别应用 百度智能云-管理中心 (baidu.com) 代码中要…

正则化手册:探索改进机器学习模型功能的实用技巧

书籍&#xff1a;The Regularization Cookbook&#xff1a;Explore practical recipes to improve the functionality of your ML models 作者&#xff1a;Vincent Vandenbussche 出版&#xff1a;Packt Publishing 书籍下载-《正则化手册&#xff1a;探索改进机器学习模型功…