Java学习_day03_变量数据类型运算符

文章目录

  • 变量
    • 定义
      • 声明
      • 赋值
      • 使用
      • 简化
  • 数据类型
    • 基本数据类型
      • 整型
      • 浮点型
      • 布尔型
      • 字符型
      • 空型
    • 引用数据类型
    • 数据类型转换
      • 自动类型转换
      • 强制类型转换
  • 运算符
    • 算术运算符
    • 赋值运算符
    • 比较运算符
    • 逻辑运算符
    • 位运算符
    • 条件运算符
    • 一元运算符
    • 二元运算符
    • 三元运算符
    • 运算符优先级

变量

变量类似于数学中的未知数x,是计算机中内存地址的一个别名。这样就可以通过这个变量来操作该内存空间的存储内容了。
在这里插入图片描述

定义

在Java中变量需要先声明再使用。故变量的定义可以分为三步:声明,赋值和使用。

声明

声明就是声明一个变量的数据类型和其名称,格式如下:数据类型 变量名称
数据类型可以指定这个变量所占的内存空间大小。

// 声明一个变量
int age;

赋值

赋值就是为声明的变量,存储一个内容,格式如下:变量名 = 值

// 为变量赋值
age = 12;

使用

当变量完成声明和赋值后,就可以使用了。

// 使用变量
System.out.println("我的年龄是: " + age);

简化

为了提供效率,有时候也可以将声明和赋值合并在一步中,格式如下:数据类型 变量名 = 值
上述例子可以简化为:

int age = 12;
System.out.println("我的年龄是: " + age);

数据类型

Java是强数据类型的语言,变量之间进行运算时,需要变量的数据类型具有兼容性。数据类型通常分为无引用数据类型(基础数据类型)和引用数据类型。

基本数据类型

基础数据类型通常分为数值型,字符型,布尔型和空型。
在这里插入图片描述

整型

整型数据类型用来表示整数,根据不同数据类型所占的内存大小,分为byte,short,int和long这四种数据类型。

数据类型内存大小数据范围案例
byte1字节-2^7 ~ 2^7-11
short2字节-2^15 ~ 2^15 -12
int4字节-2^31 ~ 2^31 -13 默认
long8字节-2^63 ~ 2^63 -13L

浮点型

浮点型表示小数,根据精度不同,分为float和double两种数据类型。

数据类型内存大小数据范围案例
float4字节-3.403E38 ~ 3.403E382.0F
double8字节-1.798E308 ~ 1.798E3082.0D 默认

布尔型

布尔型主要有两个true和false,通常用在条件语句和循环语句中。

字符型

字符型表示单个字符,用单引号包围,例如’a’。内存空间为2个字节。实现原理,底层存储为整型。几个特殊的字符所对应的整型,'A’为65,'a’为97,'0’为48

空型

空型表示一种特殊的类型,通常用在方法中,表示没有返回值。

引用数据类型

引用数据类型有类,接口,枚举,注解和数组等。

数据类型转换

Java中通常当数据类型不一致时,会编译报错。所以在使用过程中需要进行数据类型转换。

自动类型转换

当运算过程中,当操作数的数据类型不一致时,java会先将操作数的数据类型自动转换为统一的数据类型,然后再以统一的数据类型输出结果。
自动类型转换的规律是,内存空间低的数据类型可以自动转换为内存空间高的数据类型。
在这里插入图片描述

强制类型转换

当将内存空间高的数据类型转换为内存空间低的数据类型时,需要进行强制数据类型转换。格式:(数据类型) 变量名
当进行强制数据类型转换时,需要注意的是注意截断问题
在这里插入图片描述
布尔型无法与其他数据类型进行转换。

  1. 表达式类型自动提升的一般原则:表达式结果的类型为操作数中最大的类型
  2. byte类型和short类型进行运算时,系统自动当作int类型处理
  3. char变量可以保存为int常量值,但不能直接保存为int变量值,char类型进行运算时,系统自动当作int类型处理
  4. 自动类型转换的逆过程是将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符号,但可能造成精度降低或溢出,需要格外注意。
  5. 强制转换符号为小括号,优先级非常高,故强制转换表达式结果的类型时,需要将表达式用小括号包起来,提升优先级。
  6. 布尔类型不可以转换为其他的数据类型。
short a = 97;
int b = 200;
a = (short) b;

运算符

运算符就是Java中特殊的符号,表示运算方法。

算术运算符

运算符说明示例
+正号+2
-负号-4
+加法a +b
-减法a-b
*乘法a*b
/除法a/b
%取余a%b
++自增++a,a–
自减–a,a–
+字符串连接“a”+b

特殊运算符的说明

  • 除法,被除数、除数都是整型,则结果为整型,且结果以阶段方式取整。若被除数或除数是浮点型,则结果就是浮点型。都是整型时,除数为0时会产生ArithmeticException异常,浮点型时,除数为0或0.0时,则不会报异常,得到的结果是Infinity。
  • 当除数为0时,取余的结果为NaN
  • ++和–不会改变本身变量的数据类型
  • ++a时,a先自增1,再去变量的值做其他运算
  • a++时,先取变量的值放入操作数栈,随后自增变量增1,然后用自增之前取的值进行运算
  • +作为字符串连接符时,可以和八种基本数据类型变量运算,运算结果为String

赋值运算符

复合赋值运算符是先进行运算然后数据类型转换,最后赋值。注意根据左侧操作数的数据类型,进行数据类型强转

运算符说明示例
=赋值a = 2
+=加等a += 2
-=减等a -= 2
*=乘等a *= 2
/=除等a /= 2
%=取余等a %= 2
&=位与等a &= 2
|=位或等a |= 2
^=位异或等a ^= 2
<<=左移等a <<= 2
>>=右移等a >>= 2
>>>=无符号右移等a >>>= 2

比较运算符

比较时操作数的类型具有一致性或兼容型
比较运算符就是用来比较变量值之间的大小,比较运算符的结果都是布尔型。Java中比较运算符如下表:

运算符说明案例
==相等a == b
!=不等a != b
<小于a < b
>大于a > b
<=小于等于a <= b
>=大于等于a >= b

Java中最对基本数据类型和引用类型,在相等判断上有区别:

  • 如果两个操作数为基本数据类型,则“==”判断的是值是否相等。
  • 如果两个操作数为引用类型,则“==”判断的是两个引用是否指向同一个对象实体或数组实体。

逻辑运算符

逻辑运算符用于表示多个条件之间的相关关系,其结果也为布尔型。两侧的操作数的数据类型为布尔型。
Java中逻辑运算符如下表:

运算符案例说明
&&a && b短路与,a为false时,b不会被执行,直接返回false,效率更高,其他与与运算符一致。
&a & b与,只有a和b都为true时,返回true,否则返回false;a和b都会被执行
||a || b短路或,a为true时,b不会被执行,直接返回true,效率更高。
|a | b或,只有a和b都为false时,返回false,否则返回true;a和b都会被执行
^a ^ b异或,当a和b相同时,返回false;不同时返回true
!!a非,返回与a相反的结果

位运算符

位运算符的操作数的数据类型位数值类型。
位运算符就是操作变量的二进制码,效率比较高,但是比较抽象难懂。因为它的操作都是针对变量在内存中的补码形式进行。

运算符案例说明
<<a << 2将a的二进制补码左移2位,移出的低位以0补充。一定范围内,左移几位相当于乘以2的几次方
>>a>>2将a的二进制补码右移2位,如果a的高位为0,则移出的高位以0补充;如果移出的高位为1,则移出的高位以1补充。
>>>a >>> 2将a的二进制补码右移2位,移出的高位以0补充
&6 & 2将6和2的二进制补码,按位进行与操作,返回执行后的数值
|6 | 2将6和2的二进制补码,按位进行或操作,返回执行后的数值
^6 ^2将6和2的二进制补码,按位进行异或操作,返回执行后的数值
~~6将6的二进制补码,按位取反,并返回执行后的数值

通过操作数的类型来判断是位运算符还是逻辑运算符

条件运算符

条件运算符是唯一的三元运算符,可以实现简单的条件判断。
语法结构为:条件表达式?表达式1:表达式2

  • 当条件表达式结果为true时,返回表达式1的结果
  • 当条件表达式结果为false时,返回表达式2的结果
  • 表达式1和表达式2具有相同的数据类型

一元运算符

一元运算符有四个,分别为++, --, !和~。

二元运算符

除了一元和三元运算符外,剩下的都是二元运算符。

三元运算符

Java中只有一个三元运算符,其语法为:条件表达式?值1:值2,当条件表达式为true时,返回值1,否则返回值2

运算符优先级

和四则运算一样,当表达式中出现多个运算符时,计算器根据优先级,决定先执行哪个部分的运算。优先级越高,越优先执行。
通常利用小括号来实现优先级的提高。

优先级运算符符号
1++, --, ~, !
2*, /, %
3+, -
4<<, >>, >>>
5<, >, <=, >=, instanceof
6==, !=
7&
8^
9|
10&&
11||
12?:
13=, *=, /=, %=
14+=, -=, <<=, >>=
15>>>=, &=, ^=, |=

在做运算符相关的题时记住已经几点就可以确保无错:

  • 操作数的类型统一性
  • 优先级相关的可以参考后缀表达式来理解

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云服务器搭建Hadoop分布式

文章目录 1.服务器配置2.Java环境3. 安装Hadoop4. 集群配置5. 编写集群的启动脚本 1.服务器配置 服务器主机名配置115.157.197.82s110核115.157.197.84s210核115.157.197.109s310核115.157.197.31s410核115.157.197.60gracal10核 所有的软件安装在/opt/module下&#xff0c;软…

光学知识整理-偏振光

偏振光 目录基础概念基础概念的补充平面偏振光&#xff08;线偏振光&#xff09;部分偏振光圆偏振光椭圆偏振光菲涅耳公式相位关系 反射折射所引起的偏振态的改变斯托克斯倒逆关系重要参数 目录 基础概念 光是横波&#xff1a;光是电磁波,其电场分量(电场强度)E、磁场分量(磁…

biquad滤波器的设计

1.介绍 Biquad滤波器是一种常用的数字滤波器结构&#xff0c;它使用二阶差分方程&#xff08;difference equation&#xff09;来实现滤波功能。它得名于其包含两个极点&#xff08;poles&#xff09;和一个零点&#xff08;zero&#xff09;。 双二阶滤波器(biquad)是最常用…

当我让文心一言写个代码来庆祝1024程序员节,它写的代码是……

先让它写个自我介绍吧~ 大家好&#xff0c;我是一个人工智能语言模型&#xff0c;我的中文名是文心一言&#xff0c;英文名是ERNIE Bot。我可以协助您完成范围广泛的任务并提供有关各种主题的信息&#xff0c;比如回答问题&#xff0c;提供定义和解释及建议。如果您有任何问题…

改进YOLOv5 | 头部解耦 | 将YOLOX解耦头添加到YOLOv5 | 涨点杀器

改进YOLOv5 | 头部解耦 | 将YOLOX解耦头添加到YOLOv5 论文地址:https://arxiv.org/abs/2107.08430 文章目录 改进YOLOv5 | 头部解耦 | 将YOLOX解耦头添加到YOLOv51. 解耦头原理2. 解耦头对收敛速度的影响3. 解耦头对精度的影响4. 代码改进方式第一步第二步第三步第四步第五步本…

Kotlin笔记(六):泛型的高级特性

前面学习了Kotlin中的泛型的基本用法,跟Java中的泛型大致相同&#xff0c;Kotlin在泛型方面还提供了不少特有的功能&#xff0c;掌握了这些功能&#xff0c;你将可以更好玩转Kotlin&#xff0c;同时还能实现一些不可思议的语法特性&#xff0c;那么我们自然不能错过这部分内容了…

Wordpress - Xydown独立下载页面插件

Wordpress - Xydown独立下载页面插件&#xff1b; 1.使用ftp将demo.php和download.php上传到网站根目录&#xff08;两个文件中设计网站信息的代码可根据实际情况修改为自己的信息&#xff09; 使用ftp将demo.php和download.php上传到网站根目录&#xff08;两个文件中设计…

[ Windows ] ping IP + Port 测试 ip 和 端口是否通畅

开发过程中经常会黑窗口中手动测试一下计划请求的目标ip和端口是否通畅&#xff0c;测试方式如下&#xff1a; 一、单纯测试ip是否能够 ping 通&#xff0c;这个比较熟悉了&#xff0c;运行 cmd 打开黑窗口 输入如下指令&#xff0c;能够如下提示信息&#xff0c;表示端口是通…

【AIGC核心技术剖析】用于高效 3D 内容创建生成(从单视图图像生成高质量的纹理网格)

3D 内容创建的最新进展主要利用通过分数蒸馏抽样 &#xff08;SDS&#xff09; 生成的基于优化的 3D 生成。尽管已经显示出有希望的结果&#xff0c;但这些方法通常存在每个样本优化缓慢的问题&#xff0c;限制了它们的实际应用。在本文中&#xff0c;我们提出了DreamGaussian&…

Node.js、Vue的安装与使用(Linux OS)

Vue的安装与使用&#xff08;Linux OS&#xff09; Node.js的安装Vue的安装Vue的使用 操作系统&#xff1a;Ubuntu 20.04 LTS Node.js的安装 安装Node.js Node.js官方下载地址 1.选择合适的系统架构&#xff08;可通过uname -m查看&#xff09;版本安装 2.下载文件为tar.xz格…

微信小程序之个人中心授权登录

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《Spring与Mybatis集成整合》《Vue.js使用》 ⛺️ 越努力 &#xff0c;越幸运。 1.了解微信授权登录 微信登录官网&#xff1a; 小程序登录https://developers.weixin.qq.com/miniprogram/d…

SystemVerilog Assertions应用指南 Chapter 1.17使用参数的SVA检验器

1.17使用参数的SVA检验器 SVA允许像 Verilog那样在检验器中使用参数( parameter)&#xff0c;这为创建可重用的属性提供了很大的灵活性。比如,两个信号间的延迟信息可以在检验器中用参数表示,那么这种检验器就可以在设计只有时序关系不同的情况中重用。例子1.2显示了个带延迟默…

人大金仓与哪吒科技达成战略合作,加快推动智慧港口建设

近日&#xff0c;人大金仓与哪吒港航智慧科技&#xff08;上海&#xff09;有限公司&#xff08;以下简称“哪吒科技”&#xff09;达成战略合作。双方旨在共享优势资源&#xff0c;联合为港口企业转型升级提供完备的技术支撑与行业解决方案。人大金仓总裁杜胜、哪吒科技总经理…

基于FPGA的图像拉普拉斯变换实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a vivado2019.2 3.部分核心程序 timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 202…

cdm解决‘ping‘ 或者nslookup不是内部或外部命令,也不是可运行的程序或批处理文件的问题

当我们在执行cmd时&#xff0c;会出现不是内部或外部命令&#xff0c;也不是可运行的程序的提示。 搜索环境变量 点开高级 >> 环境变量 打开Path&#xff0c;看是否在Path变量值中存在以下项目&#xff1a; %SystemRoot%/system32; %SystemRoot%; %SystemRoot%/Syste…

Opencv之RANSAC算法用于直线拟合及特征点集匹配详解

Opencv之RANSAC算法用于直线拟合及特征点集匹配详解 讲述Ransac拟合与最小二乘在曲线拟合上的优缺点 讲述在进行特征点匹配时&#xff0c;最近邻匹配与Ransac匹配的不同之处 另外&#xff0c;Ransac也被用于椭圆拟合、变换矩阵求解等 1. 直线拟合 1.1 原理 RANSAC(RANdom …

Mysql中的RR 隔离级别,到底有没有解决幻读问题

Mysql 中的 RR 事务隔离级别&#xff0c;在特定的情况下会出现幻读的问题。所谓的幻读&#xff0c;表示在同一个事务中的两次相同条件的查询得到的数据条数不一样。 在 RR 级别下&#xff0c;什么情况下会出现幻读 这样一种情况&#xff0c;在事务 1 里面通过 update 语句触发当…

【CGSSA-BP预测】基于混合混沌-高斯变异-麻雀算法优化BP神经网络回归预测研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

手机拍照转机器人末端坐标(九点标定法)

1.打印标定纸&#xff0c;随机九个点 2.让UR机器人末端分别走到P1-P9九个点 在图示位置读取九个点的X&#xff0c;Y坐标 3.手机拍照&#xff08;固定点&#xff09; 测试可以随机拍一张&#xff0c;实用的话需要固定手机的拍照位置&#xff0c;得到的图片如下&#xff1a; 4.…