【Scala入门】scala基础语法:to和until,if-else和for循环,while循环

news2024/12/23 8:56:44

目录:

【Scala入门】Scala下载及安装(Windows)以及Idea创建第一个scala项目_水w的博客-CSDN博客

【Scala入门】scala基础语法:类和对象,变量和常量_水w的博客-CSDN博客

目录

2.4 数据类型

2.5 to和until,if-else和for循环,while循环


2.4 数据类型

数据类型:

  • java基本类型char byte short int long float double boolean
  • java基本类型对应包装类型:Charater Byte Short Integer Long Float Double Boolean
  • java中不是纯粹的面向对象。
  • Scala吸取了这一点,所有数据都是对象,都是Any的子类。
  • Any有两个子类:AnyVal值类型 AnyRef引用类型。
  • 数值类型都是AnyVal子类,和Java数值包装类型都一样,只有整数在scala中是Int、字符是Char有点区别。
  • StringOps是java中String类增强,AnyVal子类。
  • Unit对应java中的voidAnyVal子类。用于方法返回值的位置,表示方法无返回值,Unit是一个类型,只有一个单例的对象,转成字符串打印出来为()
  • Void不是数据类型,只是一个关键字。
  • Null是一个类型,只有一个单例对象null就是空引用,所有引用类型AnyRef的子类,这个类型主要用途是与其他JVM语言互操作,几乎不在Scala代码中使用。
  • Nothing所有类型的子类型,也称为底部类型。它常见的用途是发出终止信号,例如抛出异常、程序退出或无限循环。

(1)整数类型:都是有符号整数,标准补码表示。

  • Byte 1字节
  • Short 2字节
  • Int 4字节
  • Long 8字节
  • 整数赋初值超出表示范围报错。
  • 自动类型推断,整数字面值默认类型Int,长整型字面值必须加L后缀表示。
  • 直接向下转换会失败,需要使用强制类型转换,(a + 10).toByte

(2)浮点类型:

  • Float IEEE 754 32位浮点数
  • Double IEEE 754 64位浮点数
  • 字面值默认Double

(3)字符类型:

  • 同java的Character,2字节,UTF-16编码的字符。
  • 字符常量:''
  • 类型Char
  • 转义:\t \n \r \\ \" \'etc

(4)布尔类型:true false

(5)空类型:

  • Unit 无值,只有一个实例,用于函数返回值。
  • Null 只有一个实例null,空引用。
  • Nothing 确定没有正常的返回值,可以用Nothing来指定返回值类型。好像意思是抛异常时返回Nothing,不是特别懂。

2.5 to和until,if-else和for循环,while循环

(1)to和until 的用法(不带步长,带步长区别)

  • 在scala中,Range代表的是一段整数的范围;
  • until和Range是左闭右开,1是包含的,10是不包含。而to是左右都包含;
/** to和until
     * 1 to 10 返回1到10的Range数组,包含10
     * 1 until 10 返回1到10 Range数组 ,不包含10
     */
    println(1 to 10 )//打印 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
    println(1.to(10))//与上面等价,打印 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
    println(1 to (10 ,2))//步长为2,从1开始打印 ,1,3,5,7,9
    println(1.to(10, 2))

    println(1 until 10 ) //不包含最后一个数,打印 1,2,3,4,5,6,7,8,9
    println(1.until(10))//与上面等价
    println(1 until (10 ,3 ))//步长为2,从1开始打印,打印1,4,7

(2)for循环可以加条件判断,可以使用分号隔开,也可以不使用分号(使用空格)

//可以在for循环中加入条件判断
    for(i<- 1 to 10 ;if (i%2) == 0 ;if (i == 4) ){
      println(i)
    }

for循环用yield 关键字返回一个集合(把满足条件的i组成一个集合)

 //将for中的符合条件的元素通过yield关键字返回成一个集合
    val list = for(i <- 1 to 10  ; if(i > 5 )) yield i
    println(list)
    for( w <- list ){
      println(w)
    }

 

(3)while循环,while(){},do {}while()

  • scala中不能使用count++,count—只能使用count = count+1 ,count += 1;
// while 循环
    var index = 0
    while (index < 2) {
      println("第" + index + "次while 循环")
      index += 1
    }
    index = 0
    do {
      index += 1
      println("第" + index + "次do while 循环")
    } while (index < 2)

 总代码:

package com.yt.test

class Person(xname: String, xage: Int) {
  val name = xname
  var age = xage
  println("----------- Person Class -----------") // new时,class中除了方法不执行(不包括构造),其他都执行
}

object ClassAndObj {
  println("----------- ClassAndObj object -----------")

  def main(args: Array[String]): Unit = {
    // if-else
    val age = 18
    if (age < 18) {
      println("age < 18")
    } else if (18 <= age && age <= 20) {
      println("18 <= age <= 20")
    } else {
      println("age > 20")
    }

    /** to和until
     * 1 to 10 返回1到10的Range数组,包含10
     * 1 until 10 返回1到10 Range数组 ,不包含10
     */
    println(1 to 10 )//打印 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
    println(1.to(10))//与上面等价,打印 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
    println(1 to (10 ,2))//步长为2,从1开始打印 ,1,3,5,7,9
    println(1.to(10, 2))

    println(1 until 10 ) //不包含最后一个数,打印 1,2,3,4,5,6,7,8,9
    println(1.until(10))//与上面等价
    println(1 until (10 ,3 ))//步长为2,从1开始打印,打印1,4,7

    // for
    for( i <- 1 until 10; j <- 1 until 10){
      if(i >= j){
        print(i +" * " + j + " = " + i*j + "	")
      }
      if(i == j){
        println()
      }
    }

    // while 循环
    var index = 0
    while (index < 2) {
      println("第" + index + "次while 循环")
      index += 1
    }
    index = 0
    do {
      index += 1
      println("第" + index + "次do while 循环")
    } while (index < 2)
  }
}

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

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

相关文章

破防了,这才是机房运维的高效方法

在云计算、5G等新业务野蛮生长的催化下&#xff0c;机房规模与容量也呈倍速扩张。机房安全是业务发展的底座。提升机房设备安全和管理效率&#xff0c;避免人为因素导致的事故发生&#xff0c;是机房运维的必要前提。 安全生产重于泰山&#xff0c;除了日常的科学防护&#xf…

C++函数适配器和函数包装器:让你的函数更灵活

&#x1f4d6;作者介绍&#xff1a;22级树莓人&#xff08;计算机专业&#xff09;&#xff0c;热爱编程&#xff1c;目前在c&#xff0b;&#xff0b;阶段>——目标Windows&#xff0c;MySQL&#xff0c;Qt&#xff0c;数据结构与算法&#xff0c;Linux&#xff0c;多线程&…

机器学习——K-Means算法优化(一)代价函数

机器学习——K-Means算法优化&#xff08;一&#xff09;代价函数 文章目录 机器学习——K-Means算法优化&#xff08;一&#xff09;代价函数一、K-Means算法&#xff08;代价函数&#xff09;二、代码部分 在K-Means算法中&#xff0c;对K个质心的选择&#xff0c;容易陷入局…

Java基础之字节流

文章目录 一、字节输入流1.1 字节输入流读取单个字节1.2 字节输入流一个字节一个字节读取数据1.3 字节输入流一个字节数组一个字节数组读取数据 二、字节输入流读出数据乱码问题三、字节输出流3.1 一次向指定文本写入一个字节数据3.2 一次向指定文本写入一个字节数组数据3.3 一…

CentOS7---基于 CentOS 7 构建 LVS-DR 群集

一、对比 LVS 负载均衡群集的 NAT 模式和 DR 模式&#xff0c;比较其各自的优势 NAT模式(地址转换) 原理&#xff1a;就是把客户端发来的数据包的IP头的目的地址&#xff0c;在负载均衡器上换成其中一台RS的IP地址 并发至此RS来处理&#xff0c;RS处理完后把数据交给负载均衡器…

LeetCode热题HOT100:单词拆分、环形链表 II、LRU 缓存

LeetCode热题HOT100 139. 单词拆分 题目&#xff1a;给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用。 示例 1&#xf…

[前端基础]Node.js简单操作,手把手教你搭建一个轻量级应答服务器(会继续补充操作细节,欢迎讨论)

注意:前置知识:回调函数,异步,ajax技术,端口 目录 1.什么是node.js 2.模块的概念 3. 回调函数 4.关于文件的管理 5.关于流的操作 6.关于构建服务器:前端部分,如何向后端发送请求 7.后端创建简单的服务器对象 8.后端如何处理请求 9.前端如何处理返回的数据 10.简易应答…

STL标准模板库 vector容器与迭代器入门

STL五大件 标准模板库vector容器&#xff1a;vector 声明初始化vector 容器 &#xff1a;push_backvector 容器 &#xff1a;push_back的问题vector容器&#xff1a;push_back的问题&#xff0c;reserve解决 vector容器&#xff1a;insert函数vector容器&#xff1a;insert函数…

【从零开始玩量化17】如何python+QMT完成自动化交易?(全网最详细入门教程)

一、什么是QMT 此部分为扫盲内容&#xff0c;有一定了解者可以跳过。 概念 它是一款量化交易客户端软件&#xff0c;由一家叫做迅投公司出品&#xff0c;可以直接登录你的券商账号进行股票交易&#xff0c;但与同花顺/通信达不同的是&#xff0c;它暴露了基于python的交易API&…

【人生苦短,我学 Python】进阶篇——异常处理(Day16)

写在前面&#xff1a;大家好&#xff01;我是【AI 菌】。我热爱AI、热爱分享、热爱开源&#xff01; 这博客是我对学习的一点总结与记录。如果您也对 深度学习、机器视觉、算法、Python、C 感兴趣&#xff0c;可以关注我的动态&#xff0c;我们一起学习&#xff0c;一起进步~ 我…

Python小姿势 - 可选知识点:

可选知识点&#xff1a; 列表推导式 列表和字典推导式 字典推导式 生成器表达式 带条件的生成器表达式 解析XML 解析JSON 使用Requests和BeautifulSoup爬虫 Python并发编程 Python多线程编程 Python多进程编程 Python异步编程 Python装饰器 Python闭包 Python模块化 Python类和…

PM510V16 3BSE008358R1嵌入式卡件用于励磁系统多用于工业发电

​ PM510V16 3BSE008358R1嵌入式卡件用于励磁系统多用于工业发电 物联网与工业自动化控制系统的联系 当今&#xff0c;物联网可谓是在各大媒体出镜率最高、而且与“智能”联系密切的名词之一。从“管理、控制、智能”的角度来看&#xff0c;其实物联网与工业自动化是一脉相承的…

Kafka技术基础

Apache Kafka发源于LinkedIn&#xff0c;于2011年成为Apache的孵化项目&#xff0c;随后于2012年成为Apache的主要项目之一&#xff0c;是消息队列的一种实现方式&#xff0c;提供消息的持久化。Kafka使用Scala和Java进行编写。Apache Kafka是一个快速、可扩展的、高吞吐、可容…

IEEE-TMI:张孝勇团队开发小鼠精细脑结构自动分割的深度学习算法

近日&#xff0c;复旦大学类脑智能科学与技术研究院青年研究员张孝勇课题组联合德国亥姆霍兹慕尼黑研究中心&#xff0c;在医学图像处理领域顶尖期刊《IEEE医学影像汇刊》(IEEE Transactions on Medical Imaging&#xff0c;TMI) 发表了题为《MouseGAN&#xff1a;用于小鼠大脑…

OpenCV 模板匹配 matchTemplate

一、模板匹配概念 模板匹配是一项在一副图像中寻找与另一幅模板图像最匹配&#xff08;相似&#xff09;部分的技术。模板匹配不是基于直方图的&#xff0c;而是通过在输入图像上滑动图像块&#xff08;模板&#xff09;同时对比相似度&#xff0c;来对模板和输入图像进行匹配的…

【IoT】如何使用软件加密(文件夹加密工具.exe),并破解工具

目录 第一步&#xff1a;显示隐藏的文件。 第二步&#xff1a;将隐藏文件变成文件夹。 第三步&#xff1a;解密文件。 有时候出差或者有些商务场合&#xff0c;需要对一些敏感文件做一下简单的加密&#xff0c;这样在分享内容的时候&#xff0c;可以起到初步的保护作用。 当…

Windows利用easyBCD装Ubuntu双系统

一、准备材料&#xff1a; 1、easyBCD软件&#xff08;我用V2.3版本&#xff09; 2、Ubuntu系统&#xff08;我用的12.04版本ubuntu-12.04-desktop-i386.iso&#xff09; 二、配置空闲分区 1、右击“计算机”--->管理--->右击某个自己分配的分区--->选择“压缩卷”…

Deep Bidirectional Language-Knowledge Graph Pretraining论文阅读

Deep Bidirectional Language-Knowledge Graph Pretraining github代码 摘要 最近的工作表明&#xff0c;知识图(KG)可以补充文本数据&#xff0c;提供结构化的背景知识&#xff0c; 为推理提供有用的支架。然而&#xff0c;这些作品并没有经过预先的训练来学习大规模的两种…

央视推荐的护眼灯是哪款?盘点央视推荐的护眼灯排名

护眼灯是生活中最常见的照明工具&#xff0c;许多人担心品质不过关 不合格的护眼灯会造成视损害 建议在选购护眼灯时&#xff1a; 首先看清楚产品的具体标识&#xff0c;其中就包括有产品的生产厂家&#xff0c;生产地址以及他们的产品型号 看产品规格和是否获得了国家的相关…

博睿数据蝉联中国APM市场份额第一,Bonree ONE春季正式版重磅发布

日前&#xff0c;IDC发布《中国IT统一运维软件产品市场跟踪报告&#xff0c;2022H2》,2022下半年中国APM市场环比增长近10%。博睿数据以市场份额达18.28%蝉联APM应用性能监控市场份额第一。 追求卓越&#xff0c;顺势而为 博睿数据作为中国领先的一体化智能可观测平台&#xf…