赋值运算符|学习笔记

简介: 快速学习赋值运算符。

开发者学堂课程【Scala 核心编程-基础赋值运算符】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/609/detail/8905


赋值运算符

 

基本内容

一、 介绍

二、 赋值运算符的分类

三、 案例演示

四、 面试题

 

一、介绍

赋值运算符就是将某介运算后的值,赋给指定的变量。

 

二、赋值运算符的分类

1、分类

赋值运算符跟 Java 几乎是一样的

有“+=”“-=”“*=”“/+”“%=”等等。

运算符

描述

实例

=

简单的赋值运算符,将一个表达式的值赋给一个左值

C=A+B将A+ B表达式结果赋值给C。

+=

相加后再赋值

C+= A等于C=C +A

-=

相减后再赋值

C-=A等于C=C-A

*=

相乘后再赋值

C*=A等于C=C*A

/=

相除后再赋值

C/=A等于C=C/A

%=

求余后再赋值

C%=A等于c、C=C%A

2、续表

(1) 细节赋值运算符包含的左移、右移、按位与后赋值按位异或后赋值按位或后赋值

些内容在面试的时候有可能会问到,它的逻辑的规则跟 Java 是一样的如果这些内容没有理解的话,一定要去仔细的研读。因为做大数据的时候,有些时候为了增快速度,程序员喜欢用位移的方式或者移位的方式来进行处理,如果这个规则没有明白就很难运用到之后的程序设计中。尤其要注意对一个复数进行移动过后结果怎么推导出来的,一定要去看原码反码补码的关系不然,这个内容很难理解透彻。

运算符

描述

实例

<<=

左移后赋值

C<<=2等于C=C<< 2

>>=

右移后赋值

C>>=2等于C=C>> 2

&=

按位与后赋值

C&=2等于c=C&2

^=

按位异或后赋值

C^=2 等于C=C^2

C^=2 等于C=C^2

按位或后赋值

C|=2 等于c=C|2

说明:这部分的赋值运算涉及到二进制相关知识,其运行的规则和 Java 样。

 (2) 举例1:

比如说:赋值的单词是 assignment,一般简写为 assignoper。

package com. atguigu. chapter03. assignoper

object Demo01 {

def main (args: Array[String]): Unit = {

var num=2   //先将程序初始化;

numくく= 2//向左移动

println("num=" + num)

}

}

运行结果:num = 8

问:为什么结果等于8?

答:相当于给 var num=2连续乘了两个2,整体向左边移动,移动一位乘2,这个速度理论上来说是最快的。

(3) 举例2:

package com. atguigu. chapter03. assignoper

object Demo01 {

def main (args: Array[String]): Unit = {

var num=2   //先将程序初始化;

numくく= 2//向左移动2位,num = 8

num > > = 1//向右移动1位,num = 4

println("num=" + num)

}

}

运行结果:num = 4

注意:如果面试官进行提问的话,一般不会问这种。因为这些程序设计比较简单面试官可能会主要考察求职者的基本功,面试官提问为什么这样做?尤其是在面试官提问的时候往往不会用正数,他可能会提问数字负二负三,问求职者结果是什么如果不上来,面试官会觉得本功比较差。

 

三、案例演示

1、交换两个数的值。经典的赋值运算的值。

var a= 10

var b= 99

printIn("a="+a+"tb="+b)

//交换

val t=a

a= b

b= t

printn("a="+a+"tb="+b)

2、赋值运算符特点

(1) 运算顺序从右往左,一般来说是从左向右,但是赋值是从右向左。

(2) 赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值/字面量 。也有可能是函数,

1举例1:

package com. atguigu. chapter03. assignoper

object Demo01 {

def main (args: Array[String]): Unit = {

var num=2   //先将程序初始化;

numくく= 2//向左移动2位,num = 8

num > > = 1//向右移动1位,num = 4

println("num=" + num)

//在 scala 中支持代码块,返回值

val res = {

if  (num >1) “Hello , ok”else 100

//如果 num 大于1,那么就返回 Hello , ok;如果不大于1,那么就返回100

// 语句的进一步扩展, 返回的可以根据不同的需求返回不同的类型。

}

prinln("res=" + res),

}

}

2举例2:

package com. atguigu. chapter03. assignoper

object Demo01 {

def main (args: Array[String]): Unit = {

var num=2   //先将程序初始化;

numくく= 2//向左移动2位,num = 8

num > > = 1//向右移动1位,num = 4

println("num=" + num)

//在scala中支持代码块,返回值

val res = {

90

}

}

打印出来可以看到,返回值为90

(3) 复合赋值运算符等价于下面的效果比如: a+=3 等价于 a=a+3。这个和 Java 运算是一样的。

 

四、面试题

1、题目:

有两个变量,a 和 b,要求将其进行交换,但是不允许使用中间变量,最终打印结果。

2、代码举例:

var a = 10

var b = 20

a = a + b

b = a – b

//=>(a+b)-b = a//相当于把a给b

a = a – b

//=>(a+b)-a = b//相当于把b给a

3、其他解题方法

可以使用“位运算”来实现题目的解答。 

相关文章
|
3天前
|
数据采集 人工智能 安全
|
12天前
|
云安全 监控 安全
|
4天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1046 151
|
4天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1732 9
|
9天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
682 152
|
11天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
646 12
|
6天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
408 4