当前位置: 首页 > news >正文

Java赋值运算符的使用技巧,你Get了吗?

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

前言

  在Java开发中,赋值运算符是一种常用的运算符,用于给变量赋值。在实际工作中,我们经常需要对变量进行赋值操作,因此掌握赋值运算符的使用技巧是非常重要的。

  本文将对Java赋值运算符进行详细的解析,包括其基本语法,应用场景案例,优缺点分析等。希望能够帮助读者更好地掌握Java赋值运算符的使用方法。

摘要

  赋值运算符是一种常用的运算符,用于给变量赋值。在Java中,赋值运算符有以下几种:

  • =
  • +=
  • -=
  • *=
  • /=
  • %=
  • <<=
  • >>=
  • &=
  • ^=
  • |=

  本文将对这些运算符进行详细的讲解,并结合源代码解析和应用场景案例,帮助读者更好地理解和掌握这些赋值运算符的使用方法。

简介

  赋值运算符是将一个值赋给变量或表达式的运算符。在Java中,赋值运算符也是一种二元运算符,即它需要两个操作数:左操作数和右操作数。

  赋值运算符的语法非常简单,如下所示:

左操作数 = 右操作数;

  其中,左操作数通常是一个变量或表达式,右操作数可以是一个常量、变量或表达式。

  除了基本的赋值运算符“=”之外,Java还提供了一系列复合赋值运算符,如“+=”、“-=”、“*=”、“/=”等。这些运算符可以将右操作数的值与左操作数进行运算,并将结果赋给左操作数。例如,a += b 就等价于 a = a + b。

源代码解析

下面我们来看一个简单的示例,演示Java赋值运算符的使用方法:

public class AssignmentOperatorsDemo {public static void main(String[] args) {int a = 20;int b = 10;// 赋值运算符a = b;// 复合赋值运算符a += b; // 等价于 a = a + b;a -= b; // 等价于 a = a - b;a *= b; // 等价于 a = a * b;a /= b; // 等价于 a = a / b;a %= b; // 等价于 a = a % b;a <<= b; // 等价于 a = a << b;a >>= b; // 等价于 a = a >> b;a &= b; // 等价于 a = a & b;a ^= b; // 等价于 a = a ^ b;a |= b; // 等价于 a = a | b;System.out.println("a = " + a); // 输出 a = 10}
}

  在上面的示例代码中,我们定义了两个变量 a 和 b,并将 a 赋值为 20,b 赋值为 10。然后,使用赋值运算符将 b 的值赋给 a。最后,我们使用一系列复合赋值运算符对 a 进行操作,并将结果输出到控制台。

  需要注意的是,Java中的赋值运算符和C++中的赋值运算符是不同的。在Java中,赋值运算符被设计为只能用于布尔、整数和字符等基本数据类型,而不能用于自定义的数据类型。C++则没有这种限制。

代码解析:

  这段代码演示了Java中的赋值运算符和复合赋值运算符。在赋值运算符中,变量a被赋值为变量b的值,因此a的值变为了10。在复合赋值运算符中,变量a和变量b进行了不同的运算操作后,将结果赋值给变量a。

  例如,a += b等价于a = a + b,因此变量a的值变为了20。接下来,a -= b等价于a = a - b,因此变量a的值变为了10。同样的,a *= b等价于a = a * b,a /= b等价于a = a / b,a %= b等价于a = a % b,a <<= b等价于a = a << b,a >>= b等价于a = a >> b,a &= b等价于a = a & b,a ^= b等价于a = a ^ b,a |= b等价于a = a | b。

  最后,代码输出变量a的值为10。

应用场景案例

下面我们来看几个实际的应用场景,演示Java赋值运算符的使用:

圆形的面积计算

public class CircleAreaDemo {public static void main(String[] args) {double radius = 5.0; // 圆的半径double PI = 3.14159; // 圆周率double area = PI * radius * radius; // 计算圆的面积System.out.println("圆的面积是:" + area); // 输出圆的面积}
}

  在上面的示例代码中,我们定义了一个变量 radius 表示圆的半径,并将其赋值为 5.0。然后,定义了一个常量 PI 表示圆周率,并将其赋值为 3.14159。最后,使用赋值运算符将计算出的圆的面积赋给变量 area,并将结果输出到控制台。

代码解析:

  这段代码定义了一个名为CircleAreaDemo的公共类(public class),其中包含了一个名为main的公共静态方法(public static void main(String[] args))。

  在main方法中,首先声明了一个double类型的变量radius,赋值为5.0,表示圆的半径。然后声明了一个double类型的常量PI,赋值为3.14159,表示圆周率。

  接下来,通过计算公式PI * radius * radius,计算出了圆的面积,将结果存储在变量area中。

  最后,使用System.out.println打印输出“圆的面积是:”以及计算得出的圆的面积area。

字符串操作

public class StringOperationDemo {public static void main(String[] args) {String str1 = "Hello";String str2 = " World";// 字符串拼接String str3 = str1 + str2; // 等价于 str1 = str1.concat(str2);// 大小写转换String str4 = str1.toUpperCase(); // 将字符串转为大写String str5 = str2.toLowerCase(); // 将字符串转为小写System.out.println(str3); // 输出 Hello WorldSystem.out.println(str4); // 输出 HELLOSystem.out.println(str5); // 输出  world}
}

  在上面的示例代码中,我们定义了两个字符串变量 str1 和 str2,并将其分别赋值为“Hello”和“ World”。然后,使用赋值运算符将拼接后的字符串赋给变量 str3;使用字符串的toUpperCase()和toLowerCase()方法将字符串转为大写和小写,并分别将结果赋给变量 str4 和 str5。最后,将结果输出到控制台。

代码解析:

  该程序演示了Java中常用的字符串操作,包括字符串拼接和大小写转换。具体分析如下:

  • 第1-2行:定义了两个字符串变量 str1 和 str2,分别赋值为 “Hello” 和 " World"。
  • 第5行:使用字符串拼接操作符(+)将 str1 和 str2 进行拼接,得到新的字符串 str3。
  • 第6行:调用字符串的 concat() 方法将 str2 连接到 str1 后面,再赋值给 str1,结果与第5行相同,即得到字符串 str3。
  • 第9行:调用字符串的 toUpperCase() 方法,将 str1 转换成大写字母形式,结果为字符串 “HELLO”。
  • 第10行:调用字符串的 toLowerCase() 方法,将 str2 转换成小写字母形式,结果为字符串 " world"。
  • 第13-15行:将字符串 str3、str4 和 str5 依次输出。

程序输出结果为:

Hello World

HELLO

world

优缺点分析

  赋值运算符是一种非常常用的运算符,它可以快速、方便地对变量进行赋值操作。使用赋值运算符可以让Java程序更加简洁、高效,提高代码的可读性和可维护性。

  然而,赋值运算符的不当使用也会导致一些潜在的问题。例如,如果使用复合赋值运算符,可能会导致代码的可读性降低;如果使用赋值运算符时,左右操作数的类型不一致,可能会导致类型转换错误,从而引发异常。因此,在使用赋值运算符时,需要谨慎使用,并严格遵守Java规范。

类代码方法介绍

  本文主要介绍了Java赋值运算符的基本语法、应用场景案例、优缺点等方面的内容。下面是本文所涉及到的类的主要方法和属性介绍:

  • 赋值运算符 “=”
    • 语法:左操作数 = 右操作数;
  • 复合赋值运算符
    • 可选的运算符:+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=
    • 语法:左操作数 运算符 右操作数;
  • 常用的字符串操作方法
    • 字符串拼接:str1 + str2 或 str1.concat(str2)
    • 大小写转换:str.toUpperCase() 或 str.toLowerCase()

测试用例

下面是本文所涉及到的类的测试用例,以main函数写法为准:

测试代码演示

package com.example.javase.se.operators;/*** @Author ms* @Date 2023-11-07 22:42*/
public class AssignmentOperatorsDemo {public static void main(String[] args) {int a = 10;int b = 20;// 赋值运算符a = b;System.out.println("a = " + a); // 输出 a = 20// 复合赋值运算符a += b; // 等价于 a = a + b;System.out.println("a = " + a); // 输出 a = 30// 字符串拼接String str1 = "Hello";String str2 = " World";String str3 = str1 + str2; // 等价于 str1 = str1.concat(str2);System.out.println(str3); // 输出 Hello World// 大小写转换String str4 = str1.toUpperCase(); // 将字符串转为大写String str5 = str2.toLowerCase(); // 将字符串转为小写System.out.println(str4); // 输出 HELLOSystem.out.println(str5); // 输出  world}
}

测试结果

  根据如上测试用例,本地测试结果如下,仅供参考,你们也可以自行修改测试用例或者添加更多的测试数据或测试方法,进行熟练学习以此加深理解。

在这里插入图片描述

测试代码分析

  根据如上测试用例,在此我给大家进行深入详细的解读一下测试代码,以便于更多的同学能够理解并加深印象。

  如上测试用例代码演示了Java中的赋值运算符、复合赋值运算符、字符串拼接和大小写转换。

  首先定义了两个整型变量a和b,并赋值为10和20。使用赋值运算符将b的值赋给a,因此a的值变为20。然后使用复合赋值运算符将a的值加上b的值,并将结果赋给a,因此a的值变为30。

  接着定义了三个字符串变量str1、str2和str3,分别为“Hello”、“ World”和空字符串。使用字符串拼接将str1和str2拼接成一个新的字符串,并将结果赋给str3。输出str3的结果为“Hello World”。

  最后使用字符串的大小写转换方法toUpperCase()和toLowerCase(),将str1和str2分别转换为大写和小写,并输出结果。

  因此,该代码演示了Java中常见的赋值运算符和字符串操作方法。

总结

赋值运算符是一种非常常用的运算符,它可以方便地对变量进行赋值操作。使用赋值运算符可以提高Java程序的简洁性、高效性,从而提高代码的可读性和可维护性。

在使用赋值运算符时,需要注意以下几点:

  • 赋值运算符的基本语法是“左操作数 = 右操作数;”
  • 复合赋值运算符可以将右操作数的值与左操作数进行运算,并将结果赋给左操作数;
  • 赋值运算符只能用于基本数据类型,不能用于自定义的数据类型;
  • 在使用复合赋值运算符时,需要注意类型转换问题。

希望本文的内容能够对Java开发者掌握赋值运算符的使用技巧有所帮助。

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

相关文章:

  • 【Unity Shader入门精要 第12章】屏幕后处理效果(二)
  • Attention Is All You Need--论文笔记
  • C++ Primer Chapter 1 Getting Started
  • OceanBase开发者大会实录-李楠:4条路径+6大方案,关键业务系统数据库的升级之路
  • 多线程知识-11
  • 微信小程序登录接口
  • Prop 和 State 有什么区别?
  • AGP8+ android.useNewApkCreator‘ is deprecated 打包失败
  • Java进阶学习笔记36——算法
  • 浅谈IDEA中项目如何进行热部署
  • 实战16:基于apriori关联挖掘FP-growth算法挖掘关联规则的手机销售分析-代码+数据
  • 秦岚:结了婚就不要离婚了
  • idea项目maven下载依赖报错
  • YOLOv10:实时端到端目标检测的新突破
  • Springboot vue elementui 前后端分离 事故灾害案例管理系统
  • 【笔记】你不知道的JS读书笔记——Promise
  • 2019年如何成为全栈工程师?
  • canvas 高仿 Apple Watch 表盘
  • Invalidate和postInvalidate的区别
  • JavaScript函数式编程(一)
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • MySQL用户中的%到底包不包括localhost?
  • PAT A1092
  • Python语法速览与机器学习开发环境搭建
  • REST架构的思考
  • tensorflow学习笔记3——MNIST应用篇
  • Tornado学习笔记(1)
  • Zepto.js源码学习之二
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 思维导图—你不知道的JavaScript中卷
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 移动端高清、多屏适配方案
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • #android不同版本废弃api,新api。
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #数据结构 笔记三
  • (16)Reactor的测试——响应式Spring的道法术器
  • (windows2012共享文件夹和防火墙设置
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (理论篇)httpmoudle和httphandler一览
  • (一) springboot详细介绍
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • **PHP二维数组遍历时同时赋值
  • .net core docker部署教程和细节问题
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .Net的DataSet直接与SQL2005交互
  • .net对接阿里云CSB服务