java源码之变量和运算符

1、源码使用背景

2、基础讲解

1、数据类型变量
数据类型包括基本数据类型与引用数据类型。

 基本数据类型:整数类型、浮点类型、字符类型与布尔类型

(1)整数类型:byte(1字节)、short(2字节)、int(4字节)、Long(8字节)

(2)浮点类型:float(单精度浮点数,4字节)、double(双精度浮点数,8字节)

(3)字符类型:char(2字节)

(4)布尔类型:boolean(“true"或"false”)

注意点:

整型默认为int型,浮点型默认为double
整型变量long的初始值后加L或者l,推荐加L
浮点变量float的初始值后加F或者f,推荐加F
布尔类型的变量boolean只有两种取值, true 表示真, false 表示假

2、数据类型转换
Java数据类型转换包括:自动类型转换和强制类型转换

(1)自动类型转换
特点:数据范围小的转为数据范围大的时会自动进行
(2)强制类型转换

特点:

当进行操作时,代码需要进过一定操作才能转换,强制类型转换不一定能成功
不相干类型不能转换,例如:int不能与boolean进行强制类型转换

结论:

对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算
不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的。
不相干类型不能转换,例如:int不能与boolean进行强制类型转换
包装类
int的包装类型为 Integer ,char的包装类型为Character ,其他数据类型的包装类型为首字母大写

二、Java运算符
1、算术符
1.1 基本四则运算符:加减乘除模(+ - * / %
int a = 3;
int b = 2;
// 在数学中应该是1.5 但是在Java中输出结果为1 会向下取整,即小数点之后全部舍弃掉了
System.out.println(a / b);

// 如果要得到数学中的结果,可以使用如下方式
double d = a*1.0 / b;
System.out.println(d);
1.2 增量运算符 += -= *= %=
int a = 1;
a += 2; // 相当于 a = a + 2
System.out.println(a); // 输出3
a -= 1; // 相当于 a = a - 1
System.out.println(a); // 输出2
a *= 3; // 相当于 a = a * 3
System.out.println(a); // 输出6
a /= 3; // 相当于 a = a / 3
1.3 自增/自减运算符 ++ \ –
(1) 如果单独使用,【前置++】和【后置++】没有任何区别
(2)如果混合使用,【前置++】先+1,然后使用变量+1之后的值,【后置++】先使用变量原来的值,表达式 结束时给变量+1
只有变量才能使用自增 /自减运算符,常量不能使用,因为常量不允许被修改
混合使用 口诀:

    ++在前,先自增 后赋值    (++在后,先赋值  后自增)--在前,先自减  后赋值

1.4 关系运算符
关系运算符主要有六个: == != < > <= >= ,其计算结果是 true 或者 false 。
int a = 10;
int b = 20;
// 注意:在Java中 = 表示赋值,要与数学中的含义区分
// 在Java中 == 表示相等
System.out.println(a == b); // false
System.out.println(a != b); // true
System.out.println(a < b); // true
System.out.println(a > b); // false
System.out.println(a <= b); // true
System.out.println(a >= b); // false
1.5 逻辑运算符
逻辑运算符主要有三个: && || ! ,运算结果都是 boolean类型。
1.5.1 逻辑与 &&
语法规则:表达式1 && 表达式2,左右表达式必须是boolean类型的结果。

1.5.2 逻辑 ||
语法规则:表达式1 || 表达式2,左右表达式必须是boolean类型的结果。
表达式1 表达式2 结果
真 真 真
真 假 真
假 真 真
假 假 假
1.5.3 逻辑非 !
语法规则:! 表达式
真变假,假变真。
表达式 结果
真 假
假 真
特别注意点:

对于 && , 如果左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式.

对于 | | , 如果左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧表达式.
1.6 位运算符
1.6.1 按位与 &: 如果两个二进制位都是 1, 则结果为 1, 否则结果为 0
1.6.2 按位或 |: 如果两个二进制位都是 0, 则结果为 0, 否则结果为 1
1.6.3 按位取反 ~: 如果该位为 0 则转为 1, 如果该位为 1 则转为 0
1.6.3 按位异或 ^: 如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1
异或举例
int a = 0x1;
int b = 0x2;
System.out.printf(“%x\n”, a ^ b);
注意点:&&为逻辑与,&为运算与,这两者不同含义,| | 也是同样道理
1.7 条件运算符
格式:(表达式1) ?( 表达式2) : (表达式3)
当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值;
当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值.
也是 Java 中唯一的一个 三目运算符, 是条件判断语句的简化写法.
// 求两个整数的最大值
int a=10;
int b=20;
int c= a>b ? 25 : 56;
1.8 移位运算符
<<(左移)、>>(带符号右移)和 >>>(无符号右移)

1、<<(左移)
m<<n 代表把数字m的二进制往左移n位

计算公式:m<<n在数字m无溢出的前提下乘以2的n次方

// 1乘以2的1次方
1<<1 // 2
// 1乘以2的5次方
1<<5 // 32

2、>>(带符号右移)
m>>n 代表把数字m的二进制往右移n位

计算公式:m>>n 代表把数字m除以2的n次方

// 1除以2的1次方
1>>1 // 0
// 1除以2的5次方
1>>5 // 0
// 10除以2的1次方
10>>1 // 5
// -10除以2的1次方
-10>>1 // -5
3、 >>>(无符号右移)
无符号右移运算符“>>>” - 同右移,但是结果全变正数。

把数字转换为二进制 然后进行右移一位 并变成正数

————————————————
版权声明:本文为CSDN博主「是烟花哈」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_73471456/article/details/127590815

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

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

相关文章

职场如战场!!!

一、与他们相处的经历和故事 尊重他人&#xff1a;无论是同事还是领导&#xff0c;在职场中都应该相互尊重。尊重他人的看法、意见和信仰&#xff0c;可以建立积极的工作关系&#xff0c;促进工作效率。 跟随公司文化&#xff1a;不同的公司有不同的文化&#xff0c;理解和遵循…

62 权限提升-烂土豆dll劫持引号路径服务权限

目录 演示案例:Win2012-烂士豆配合令牌窃取提权-Web权限Win2012-DLL劫持提权应用配合MSF-Web权限Win2012-不安全的服务权限配合MSF-本地权限Win2012-不带引号服务路径配合MSF-Web&#xff0c;本地权限补充说明: dll劫持提权及AlwaysInstallElevated等说明关于Windows相关知识点…

vue 中 keep-alive 组件的作用

Vue中的<keep-alive>组件主要用于缓存不活动的组件实例&#xff0c;而不是销毁它们。当组件在<keep-alive>内时&#xff0c;它的激活和停用状态会被相应的触发。这对于性能优化特别有用&#xff0c;尤其是对于那些需要大量计算或产生大量DOM操作的组件。 在<ke…

yo!这里是异常相关介绍

目录 前言 异常的概念 异常的抛出与捕获 捕获过程 重新抛出 规范 异常体系 自定义 标准库 异常的优缺点 后记 前言 对于程序运行时发生的错误&#xff0c;比如内存错误、除0错误等类型&#xff0c;你会如何处理&#xff1f;是使用assert终止程序或是使用exit返回错误…

Linux中的实时线程

目录 一、Linux线程调度策略二、SCHED_RR 为什么比 SCHED_OTHER 要实时呢三、如何使用线程调度相关API1、相关API介绍2、示例代码 一、Linux线程调度策略 在 Linux 中&#xff0c;调度策略&#xff08;scheduling policy&#xff09;是操作系统用来决定进程或线程调度顺序的算法…

Linux系统---僵尸进程、孤儿进程

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C/C》 键盘敲烂&#xff0c;年薪百万&#xff01; 有了上一篇博客的学习&#xff0c;我们已经简单了解了进程的基础知识&#xff0c;今天我们再来学习两个特殊的进程&#xff0c;僵尸进程和孤儿进程。 …

7000字详解 动态代理(JDK动态代理 CGLIB动态代理)与静态代理

代理模式 1. 代理模式 概念2. 静态代理3. 动态代理3.1.JDK动态代理3.2.CGLIB动态代理3.3. JDK动态代理和CGLIB动态代理区别 4.静态代理和动态代理区别5.篇末 1. 代理模式 概念 代理模式是一种设计模式。 使用代理对象来替代真实对象&#xff0c;用代理对象去访问目标对象。这样…

虚拟化逻辑架构: LBR 网桥基础管理

目录 一、理论 1.Linux Bridge 二、实验 1.LBR 网桥管理 三、问题 1.Linux虚拟交换机如何增删 一、理论 1.Linux Bridge Linux Bridge&#xff08;网桥&#xff09;是用纯软件实现的虚拟交换机&#xff0c;有着和物理交换机相同的功能&#xff0c;例如二层交换&#…

图论 2023.11.27

Kruskal定义不同的优先级 P3623 [APIO2008] 免费道路 给定一个无向图&#xff0c;其中一些边是0&#xff0c;其他边为1 两个不同的点之间都应该一条且仅由一条边连接 并保持刚好K条0&#xff0c;求是否有解决方案 n<2e4,m<1e5 Kruskal定义不同的优先级 思路&#xff1a;…

【NGINX--6】安全控制--1

1、基于 IP 地址的访问 根据客户端的 IP 地址控制访问。 使用 HTTP 或 stream 访问模块控制对受保护资源的访问&#xff1a; location /admin/ { deny 10.0.0.1; allow 10.0.0.0/20;allow 2001:0db8::/32; deny all; }给定的 location 代码块允许来自 10.0.0.0/20 中的任何 …

centos 查看磁盘分区的文件系统类型

1 lsblk -f 这个命令是查看系统可以识别出的所有分区的文件系统类型 # lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT vda └─vda1 ext4 8c02a225-e14c-44a9-a9d8-4b60c4b…

百面深度学习-自然语言处理

自然语言处理 神经机器翻译模型经历了哪些主要的结构变化&#xff1f;分别解决了哪些问题&#xff1f; 神经机器翻译&#xff08;Neural Machine Translation, NMT&#xff09;是一种使用深度学习技术来实现自动翻译的方法。自从提出以来&#xff0c;NMT模型经历了几个重要的…

#Js篇:Promise

定义 Promise是异步操作解决方案&#xff0c;为异步操作提供统一接口。 Promise英文意思是“承诺”&#xff0c;表示其他手段无法改变。 返回 所有异步任务都返回一个Promise实例。 Promise实例有一个then方法&#xff0c;用于指定下一步的回调函数。 状态 异步操作未完…

一个简易的URL爬虫程序(java)

该程序是一个简单的Java程序&#xff0c;用于从指定的URL中获取网页内容并保存到本地文件。通过URL类打开指定的URL链接&#xff0c;并使用openStream()方法获取输入流。然后使用Scanner类读取输入流中的内容&#xff0c;并使用PrintWriter类将读取到的内容写入到本地文件中。 …

HTTP协议发展

HTTP 1.0 -> HTTP 1.1 -> HTTP 2.0 -> HTTP 3.0 (QUIC) 每一代HTTP解决了什么问题&#xff1f; 下图说明了主要功能。 HTTP 1.0 于 1996 年最终确定并完整记录。对同一服务器的每个请求都需要单独的 TCP 连接。 HTTP 1.1 于 1997 年发布。TCP 连接可以保持打开状态…

php使用Session实现简单购物车功能

一个简单的商城购物车功能。它使用了PHP的会话(Session)来存储购物车数据&#xff0c;通过调用不同的函数来实现添加商品、移除商品、更新商品数量以及清空购物车的功能 session_start();// 初始化购物车 if (!isset($_SESSION[cart])) {$_SESSION[cart] array(); }// 添加商品…

openGauss学习笔记-132 openGauss 数据库运维-查看openGauss状态

文章目录 openGauss学习笔记-132 openGauss 数据库运维-查看openGauss状态132.1 背景信息132.2 前提条件132.3 操作步骤132.4 参数说明132.5 示例 openGauss学习笔记-132 openGauss 数据库运维-查看openGauss状态 132.1 背景信息 openGauss支持查看整个openGauss的状态&#…

如何在Linux系统安装Nginx并启动

Nginx的介绍 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器。其特点是占有内存少&#xff0c;并发能力强&#xff0c;事实上nginx的并发能力在同类型的网页服务器中表现较好。官网&#xff1a;nginx newsNginx的下载 前往…

docker基础学习笔记

文章目录 Docker简介Linux下安装DockerDocker常用命令Docker网络Docker存储docker-composedockerfile制作镜像私有仓库镜像导入导出参考 Docker简介 定义&#xff1a;Docker是一个开源的应用容器引擎优势&#xff1a; 一键部署&#xff0c;开箱即用&#xff1a;容器使用基于im…

Qt5.15.2静态编译 VS2017 with static OpenSSL

几年前编译过一次Qt静态库:VS2015编译Qt5.7.0生成支持XP的静态库,再次编译,毫无压力。 一.环境 系统:Windows 10 专业版 64位 编译器:visual studio 2017 第三方工具:perl,ruby和python python用最新的3.x.x版本也是可以的 这三个工具都需要添加到环境变量,安装时勾选…