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,推荐使用条件运算符。因为执行效率稍高
相关推荐
努力的小郑21 小时前
SQL 性能避坑:为什么阿里强制禁用 ORDER BY RAND()?
java·mysql·性能优化
木木木一21 小时前
Rust学习记录--C4 Rust所有权
开发语言·学习·rust
悟能不能悟21 小时前
前端调用a服务,a服务将请求用controller+openfeign调用b服务,接口参数中有header参数和body,a服务应该怎么设置,才简单
java·开发语言·前端
2501_9418859621 小时前
从接口演化到系统自治的互联网工程语法重构与多语言实践思路拆解分享文
java·开发语言
yong999021 小时前
MATLAB自回归预测模型实现方案
开发语言·matlab·回归
浪客川21 小时前
【百例RUST - 004】函数使用
服务器·开发语言·rust
程序猿(雷霆之王)21 小时前
C++11——线程库
开发语言·c++
天天睡大觉21 小时前
Python学习1
开发语言·python·学习
2501_9418053121 小时前
在阿姆斯特丹智能港口场景中构建集装箱实时调度与高并发物流数据分析平台的工程设计实践经验分享
java·大数据·算法