Scala学习笔记——scala数据类型

Scala学习笔记——scala数据类型


一、Hello World

老规矩,学新语言先写hello world

object HelloWorld {
    def main(args: Array[String]): Unit = {
        println("Hello World!")
    }
}

这里与java语言不同的是,java是新建一个类,而scala是新建一个object


二、数据类型与变量的定义

1、数据类型

Byte 8位有符号补码整数。
Short 16位有符号补码整数。
Int 32位有符号补码整数。
Long 64位有符号补码整数,定义时要在数字后加 l 或 L。
Float 32 位, IEEE 754 标准的单精度浮点数,定义是要在数字后面加 f 或 F。
Double 64 位 IEEE 754 标准的双精度浮点数
Char 16位无符号Unicode字符, 区间值为 U+0000 到 U+FFFF
String 字符序列
Boolean true或false
Unit 表示无值,和其他语言中void等同。用作不返回任何结果的方法的结果类型。相当于java中的void
Null null 或空引用,相当于java中的null
Any Any是所有其他类的超类,相当于java中的object

2、变量的定义

scala定义变量要使用val或var关键字

  • 语法:val | var 名称 (: 数据类型) = 变量值

val与var的区别:

  • val修饰的变量值不能修改,相当于java中的final修饰的变量

如:

def main(args: Array[String]): Unit = {
	//字符串
	var str: String = "tyh"
	//整型
	var i: Int = 123
	var l: Long = 2233720368547L
	//浮点型
	var f: Float = 1.23434f
	var d: Double = 1.234324
	//多个变量的声明
	val name1, name2 : String = "tyh"
	//修改val变量会报错
	//name1 = "yyx"
	
	var c: Char = 'a'
    var bool: Boolean = true
	
	//Null	null 或空引用
	var dog : Dog = null
}

class Dog {}

三、打印数据到控制台

三种字符串打印方式

def main(args: Array[String]): Unit = {
	var name: String = "lihua"
	var price: Int = 5000
	var d: Double = 500.562165
	var url: String = "1579152915@qq.com"
	
	//1、普通输出:可以使用加号连接也可以使用,连接(,是可以输出的)
	println("name:" + name , "价格" + price + ",网址" + url)
	println("name:" + name , "价格" + price , "网址" + url)
	
	//2、'f'插值器允许创建一个格式化的字符串,类似于C语言中的printf。
	//这里$name%s打印String变量name,
	println(f"姓名:$name,价格:$d,网址:$url%s")
	
	//3、's'插值器允许在字符串中直接使用变量
	println(s"姓名:$name,价格:$price,url:$url")
	//'s'还可以处理表达式
	println(s"价格:${price + d}")
}

输出:
在这里插入图片描述

四、类型转换

1、隐式转换

多种类型数据混合运算时,系统首先将所有数据转换成容量最大的那种数据类型,然后进行运算

def main(args: Array[String]): Unit = {
	//1、隐式转换:多种类型数据混合运算时,系统首先将所有数据转换成容量最大的那种数据类型,然后进行运算
	var val1: Float = 1.1f + 1
	var val2: Int = 'a' + 1
	println(val1, val2)
}

输出:
在这里插入图片描述

2、强制类型转换

def main(args: Array[String]): Unit = {
	var price: Int = 50
	val val3: Double = price.toDouble
	val val4: Double = price.doubleValue()
	//这两个方法都不会改变price原来的值
	println(price)
	var str: String = "124"
	val price2: Int = Integer.valueOf(str)
	println(price2)
	
	//其它类型转字符串,使用String.valueOf()方法
	val str2: String = String.valueOf(price)
	val array: Array[Char] = str.toCharArray
}

总而言之,要将一个数据类型转换为另一种数据类型(String除外),就直接类型一.to类型二

五、scala运算符

与java一样

1、算数运算符

def main(args: Array[String]): Unit = {
	var a = 10;
	var b = 20;
	
	//1、算数运算符
	println("a + b = " + (a + b))
	println("a - b = " + (a - b))
	println("a * b = " + (a * b))
	println("a / b = " + (a / b))
	println("a % b = " + (a % b))
}

输出:
在这里插入图片描述

2、关系运算符

def main(args: Array[String]): Unit = {
	var a = 10;
	var b = 20;
	
	//2、关系运算符
	println("a == b = " + (a == b))
	println("a != b = " + (a != b))
	println("a > b = " + (a > b))
	println("a < b = " + (a < b))
	println("b >= a = " + (b >= a))
	println("b <= a = " + (b <= a))
}

输出:
在这里插入图片描述

3、逻辑运算符

def main(args: Array[String]): Unit = {
	var c = true
	var d = false
	println("c && d =" + (c && d))
	println("c || d =" + (c || d))
	println("!(c && d) =" + !(c && d))
}

输出:
在这里插入图片描述

4、位运算符

&: 按位与运算符 (a & b) 输出结果 12 ,二进制解释: 0000 1100
|: 按位或运算符 (a | b) 输出结果 61 ,二进制解释: 0011 1101
^: 按位异或运算符 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
~: 按位取反运算符 (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。
<<: 左移动运算符 a << 2 输出结果 240 ,二进制解释: 1111 0000
>>: 右移动运算符 a >> 2 输出结果 15 ,二进制解释: 0000 1111
>>>: 无符号右移 A >>>2 输出结果 15, 二进制解释: 0000 1111

def main(args: Array[String]): Unit = {
	var a = 60 /* 60 = 0011 1100 */
	var b = 13 /* 13 = 0000 1101 */
	var e: Int = 0
	
	e = a & b /* 12 = 0000 1100 */
	println("a & b = " + e)
	
	e = a | b /* 61 = 0011 1101 */
	println("a | b = " + e)
	
	e = a ^ b /* 49 = 0011 0001 */
	println("a ^ b = " + e)
	
	e = ~(a) /* -61 = 1100 0011 */
	println("~a = " + e)
	
	e = a << 2 /* 240 = 1111 0000 */
	println("a << 2 = " + e)
	
	e = a >> 2 /* 15 = 1111 */
	println("a >> 2  = " + e)
	
	e = a >>> 2 /* 15 = 0000 1111 */
	println("a >>> 2 = " + e)
}

输出:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值