Java 变量与运算符

初识变量

  • 内存中的一个存储区域,该区域的数据可以在同一类型范围内不断变化
  • 变量的构成包含三个要素:数据类型、变量名、存储的值
  • Java 中变量声明的格式:数据类型 变量名 = 变量值

变量的数据类型

Java中变量的数据类型分为两大类:

  • 基本数据类型 :包括 整数类型、浮点数类型、字符类型、布尔类型
  • 引用数据类型 :包括数组、 类、接口、枚举、注解、记录

基本数据类型转换规则

在Java程序中,不同的基本数据类型(只有7种,不包含 boolean 类型)变量的值经常需要进行相互转换

转换的方式有两种:自动类型提升和强制类型转换

自动类型提升

规则:将取值范围小(或容量小)的类型自动提升为取值范围大(或容量大)的类型

基本数据类型的转换规则如图所示:

强制类型转换

规则:将取值范围大(或容量大)的类型强制转换成取值范围小(或容量小)的类型

自动类型提升是Java自动执行的,而强制类型转换是自动类型提升的逆运算,需要我们自己手动执行

转换格式:数据类型1 变量名 = (数据类型1)被强转数据值

基本数据类型与 String 的运算

  1. 任意八种基本数据类型的数据与 String 类型只能进行连接 + 运算,且结果一定也是 String 类型
  2. String 类型不能通过强制类型 () 转换为其他的类型

运算符

运算符的分类:

  • 按照功能分为:算术运算符、赋值运算符、比较(或关系)运算符、逻辑运算符、位运算符、条件运算符、Lambda 运算符

    分类 运算符
    算术运算符(7个) +、-、*、/、%、++、--
    赋值运算符(12个) =、+=、-=、*=、/=、%=、>>=、<<=、>>>=、&=、|=、^=等
    比较(或关系)运算符(6个) >、>=、<、<=、==、!=
    逻辑运算符(6个) &、|、^、!、&&、||
    位运算符(7个) &、|、^、~、<<、>>、>>>
    条件运算符(1个) (条件表达式)?结果1:结果2
    Lambda运算符(1个) ->
  • 按照操作数个数分为:一元运算符(单目运算符)、二元运算符(双目运算符)、三元运算符 (三目运算符)

    分类 运算符
    一元运算符(单目运算符) 正号(+)、负号(-)、++、--、!、~
    二元运算符(双目运算符) 除了一元和三元运算符剩下的都是二元运算符
    三元运算符 (三目运算符) (条件表达式)?结果1:结果2

算术运算符

  • + 号两种用法
    • 第一种:对于 + 两边都是数值的话,+ 就是加法的意思
    • 第二种:对于 + 两边至少有一边是字符串的话,+ 就是拼接的意思

比较运算符

  • instanceof 后面在面向对象具体学习

逻辑运算符

  • 区分"&"和"&&":

    • 相同点:如果符号左边是true,则二者都执行符号右边的操作
    • 不同点:
      • & : 如果符号左边是false,则继续执行符号右边的操作
      • && :如果符号左边是false,则不再继续执行符号右边的操作

    建议:开发中,推荐使用 &&

  • 区分"|"和"||":

    • 相同点:如果符号左边是false,则二者都执行符号右边的操作
    • 不同点:
      • | : 如果符号左边是true,则继续执行符号右边的操作
      • || :如果符号左边是true,则不再继续执行符号右边的操作

    建议:开发中,推荐使用 ||

条件运算符

格式:(条件表达式)? 表达式1:表达式2

  • 与if-else的转换关系
    凡是可以使用条件运算符的地方,都可以改写为if-else结构
    开发中,如果既可以使用条件运算符,又可以使用if-else,推荐使用条件运算符。因为执行效率稍高
相关推荐
古法老登瞎折腾1 小时前
大数据智能运维实战(十一):运维 MCP 的工程化——权限、限流、审计与错误处理
java·大数据·运维·spring ai·mcp
学逆向的1 小时前
C 堆区内存管理
c语言·开发语言·网络安全
huoyueyi1 小时前
《融天AI-APP从0到1开发实录》
开发语言·lua
智能运维指南2 小时前
研制过程“两张皮“怎么破:研制一体化支撑平台的定位、能力边界与落地前提
java·前端·人工智能·嘉为蓝鲸
yz_aiks3 小时前
Spring AI 2.1 ChatMemory 已过时用什么替代:迁移到 Session Memory 实战(JDBC 存储与会话压缩)
java·spring boot·大模型·ai agent·spring ai
金銀銅鐵3 小时前
[Java] 用 GUI 展示 EnumMap 增删键值对时的内部变化
java·后端·ai编程
学长毕设3 小时前
基于SpringBoot的上门洗车服务系统设计与实现
java·spring boot·后端
jason成都3 小时前
RTKLIB-Java 多基线联合RTK:FIX率从0%到91.5%的三层根因修复
java·gnss·rtklib·rtklib_java
OpenAnolis小助手3 小时前
PHP 两个严重漏洞曝光,龙蜥社区 24 小时完成 3 版本修复
开发语言·操作系统·php·龙蜥社区
鱼宵3 小时前
Stream 终端操作一次讲透:collect、count、reduce 怎么选
java·stream·终端操作