ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

快学Scala第一天

2022-01-25 13:03:38  阅读:205  来源: 互联网

标签:类型转换 快学 第一天 Scala Int var 类型 定义


以前都是只学习Hive和数仓的基本知识,却忘记了数仓的另一个重要的利器Spark.工欲善其事必先利其器,为了学好spark,我们先要学习好scala

Scala中的常量:

        学习scala也是为了我们日后学习spark打好基础,今天开始就跟着我来学习scala吧。

        scala中的常量:整型,浮点型,字符串型,布尔,空

//输出整形 
print(2)
//输出字符串类型 
print("i love you") 
//输出字符类型 
print('a') 
//输出布尔类型 
print(true) 
//输出空值 
print(null)

        定义变量

        如何在scala中定义常量呢?

        在Java中,我们定义一个整型 int a = 2

        在Scala中,定义常量不再是int

        首先先说一下定义常量的格式

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

        var/val 变量名 = 初始值

        上面两个定义变量的方式有一些不同,下面那个没有说明类型,因为idea会帮助我们自动识别类型。

 

        同样都是定义常量,将"tom"这个字符串赋值给不同的变量,我们用上面的两种方法都成功的定义了string类型的变量。

        既然成功对变量进行了定义,那么var是什么?val又是什么

        var修饰的可以修改的变量

        val修饰的是不可以修改的变量

 

        上面我们想要修改val修饰的变量,没等编译时期报错,idea就已经给我们提示了错误,val修饰的变量不能被修改。

定义字符串

                上面讲了如果定义,下面讲解如果定义字符串。

        定义字符串的方法有三种

  1. 使用双引号
  2. 使用插值表达式
  3. 使用三引号
//使用双引号 
var d_name = "tom" 
//使用插值表达式 
var d_name = "tom" 
print(s"name =${d_name} ")

        看下面一个图片,我们在一个字符串前面加上s,它会变成什么类型

 

        首先我们定义了ss,然后通过模式匹配判断他是什么类型,如果是string那么就会返回后面的语句。其实最终匹配出来是string类型。

var 变量名 = s"${变量}字符串" 这个同样也是字符串

命名规范

        在Scala中也有命名规范,在我前几篇博客当中就有关于SQL的命名规范。

  1. 必须由”大小写英文字母,下划线,数字,$“这个四部分任意组成
  2. 数字不能开头
  3. 不能和Scala中的关键字重名

Tips:

  1. Scala中的所有类型都是用首字母大写
  2. 整形使用的是Int而不是Integer
  3. scala变量可以不写类型,让scala编译器自己推断
  4. Scala中默认的整型是Int,默认的浮点类型是Double

Scala中的层次类型

 

        从上面的图中可以看到,Any是最高的层次,Any是所有类型的父类

        AnyVal是所有数值类型的父类

        AnyRef是所有对象类型的父类

        Null是ValRef的子类,null是所有对象类型的子类

        nothing是所有类的子类,不能直接创建nothing实例的类型,nothing可以在方法抛出异常的时候返回。

提出来一个问题,下面这段代码是否会报错

                val b:Int = null

从上面的图上来看,Null是对象类型的子类,但不是数值类型的子类,是会报错的。

        来看一下报错信息

 

        b已经是被定义成了Int类型,不能再被定义成null了。

        Null类型不能被转换成Int类型。

类型转换

        所谓类型转换就是类型小的转换为类型大的。

        类型转换分为:值类型的转换和引用类型的转换

自动类型转换

范围小的数据类型自动转换为范围大的数据类型。

 

        scala编译器自动转换为Double类型。Int + Double = Double

        自动转换类型从小到大排序:

        Byte,Short,Char,->Int->Long->Float->Double

        Byte和Short和Char是等价的。

        下面放一下错误的例子

        var d:Byte =a+1

强制类型转换

        将范围大的类型转换为范围小的数据类型

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

        var d = 2.3 Double类型 var a = d.toInt 将2转换为Int类型

        值类型和String类型的转换

  1.  值类型转换成String类型

        var d :String = 12.toString

        2.String类型转换成Int类型

        var d:Int = "123".toInt 123

最后拿一个例子进行收尾总结

 

 

标签:类型转换,快学,第一天,Scala,Int,var,类型,定义
来源: https://blog.csdn.net/weixin_46300771/article/details/122683113

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有