Java基础(运算符篇)

news/2025/2/21 9:05:15/

一、算术运算符

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

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

tips:

  1. 加号( '+' )除了可以作为正号,还可以用于字符串拼接。
    public class Plus{public static void main(String[] args){//加号可以将其他基本数据类型转换为StringString 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都为0System.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//按位取反的结果为0System.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 = -2System.out.println(4 >> 2);System.out.println(-5 >> 2);System.out.println("-------------------------------");System.out.println("下面是算数左移 << ");System.out.println("-------------------------------");//算术右移一次相当于 * 2//所以4 << 2 = 16,-5 << 2 = -20System.out.println(4 << 2);System.out.println(-5 << 2);System.out.println("-------------------------------");System.out.println("下面是逻辑右移 >>> ");System.out.println("-------------------------------");//逻辑右移高位补0,不补符号位,所以负数逻辑右移可能会变为正数//-1 >>> 1 = 2147483647System.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.ppmy.cn/news/1156278.html

相关文章

HUAWEI(26)——防火墙双机热备

一、拓扑 二、需求 PC2 ping PC1 FW1与FW2双机热备,FW1为active,FW2为Standby,抢占延时1s VRRP 三、配置 1.IP地址,防火墙接口加入区域 防火墙用户名:admin 防火墙旧密码:Admin@123 防火墙新密码:admin@123 [FW1]interface GigabitEthernet 1/0/0 [FW1-GigabitEthe…

js复制文本到剪切板

//复制文本function copyText(text) {var element createElement(text);element.select();element.setSelectionRange(0, element.value.length);document.execCommand(copy);element.remove();alert("已复制到剪切板");}//创建临时的输入框元素function createElem…

137.只出现一次的数字II

137. 只出现一次的数字 II - 力扣&#xff08;LeetCode&#xff09; 给你一个整数数组 nums &#xff0c;除某个元素仅出现 一次 外&#xff0c;其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且使用常数级空间来…

Linux网络编程系列之服务器编程——多路复用模型

Linux网络编程系列 &#xff08;够吃&#xff0c;管饱&#xff09; 1、Linux网络编程系列之网络编程基础 2、Linux网络编程系列之TCP协议编程 3、Linux网络编程系列之UDP协议编程 4、Linux网络编程系列之UDP广播 5、Linux网络编程系列之UDP组播 6、Linux网络编程系列之服务器编…

Linux-CentOS8-Oracle19c 安装详解

Linux-CentOS8-Oracle19c安装图解 文章目录 Linux-CentOS8-Oracle19c安装图解预备1. Oracle19c 安装手册&#xff1a;2. 安装虚拟机&#xff1a;4G内存&#xff0c;2*2核心&#xff0c;30G3. 下载CentOS8镜像。4. 开始准备预安装5. 修改Oracle账户密码6. 修改SELINUX值在文件&a…

[题] 差分矩阵 #差分

题目 差分矩阵 题解 只有一个操作&#xff1a; void insert(int x1, int y1, int x2, int y2, int c){b[x1][y1] c;b[x2 1][y1] - c;b[x1][y2 1] - c;b[x2 1][y2 1] c; }利用差分的思想&#xff0c;扩展到二维上。 insert函数作用是将矩阵之内的数全部加上c&#xff0c;…

【MySQL】深入了解索引的底层逻辑结构

文章目录 主键排序一. InnoDB的索引结构1. 单个page2. 多个page 二. 为什么选择B树三. 聚簇索引和非聚簇索引结束语 主键排序 我们创建一个user表&#xff0c;并乱序插入数据 mysql> create table if not exists user(-> id int primary key,-> age int not null,-&…

未来展望:大型语言模型与 SQL 数据库集成的前景与挑战

一、前言 随着 GPT-3、PaLM 和 Anthropic 的 Claude 等大型语言模型 (LLM) 的出现引发了自然语言在人工智能领域的一场革命。这些模型可以理解复杂的语言、推理概念并生成连贯的文本。这使得各种应用程序都能够使用对话界面。然而&#xff0c;绝大多数企业数据都存储在结构化 …