Java基础(运算符篇)

news2025/1/19 20:20:05

一、算术运算符

+正号
-负号
+加法
-减法
*乘法
/除法
%模运算(取余)
++自增
--自减

算术运算符的使用比较简单,只需要注意一些细节。

tips:

  1. 加号( '+' )除了可以作为正号,还可以用于字符串拼接。
    public class Plus{
    
    	public static void main(String[] args){
    
    		//加号可以将其他基本数据类型转换为String
    		String str = 1234567 + "";
    		System.out.println(str);
    
    		//加号可以拼接字符串
    		String str1 = "hello ";
    		System.out.println(str1 + "world");
    
    	}
    
    }
     
  2. 取模运算
    public class Mod{
    
    	public static void main(String[] args){
    
    		//取模运算符演示
    		//取模运算符的右侧不能为0
    		//取模运算符可以对正整数、负整数或浮点数使用
    		//取模运算就是求除法运算的余数
    		int n1 = 20 % 5;
    		int n2 = -20 % 6;
    		int n3 = 20 % -3;
    		int n4 = -20 % -7;
    
    		double n5 = 3.3 % 1.1;
    
    		System.out.println(n1);
    		System.out.println(n2);
    		System.out.println(n3);
    		System.out.println(n4);
    		System.out.println(n5);
    
    	}
    
    }

  3. 自增(自减):自增和自减运算符使用方法一致,下面介绍自增运算符。

    
    
    public class PlusPlus{
    
    	public static void main(String[] args){
    
    		//x++或++x对x变量来说等价于 x = x + 1;并且自增运算符会将结果
    		//自动转换成x对应的类型以便赋给x
    		//
    		//前置++
    		//表示先将变量的值+1,再返回变量值
    		int x = 1;
    		System.out.println(++x);
    		System.out.println(x);
    		
    		//后置++
    		//先使用一个临时变量保存x的值,再将x值+1,然后返回临时变量保存的值
    		x = 1;
    		System.out.println(x++);
    		System.out.println(x);
    
    		//对于式子 x = x++ 和 x = ++x,Java是有确定结果的,而C语言中是未定义行为
    		x = 1;
    		x = x++;//先使用一个临时变量保存x的值,再将x值+1,然后返回临时变量保存的值给x,所以x值不变
    		System.out.println(x);
    		x = ++x;//先将x值+1,然后返回自增后的值给x,这个式子就等同于x++;
    		System.out.println(x);
    
    	}
    
    }

二、关系运算符

==等于
!=不等于
<小于
>大于
<=小于等于
>=大于等于
instanceof是否为类对象

关系运算符的使用与数学中一致,含有关系运算符的表达式为关系表达式,其运算结果为boolean类型。

三、 逻辑运算符

&&逻辑与(短路与)
||逻辑或(短路或)
逻辑非


public class LogicOperation{

	public static void main(String[] args){

		//&&,当两边都为真时,表达式为真,否则为假
		//并且如果左侧表达式为假,那么不会再判断右侧表达式,直接输出假(这个现象称为短路)
		System.out.println(1 == 1 && 2 == 2);
		System.out.println(1 == 1 && 2 == 3);
		int a = 1;
		System.out.println(1 == 2 && a++ == 2);
		System.out.println(a);

		System.out.println("--------------------");
		//||,当两边的表达式至少一个为真时,结果为真
		//逻辑或也有短路现象
		System.out.println(1 == 2 || 2 == 3);
		System.out.println(1 == 1 || 2 == 3);
		a = 1;
		System.out.println(1 == 1 || a++ == 2);
		System.out.println(a);

		System.out.println("--------------------");
		//!,假变真,真变假
		System.out.println(!(1 == 2));
		System.out.println(!(1 == 1));


	}

}

四、赋值运算符

基本赋值运算符=
复合赋值运算符+=
-=
*=
/=
%=等

赋值运算符的作用就是将赋值运算符右侧的表达式的结果赋给左侧的变量。

public class AssignOperation{

	public static void main(String[] args){

		//复合赋值运算符的基本用法相同,拿+=来举例
		//x += 1;就相当于 x = x + 1;
		//使用复合赋值运算符更加简洁,并且复合赋值运算符可以自动转换类型
		
		byte x = 1;
		//x = x + 1;//这种写法会报错,因为右边表达式的结果为int类型
		x += 1;//这样就不会报错

	}

}

 五、移位运算符

&按位与
|按位或
~按位取反
^按位异或
>>算术右移
<<算术左移
>>>逻辑右移
  1. 按位与、按位或:可以用于条件表达式,但没有短路现象,还可以对数值类型进行按位操作。
  2. 按位取反:将相应数值的二进制表示中1变为0,0变为1.
  3. 算术左移:将二进制所有位向左移动 x 位,符号位不变,低位补0.
  4. 算术右移:将二进制所有位向右移动 x 位,高位补符号位。
  5. 逻辑右移:右移 x 位,高位补0.
public class BitOperation{

	public static void main(String[] args){

		//&
		//用于条件表达式不会短路
		System.out.println("下面是按位与 & ");
		System.out.println("-------------------------------");
		int x = 1;
		System.out.println(1 == 2 & x++ == 1);
		System.out.println(x);
		//1的二进制表示后八位为0000001,3为00000011
		//所以1 & 3 = 1
		//任何数&0都为0
		System.out.println(1 & 3);
		System.out.println("-------------------------------");
		System.out.println("下面是按位或 | ");
		System.out.println("-------------------------------");

		//|
		//用于条件表达式不会短路
		x = 1;
		System.out.println(1 == 1 | x++ == 1);
		System.out.println(x);
		//1 | 3 = 3
		//|0都为自己
		System.out.println(1 | 3);
		System.out.println("-------------------------------");
		System.out.println("下面是按位取反 ~ ");
		System.out.println("-------------------------------");

		//~,对二进制位按位取反
		//-1 的二进制表示为 11111111 11111111 11111111 11111111
		//按位取反的结果为0
		System.out.println(~(-1));
		System.out.println("-------------------------------");
		System.out.println("下面是按位异或 ^ ");
		System.out.println("-------------------------------");
		//对每个bit进行操作,相同为0,相异为1
		//1 ^ 3 = 2
		//任何数^0为自己
		System.out.println(1 ^ 3);
		System.out.println("-------------------------------");
		System.out.println("下面是算数右移 >> ");
		System.out.println("-------------------------------");
		//算术右移一次相当于 / 2
		//所以4 >> 2 = 1,-5 >> 2 = -2
		System.out.println(4 >> 2);
		System.out.println(-5 >> 2);
		System.out.println("-------------------------------");
		System.out.println("下面是算数左移 << ");
		System.out.println("-------------------------------");
		//算术右移一次相当于 * 2
		//所以4 << 2 = 16,-5 << 2 = -20
		System.out.println(4 << 2);
		System.out.println(-5 << 2);
		System.out.println("-------------------------------");
		System.out.println("下面是逻辑右移 >>> ");
		System.out.println("-------------------------------");
		//逻辑右移高位补0,不补符号位,所以负数逻辑右移可能会变为正数
		//-1 >>> 1 = 2147483647
		System.out.println(-1 >>> 1);

	}

}

六、三目运算符

public class ThreeOperation{

	public static void main(String[] args){

		//三目运算符的语法为:条件表达式?表达式1:表达式2
		//如果条件表达式为真,则返回表达式1的结果,否则返回表达式2的结果
		//
		System.out.println(1 == 2 ? "1 == 2" : "1 != 2");
		System.out.println(1 == 1 ? "1 == 1" : "1 != 1");

	}

}

 

七、运算符优先级

优先级运算符结合性(指遇到同优先级运算符的怎样结合成子表达式)
1() {} .从左到右
2++ -- ! ~从右到左
3* / %从左到右
4+ -从左到右
5<< >> >>>从左到右
6< > <= >= instanceof从左到右
7== !=从左到右
8&从左到右
9^从左到右
10|从左到右
11&&从左到右
12||从左到右
13?:从右到左
14赋值运算符从右到左
15逗号运算符从左到右

只有三目运算符、单目运算符和赋值运算符的结合性是从右向左,其余运算符的结合性都是从左向右。 

下面举个例子来说明运算符结合性的意思:

//有一个三目运算符的表达式
// a ? b : c ? d : e;
//从右向左结合并不意味着 c ? d : e是优先计算的
//而是意味着这个表达式等价于 a ? b : (c ? d : e);
//而不等价于 (a ? b : c) ? d : e;

八、标识符

在Java中,对变量、方法和类等命名时使用的字符序列称为标识符。

标识符的命名规则:

  1. 由字母、数字、下划线或 $ 符号组成;
  2. 数字不可以开头;
  3. 不能使用关键字或保留字
  4. Java中严格区分大小写,对长度没有限制;
  5. 标识符中不能有空格。

标识符的命名规范可以查看阿里巴巴的Java开发手册。

关键字:在Java中用于特殊用途的字符序列,可以看作是特殊的标识符。

保留字:目前还没有使用,但未来可能作为关键字使用。

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

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

相关文章

解读下SWD协议以及其应用

SWD协议原理 SWD&#xff08;Serial Wire Debug&#xff09;协议是一种用于ARM Cortex微控制器的调试接口协议。它定义了主机计算机与目标设备之间通过SWD线进行通信的格式和规范。 SWD协议使用两根线进行通信&#xff1a;SWDIO&#xff08;Serial Wire Debug I/O&#xff09…

跳石板(牛客)

目录 一、题目 二、代码 &#xff08;一&#xff09;解法一&#xff1a;超时了 &#xff08;二&#xff09;优化 一、题目 跳石板_牛客题霸_牛客网 二、代码 &#xff08;一&#xff09;解法一&#xff1a;超时了 #include <climits> #include <iostream> …

python的pyecharts第三方模块绘制高端统计图表

pyecharts库 python的pyecharts库是一个用于生成 Echarts 图表的python第三方类库&#xff0c;可以绘制很高端的统计图表以便展示数据。 安装方法 pip安装 pip install pyecharts或者github拉取下载安装 git clone https://github.com/pyecharts/pyecharts.git cd pyechar…

Android 内容提供者和内容观察者:数据共享和实时更新的完美组合

任务要求 一个作为ContentProvider提供联系人数据另一个作为Observer监听联系人数据的变化&#xff1a; 1、创建ContactProvider项目&#xff1b; 2、在ContactProvider项目中用Sqlite数据库实现联系人的读写功能&#xff1b; 3、在ContactProvider项目中通过ContentProvid…

1.安装 docker 容器并配置镜像加速器

1.2.1 实验环境准备 实验环境&#xff1a; rockylinux8.8 可以去官网下载 下载 Rocky | Rocky Linux 主机名&#xff1a; xuegod63 主机 ip: 192.168.1.63&#xff08;这个 ip 大家可以根据自己所在环境去配置&#xff0c;配置成静态 IP&#xff09; 2g 内存、2vCPU、50G 硬…

诊断DLL——CAPL_DLL集成安全访问算法

文章目录 前言一、CAPL DLL简介DLL生成C2338报错解决方案:二、添加27服务解锁算法三、CAPL调用dll前言 在实际诊断工程应用中,如UDS刷写——27服务,经常会遇到一些Seed2Key的算法问题,为了安全保密,这个算法的源码不便公开,我们可以将其打包成DLL,然后在CANoe诊断控制面…

树莓派4b配置通过smbus2使用LCD灯

出现报错&#xff1a; FileNotFoundError: [Errno 2] No such file or directory: ‘/dev/i2c-1’ 则说明没有打开I2C&#xff0c;可通过如下步骤进行设置 1、打开树莓派配置 sudo raspi-config2、进入Interface Options&#xff0c;配置I2C允许 目前很多python3版本已经不…

【LeetCode热题100】--121.买卖股票的最佳时机

121.买卖股票的最佳时机 class Solution {public int maxProfit(int[] prices) {int minprice Integer.MAX_VALUE;int maxprofit 0;for(int i 0;i<prices.length;i){if(prices[i] < minprice){minprice prices[i]; //找到最小值}else if(prices[i] - minprice > ma…

C++指针解读(7)-- 指针和函数

前面我们讲过用指针变量作为函数参数。这里讲指向函数的指针变量和返回指针的函数。 1、指向函数的指针变量 跟变量一样&#xff0c;函数也会存储在内存空间中&#xff0c;函数的内存空间有一个起始地址&#xff0c;每次调用函数时就从该入口地址开始执行函数代码。 既然函数…

Wordpress自定义小工具logo调用设置(可视化)

在主题开发中&#xff0c;需要调用网站的logo&#xff0c;最简单的办法就是用wp自带的函数&#xff0c;那就是the_custom_logo()&#xff0c;使用它还可以通过后台-自定义-logo&#xff0c;边修改边预览&#xff0c;还是很香的。 自定义徽标支持应首先使用add_theme_support()添…

【后端】韩顺平Java学习笔记(基础篇01)

因为之前有c基础&#xff0c;所以差不多一样的就简写了owo 来源&#xff1a;韩顺平 零基础30天学会Java 目录 I. 控制结构&#xff08;简&#xff09; 一、介绍 1. 顺序 → 从上到下执行&#xff0c;无跳转 2. 分支 → 单、双、多、嵌套 1&#xff09;单&#xff0c;即…

【GO入门】环境配置及Vscode配置

1 GO环境配置 欢迎来到Go的世界&#xff0c;让我们开始探索吧&#xff01; Go是一种新的语言&#xff0c;一种并发的、带垃圾回收的、快速编译的语言。它具有以下特点&#xff1a; 它可以在一台计算机上用几秒钟的时间编译一个大型的Go程序。Go为软件构造提供了一种模型&…

langchain callback学习

文章目录 一.quickstart二.Async callbacks三.把回调消息写入文件如何提取出来正则表达式官方的方法 一.quickstart 官方文档在此&#xff1a;https://python.langchain.com/docs/modules/callbacks/ 发现自己之前用langchain都是纯纯只是跑通&#xff0c;要能灵活使用还是得深…

freefilesync文件同步软件

下载 下载链接 https://freefilesync.org/download.php 往下拉&#xff0c;看到下载的链接 下载windows版本 下载地址&#xff1a; https://freefilesync.org/download/FreeFileSync_13.0_Windows_Setup.exe 直接复制到浏览器中访问就能下载 安装 双击安装包&#xff0c;一路默…

总结:JavaEE的Servlet中HttpServletRequest请求对象调用各种API方法结果示例

总结&#xff1a;JavaEE的Servlet中HttpServletRequest请求对象调用各种API方法结果示例 一方法调用顺序是按照英文字母顺序从A-Z二该示例可以用作servlet中request的API参考&#xff0c;从而知道该如何获取哪些路径参数等等三Servlet的API版本5.0.0、JSP的API版本&#xff1a;…

创建QDialog工程

创建QDialog工程 换掉图标 添加一个组件 水平布局 所有原件横向布局完成后&#xff0c;选中外框&#xff0c;点击Dialog,进行纵向布局 调整文本字体的大小 清空按钮的槽函数 下划线的槽函数 斜体的槽函数 加粗的槽函数 或者使用快剪辑&#xff1a;…

文心一言:文心大模型 4.0 即将发布

本心、输入输出、结果 文章目录 文心一言:文心大模型 4.0 即将发布前言文心 4.0 的成本问题架构文心 4.0 是否可以对标 GPT-4文心4.0 会不会收费弘扬爱国精神文心一言:文心大模型 4.0 即将发布 编辑:简简单单 Online zuozuo 地址:https://blog.csdn.net/qq_15071263 前言 …

【Java 进阶篇】JavaScript电灯开关案例:从原理到实现

JavaScript是一门强大的编程语言&#xff0c;它可以用来创建各种交互式网页应用。在这篇博客中&#xff0c;我们将通过一个简单的电灯开关案例来深入了解JavaScript的基础概念&#xff0c;包括HTML、CSS和JavaScript的结合使用。我们将从头开始构建这个案例&#xff0c;逐步引入…

Megatron-LM GPT 源码分析(一) Tensor Parallel分析

引用 本文基于开源代码 https://github.com/NVIDIA/Megatron-LM &#xff0c;通过GPT的模型运行示例&#xff0c;从三个维度 - 模型结构、代码运行、代码逻辑说明 对其源码做深入的分析。 Tensor Parallel源码分析

LabVIEW生产者消费者架构

LabVIEW生产者消费者架构 生产者/消费者模式可以轻松地同时处理多个进程&#xff0c;同时还能以不同速率迭代。 缓冲通信 当多个进程以不同速度运行时&#xff0c;就适合采用进程间缓冲通信。有了足够大的缓冲区后&#xff0c;生产者循环可以以快于消费者循环的速度运行&…