Scala学习(二)

news2024/10/5 17:25:08

文章目录

  • 1.Scala的运算符
      • 1.1 Scala中的equals和==
  • 2.流程控制
      • 2.1 if
      • 2.2 Scala中的三目运算符
      • 2.3 for循环
  • 3.循环中断

1.Scala的运算符

1.1 Scala中的equals和==

回顾Java中的运算符
equals和==,equals比较的为值,= = 比较的为地址

String a1=new String("hi");
String a2=new String("hi");
System.out.println(a1==a2);
System.out.println(a1.equals(a2));
输出结果为 false true

//这种情况下字符串会被放入常量池中,所以地址和值都会相等
String a1="hi";
String a2="hi";
System.out.println(a1==a2);
System.out.println(a1.equals(a2));
输出结果为 true true

在Scala中==和equals表示的含义一样,都是比较数值的大小

    var a1=new String("hi");
    var a2=new String("hi");
    println(a1.equals(a2))
    println(a1==a2)

在这里插入图片描述
在Scala中使用eq来比较地址的值

var a1=new String("hi");
var a2=new String("hi");
println(a1.eq(a2))

在这里插入图片描述

在Scala中没有++和–操作符,可以通过+=和-=来实现同样的效果。

2.流程控制

2.1 if

object IFTest
{
  def main(args: Array[String]): Unit = {
    //需求1:输入年龄,如果年龄小于18岁,则输出少年
    //年龄大于等于18且小于等于60,输出中年
    //否则输出老年
    println("请输入年龄:")
    var age:Int=StdIn.readInt()
    if (age <18){
      println("少年")
    }else if(age>=18 && age <=60)
      {
        println("中年")
      }
      else
      {
        println("老年")
      }
  }
}

在这里插入图片描述
在Scala中,if可以有返回值的,返回值的类型是每一个分支条件的共同的父类Any

    var str1: Any = {
      println("请输入年龄:")
      var age: Int = StdIn.readInt()
      if (age < 18) {
        println("少年")
      } else if (age >= 18 && age <= 60) {
        println("中年")
      }
      else if((age >=60 && age <= 120)){
        println("老年")
      }
      else {
        println(666)
      }
    }

2.2 Scala中的三目运算符

    //三目运算符
    var str2:String = if(age<18) "未成年" else "成年"

如果代码块中的代码只有一行,大括号可以省略
在这里插入图片描述

2.3 for循环

    for(i <- 1 to 5)
      {
        println(i)
      }

    for(i <- 1 until 5)
      {
        println(i)
      }

增强for循环:

      for(i <- Array(1,2,3))
        {
          println(i)
        }

循环守卫:

	//遍历偶数集合
    for(i <- 1 to 10 if i%2==0)
      {
        println(i)
      }

循环步长:

    for(i <- 1 to 10 by 1.5)
      {
        println(i)
      }

倒数:

    for(i <- 10 to 1 by -1)
      {
        println(i)
      }

在这里插入图片描述
嵌套循环:

    for(i <- 1 to 4)
      {
        for(j <- 1 to 5)
          {
            println(s"${i}-${j}\t")
          }
      }

在这里插入图片描述

3.循环中断

Scala内置控制结构特地的去掉了break和continue,是为了更好的适应函数式编程,推荐使用函数式编程的风格解决break和continue的功能,而不是一个关键字。scala中使用breakable控制结构来实现break和continue功能。

	//实现程序中断
    import scala.util.control.Breaks._
    breakable(
    for(i <- 1 to 10)
      {
        if(i==5)
          {
            break()
          }
          println(i)
      }
    )

在这里插入图片描述

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

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

相关文章

【数据结构】线性表——带头双向循环链表

文章目录 带头双向循环链表带头双向循环链表主体结构带头双向循环链表操作函数介绍带头双向循环链表操作函数实现带头双向循环链表的初始化函数&#xff1a;打印函数带头双向循环链表插入函数&#xff1a;指定结点后插入和查找函数头插尾插 带头双向循环链表删除函数指定结点删…

2022东南大学网安916专硕上岸经验帖

本文目录 第一部分简单介绍我的一些选择 第二部分寒假大三下学期小学期暑假及大四上学期考前准备及考试过程考后估分与真实分数复试准备与复试过程复试结果导师选择经验对自己考研情况的评价一些建议 第一部分 简单介绍 最近忙完了毕业设计论文和教师资格证面试&#xff0c;终…

pc端项目的h5页面运行在手机浏览器使用vconsole查看页面元素、控制台、请求等信息

文章目录 一、vconsole介绍1. 作用2. 优势 二、使用1、jq项目和js项目2、vue项目 三、使用介绍1. 使用成功&#xff0c;在页面右下角会出现如下图的vConsole2. 常用功能&#xff08;控制台、请求、元素、存储器&#xff09; 一、vconsole介绍 1. 作用 使用vconsole来查看h5页…

怎么自学python?为什么选择python

自然是因为Python简单易学且应用领域广 Python近段时间一直涨势迅猛&#xff0c;在各大编程排行榜中崭露头角&#xff0c;得益于它多功能性和简单易上手的特性&#xff0c;让它可以在很多不同的工作中发挥重大作用。 正因如此&#xff0c;目前几乎所有大中型互联网企业都在使…

python写完程序怎么运行

python有两种运行方式&#xff0c;一种是在python交互式命令行下运行; 另一种是使用文本编辑器直接在命令行上运行。 注&#xff1a;以上两种运行方式均由CPython解释器编译运行。 当然&#xff0c;也可以将python代码写入eclipse中&#xff0c;用JPython解释器运行&#xff0c…

ACM - 字符串 - 基础(KMP)

字符串 一、KMP1、模板题 HDU1711 Number Sequence2、求最大匹配数 Ⅰ&#xff1a; HDU 2087 剪花布条&#xff08;子串不重叠&#xff09;3、求最大匹配数 Ⅱ&#xff1a;AcWing 831. KMP字符串&#xff08;子串可重叠&#xff09;4、s2 是不是 s1 的翻转&#xff1a;Leetcode…

draw.io二次开发(3)从删删减减开始定制自己的drawio

经过克隆代码、配置IntelliJ/IDEA和Tomcat、以及本地部署&#xff08;详见前几篇&#xff09;之后&#xff0c;终于到了上手改代码的环节了。 首先需要强调的一点是&#xff1a;千万不要去改 *.min.js 文件中的代码&#xff0c;这些文件都是生成的压缩代码&#xff0c;我们一定…

MySQL原理(四):事务

前言 上一篇介绍了 MySQL 的索引&#xff0c;这一篇将介绍事务相关的内容。 在 MySQL 的使用场景中&#xff0c;经常会有一个操作包含多个 SQL 语句&#xff0c;比如转账这个操作&#xff0c;至少包含从甲的账户中扣除金额和给乙的账户中增加金额这两个更新语句。那假如 MySQ…

如何优化VPS服务器性能,提升网站访问速度?

随着互联网的发展&#xff0c;越来越多的企业开始使用VPS服务器来托管其网站。然而&#xff0c;一些企业经常会遇到网站速度慢、响应时间长等问题&#xff0c;这不仅会影响用户的体验&#xff0c;还会导致客户流失。因此&#xff0c;优化VPS服务器的性能&#xff0c;提升网站访…

好程序员:Java培训班包就业靠谱吗?Java培训机构怎么选?

好程序员本身就是培训机构&#xff0c;现在已经10年多了。说句实在话&#xff0c;包就业的机构几乎没有&#xff0c;凡是给你说包就业的机构大多都不靠谱。你还得看机构的培训能力和就业率&#xff0c;其实能否找到工作还得看你自己在培训班学的怎么样了对吧&#xff0c;找工作…

CIAA 网络安全模型 — TLS v1.3 和 HTTPS 协议

目录 文章目录 目录SSL/TLSTLS 1.21. client_hello2. server_hello server_certificate sever_hello_done3. Certificate authentication4. client_key_exchange change_cipher_spec encrypted_handshake_message5. change_cipher_spec encrypted_handshake_message TLS 1…

portraiture3.5.6免费版PS图片磨皮软件

Portraiture是专注于图像后期处理软件研发的 Imagenomic, LLC重头产品之一&#xff0c;在摄影爱好者中极负盛名。Portraiture 可以将繁琐复杂的人像磨皮操作极致简化&#xff0c;不论是普通爱好者或专业后期处理人员&#xff0c;均能一键完成&#xff0c;被称为人像磨皮神器。 …

1. 跨域学习

1. 跨域学习 1.1 什么是跨域 出于浏览器的同源策略限制。同源策略&#xff08;Sameoriginpolicy&#xff09;是一种约定&#xff0c;它是浏览器最核心也最基本的安全功能&#xff0c;如果缺少了同源策略&#xff0c;则浏览器的正常功能可能都会受到影响。可以说Web是构建在同…

最新全网的ChatGPT让AI回答你的任何问题!国内免费用!!

ChatGPT&#xff0c;最近全网最火爆的顶流话题&#xff0c;不管数码爱好者、新闻媒体&#xff0c;还是投资客&#xff0c;无一不在关注着这一牛掰的人工智能项目 它是由OpenAI实验室推出的一款AI工具&#xff0c;拥有极其智能的对话能力&#xff0c;可以回答任何你提出的问题&…

Vuex-状态管理模式

Vuex Vuex 是一个专为 Vue.js 开发的状态管理模式。主要是是做数据交互&#xff0c;父子组件传值可以很容易办到&#xff0c;但是兄弟组件间传值&#xff08;兄弟组件下又有父子组件&#xff09;&#xff0c;页面多并且一层嵌套一层的传值&#xff0c;非常麻烦&#xff0c;这个…

函数数组的运算

函数数组的运算 一&#xff1a;冒泡运算 类似气泡上涌的动作&#xff0c;会将数据在数组中从小到大或者从大到小不断的向前移动。 基本思想&#xff1a; 冒泡排序的基本思想是对比相邻的两个元素值&#xff0c;如果满足条件就交换元素值&#xff0c;把较小的元素移动到数组前…

D31FBE01EC1NF00PARKER比例方向阀

D31FBE01EC1NF00PARKER比例方向阀是宁波秉圣工业&#xff0c;美国派克比例阀主要具有方向功能&#xff0c;流量功能&#xff0c;压力功能&#xff0c;因此主要有三类&#xff1a;方向阀&#xff0c;流量阀&#xff0c;压力阀&#xff0c;其中方向阀和压力阀直接控制和操作你。被…

一起来!白嫖Amazon DynamoDB!!!

Amazon DynamoDB简介 Amazon DynamoDB是由Amazon Web Services&#xff08;AWS&#xff09;提供的一种快速、灵活、全托管的NoSQL数据库服务&#xff0c;支持文档和键/值数据模型。它具有自动扩展、低延迟、高可靠性、高吞吐量等特点&#xff0c;能够处理从几个字节到几TB的数…

tiechui_lesson08_内存的分配和链表

主要是将链表结构的使用&#xff0c;在内核开发中使用起来比较方便的一种数据结构【LIST_ENTRY】。 一、内存的分配 主要是学习一些基本操作。现在推荐使用的动态分配函数【ExAllocatePoolWithTag】 PVOID tempbuffer ExAllocatePoolWithTag(NonPagedPool, 0x1000, xxaa); …

DJ4-6 层次选路

目录 一、层次选路的基本概念 二、域内路由选择 1、RIP* 2、OSPF 三、域间路由选择 BGP 1、AS 互连 2、AS 域间选路任务 3、示例&#xff1a;在 1d 上设置转发表 4、示例&#xff1a;在多个 AS 中做出选择 5、BGP 会话与通告 6、传播可达信息 7、路径属性和 BGP 路…