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

news2025/2/22 14:19:12

文章目录

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

变量

变量类似于数学中的未知数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.coloradmin.cn/o/1119909.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

毅速丨3D打印结合拓扑优化 让轻量化制造更容易

制造轻量化对于提高能源利用效率、提高产品性能和减少环境影响&#xff0c;推动制造业的绿色化、高质量发展具有重要的促进作用。 轻量化设计对许多领域都有着重要影响&#xff0c;尤其是那些需要降低能源消耗、提高运输效率或减少对环境影响的领域。如航空航天&#xff0c;轻量…

Qt学习:使用OpenGL绘制3D图形

文章目录 前言一、Qt下使用OpenGL绘制图形介绍二、示例完整代码总结 前言 文章中引用的内容均来自这本书中的原文&#xff1a;【Qt Creator快速入门_霍亚飞编著】&#xff0c;本文的示例也是在书中代码的基础上进行编写的&#xff08;其中部分代码使用原文编译不过&#xff0c…

基于协作搜索优化的BP神经网络(分类应用) - 附代码

基于协作搜索优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于协作搜索优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.协作搜索优化BP神经网络3.1 BP神经网络参数设置3.2 协作搜索算法应用 4.测试结果…

自然语言处理---文本预处理概述

自然语言处理&#xff08;Natural Language Processing&#xff0c;简称NLP&#xff09;是计算机科学与语言学中关注于计算机与人类语言间转换的领域。其主要应用于&#xff1a;语音助手、机器翻译、搜索引擎、智能问答等。 文本预处理概述 文本语料在输送给模型前一般需要一…

【iOS】AFNetworking的基本使用

使用AFNetworking框架需要Cocoapods进行管理 所以要预先配置好Cocoapods&#xff0c;具体步骤见这篇文章&#xff1a;【iOS】CocoaPods的安装及其使用方法 简介 AFNetworking是一款cocoapods的网络请求库&#xff0c;在Foundation框架基础上&#xff0c;提供了一套简单易用的…

基于厨师优化的BP神经网络(分类应用) - 附代码

基于厨师优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于厨师优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.厨师优化BP神经网络3.1 BP神经网络参数设置3.2 厨师算法应用 4.测试结果&#xff1a;5.M…

C#,数值计算——分类与推理Phylo_clc的计算方法与源程序

1 文本格式 using System; using System.Collections.Generic; namespace Legalsoft.Truffer { public class Phylo_clc : Phylagglom { public override void premin(double[,] d, int[] nextp) { } public override double dminfn(double[…

Studio One 6.5新版本功能讲解及一键安装下载教程

Studio One 6.5 发布&#xff1a;整合 Dolby Atmos 全景声&#xff0c;跟 Bitwig 联合推出开放的 DAWproject 格式&#xff0c;支持 Linux&#xff01; PreSonus 的“.5”更新通常都有比较大的变化&#xff0c;这次也不例外。Studio One 6.5 增加了一种全新的工作方式&#xff…

基于人工蜂鸟优化的BP神经网络(分类应用) - 附代码

基于人工蜂鸟优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于人工蜂鸟优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.人工蜂鸟优化BP神经网络3.1 BP神经网络参数设置3.2 人工蜂鸟算法应用 4.测试结果…

【计网 EMail】计算机网络 EMail协议详解:中科大郑烇老师笔记 (五)

目录 0 引言1 电子邮件EMail1.1 组成1.2 SMTP协议1.3 案例&#xff1a;Alice给Bob发送报文1.4 SMTP总结1.5 邮件报文格式1.6 POP3协议和IMAP协议 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;计算机四大基础专栏&#x1f4dc; 其他章节&#xf…

【RocketMQ系列九】SpringCloudStream整合RocketMQ

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精…

2023-10-15 LeetCode每日一题(只出现一次的数字)

2023-10-15每日一题 一、题目编号 137. 只出现一次的数字 II二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数数组 nums &#xff0c;除某个元素仅出现 一次 外&#xff0c;其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并…

MySQL数据库查询实战操作

前置条件: 创建库:MySQL基本操作之创建数据库-CSDN博客 创建表:MySQL基本操作之创建数据表-CSDN博客 目录 常规查询常用函数union查询一、常规查询 1、查询所有姓名以 "张" 开头的学生: SELECT * FROM student WHERE name LIKE 张%; 这条语句使用 LIKE 运算…

Linux磁盘扩容(加硬盘法)

目录 ​编辑 1、虚拟机操作 2、查看当前分区 3、更新并重启虚拟机 4、对新磁盘分区 5、对新分区进行格式化 6、进行文件系统扩展 1、虚拟机操作 点击添加 2、查看当前分区 fdisk -l3、更新并重启虚拟机 shutdown -r now 然后虚拟机会重启 在此查看当前分区 fdisk -l…

Pycharm设置项目的python环境与界面上terminal的shell运行环境

1、首先打开左上角的file–>settings 2、设置项目运行环境如下所示&#xff1a; 3、设置ternimal的shell执行环境如下所示&#xff1a;

【试题000】C语言整型常量求平方根Sqrt函数

题目&#xff1a;设float x9&#xff0c;y2;&#xff0c;表达式(int) (sqrt (x) /y) 的值是&#xff1f; 代码解析&#xff1a;↓ #include <studio.h> #include <math.h> void main() {float x 9, y 2;printf("%d\n", (int)(sqrt(x) / y));//结果1/…

【解锁未来】探索Web3的无限可能性-01

文章目录 前言什么是Web3&#xff1f; 前言 还记得你第一次听说比特币吗&#xff1f;也许那只是一个关于新技术将改变一切的微弱嗡嗡声。也许你会有一种 "FOMO "的感觉&#xff0c;因为那些早早入场的人突然积累了一大笔财富–尽管你并不清楚这些 "钱 "可…

解决windows10、windows11故障:Microsoft-Windows-Kernel-Processor-Power 事件ID:37

一、现象 windows系统日志中出现大量的“Microsoft-Windows-Kernel-Processor-Power”错误。 经过分析&#xff1a;原因是windows配置的【使用电池】默认值是5%&#xff0c;按5%计算出来的功率与CPU的最小功率不兼容&#xff0c;如&#xff1a;本机CPU最高功率是25W&#xff0…

【Linux】文件IO基础知识——下篇, 什么是软硬链接?如何用别人的动静态库??

目录 一&#xff0c;stderr 2. errno全局变量 二&#xff0c;文件系统 1. 软链接 2. 硬链接 三&#xff0c;静态库 1. 制作静态库 2. 自动化生成静态库 & 自动发布库与头文件 3. 如何使用第三方库 法&#xff08;一&#xff09;&#xff1a;修改系统文件库 …

QT学习day5(QT实现TCP协议)

作业&#xff1a;利用TCP客户端和服务器实现网络聊天室&#xff08;简单版QQ&#xff09; 1.服务器代码 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QTcpServer> //服务器头文件 #include<QTcpSocket> …