
🏠个人主页:黎雁
🎬作者简介:C/C++/JAVA后端开发学习者
❄️个人专栏:C语言、数据结构(C语言)、EasyX、JAVA、游戏、规划、程序人生
✨ 从来绝巘须孤往,万里同尘即玉京

文章目录
- [吃透Java操作符高阶:位操作符+赋值操作符 全解析✨(Java&C区别+实战技巧+面试考点)](#吃透Java操作符高阶:位操作符+赋值操作符 全解析✨(Java&C区别+实战技巧+面试考点))
-
- 文章摘要(245字)
- [一、前言 ✨](#一、前言 ✨)
- [二、Java位操作符 & | ^ ~ 【二进制运算大师⭐面试高频】](#二、Java位操作符 & | ^ ~ 【二进制运算大师⭐面试高频】)
-
- [✅ 位操作符通用前置规则](#✅ 位操作符通用前置规则)
- [2.1 四大位操作符 语法+核心规则(口诀速记,永不遗忘)](#2.1 四大位操作符 语法+核心规则(口诀速记,永不遗忘))
-
- [✔ 按位与 `&` :有0则0,全1才1](#✔ 按位与
&:有0则0,全1才1) - [✔ 按位或 `|` :有1则1,全0才0](#✔ 按位或
|:有1则1,全0才0) - [✔ 按位异或 `^` :相同为0,相异为1【重中之重】](#✔ 按位异或
^:相同为0,相异为1【重中之重】) - [✔ 按位取反 `~` :0变1,1变0(单目操作符)](#✔ 按位取反
~:0变1,1变0(单目操作符))
- [✔ 按位与 `&` :有0则0,全1才1](#✔ 按位与
- [2.2 完整Java代码案例(全覆盖所有位操作符)](#2.2 完整Java代码案例(全覆盖所有位操作符))
- [2.3 位运算经典实战技巧(笔试高频✅无冗余)](#2.3 位运算经典实战技巧(笔试高频✅无冗余))
-
- [✔ 技巧1:无临时变量交换两个整数(经典面试题)](#✔ 技巧1:无临时变量交换两个整数(经典面试题))
- [✔ 技巧2:统计二进制中1的个数(高频面试题)](#✔ 技巧2:统计二进制中1的个数(高频面试题))
- [2.4 Java & C语言 位操作符 核心区别 ✅](#2.4 Java & C语言 位操作符 核心区别 ✅)
- [三、Java赋值操作符 = += -= *= /= %= 等 【开发高频,语法糖核心】](#三、Java赋值操作符 = += -= *= /= %= 等 【开发高频,语法糖核心】)
-
- [3.1 简单赋值操作符 `=` :基础赋值核心](#3.1 简单赋值操作符
=:基础赋值核心) - [3.2 复合赋值操作符 【语法糖,开发必备】](#3.2 复合赋值操作符 【语法糖,开发必备】)
- [3.3 完整Java案例+避坑要点](#3.3 完整Java案例+避坑要点)
- [3.4 Java & C语言 赋值操作符 核心区别 ✅](#3.4 Java & C语言 赋值操作符 核心区别 ✅)
- [3.1 简单赋值操作符 `=` :基础赋值核心](#3.1 简单赋值操作符
- [✨ 知识回顾(核心考点,快速记忆)](#✨ 知识回顾(核心考点,快速记忆))
- [✍️ 写在最后](#✍️ 写在最后)
吃透Java操作符高阶:位操作符+赋值操作符 全解析✨(Java&C区别+实战技巧+面试考点)
文章摘要(245字)
本文为Java操作符系列第三篇,深度讲解位操作符与赋值操作符全知识点。完整解析位操作符&、|、^、~的运算规则,搭配经典实战案例与面试高频技巧,含无临时变量交换数值、统计二进制1的个数;详解赋值操作符基础语法与复合赋值特性,说明Java强类型下的自动转换规则。标注Java与C语言核心差异,Java无指针位运算、复合赋值自带隐式强转,规避语法坑。零基础友好,知识点兼顾基础用法与进阶技巧,吃透可熟练掌握二进制位运算与赋值逻辑,适配笔试面试与开发实战。
阅读时长:约7分钟
适用人群及阅读重点
- ✅ Java零基础入门者:掌握位操作符运算规则、赋值操作符用法,熟记核心代码案例。
- ✅ 有C语言基础转Java:聚焦位运算无指针约束、复合赋值隐式强转两大核心差异。
- ✅ 备考/初学开发者:吃透位运算经典面试技巧,均为笔试高频考点。
- ✅ 进阶学习者:掌握位运算底层优化思路,提升代码执行效率。
一、前言 ✨
各位CSDN的小伙伴们~上篇我们掌握了算术与移位操作符的核心用法,所有位相关运算的底层都是基于二进制补码,这也是本篇的核心基础。
今天我们学习Java操作符中进阶核心+高频面试考点:位操作符与赋值操作符。位操作符是对整数补码逐位运算的高效工具,是算法优化、嵌入式开发的核心技巧,更是笔试必考题;赋值操作符是开发中使用频率最高的操作符,包含基础赋值与复合赋值两类,暗藏自动类型转换的语法细节。本文全覆盖规则、案例、技巧、差异与避坑点,知识点干货满满,吃透即掌握核心考点,正式开讲💻!
二、Java位操作符 & | ^ ~ 【二进制运算大师⭐面试高频】
位操作符是Java核心进阶操作符,仅对整数类型生效,所有运算均基于数值的「二进制补码」逐位运算,执行效率极高,是底层优化的核心手段。Java与C语言的位运算规则完全一致,核心差异仅在于Java无指针,位操作符只能作用于值类型整数,无法对指针运算,语法更严谨。
✅ 位操作符通用前置规则
- 运算对象:byte/short/int/long整数类型,浮点型使用位操作符直接编译报错;
- 运算基准:所有位运算,均对数值的二进制补码逐位计算;
- 运算特性:位运算结果生成新值,不会修改原变量的数值。
2.1 四大位操作符 语法+核心规则(口诀速记,永不遗忘)
✔ 按位与 & :有0则0,全1才1
规则:两个数的补码逐位对比,只要有一个位是0,结果位为0;只有两位都是1,结果位才为1。
核心妙用:快速判断奇偶数 n & 1,结果为1是奇数,0是偶数,效率远超取余运算。
✔ 按位或 | :有1则1,全0才0
规则:两个数的补码逐位对比,只要有一个位是1,结果位为1;只有两位都是0,结果位才为0。
核心妙用:快速将数值指定二进制位「置1」,开发中常用于状态标记。
✔ 按位异或 ^ :相同为0,相异为1【重中之重】
规则:两个数的补码逐位对比,两位数值相同则为0,数值不同则为1。
✅ 三大黄金特性(笔试必考,必须熟记):
① a ^ a = 0 :任意数和自身异或,结果必为0;
② a ^ 0 = a :任意数和0异或,结果不变,还是自身;
③ 交换律:a ^ b = b ^ a。
✔ 按位取反 ~ :0变1,1变0(单目操作符)
规则:对数值补码的每一位(含符号位) 全部取反,0转为1,1转为0。
核心注意:取反后数值的符号位必然改变,正数取反变负数,负数取反变正数。
2.2 完整Java代码案例(全覆盖所有位操作符)
java
public class BitOper {
public static void main(String[] args) {
int a = 6; // 补码:00000000 00000000 00000000 00000110
int b = -8; // 补码:11111111 11111111 11111111 11111000
System.out.println(a & b); // 按位与 → 0
System.out.println(a | b); // 按位或 → -2
System.out.println(a ^ b); // 按位异或 → -2
System.out.println(~a); // 按位取反 → -7
System.out.println(15 & 1); // 判断奇偶 → 1(奇数)
}
}
2.3 位运算经典实战技巧(笔试高频✅无冗余)
✔ 技巧1:无临时变量交换两个整数(经典面试题)
利用异或三大特性实现,无溢出风险,比加减法交换更安全高效:
java
public class BitSkill {
public static void main(String[] args) {
int a = 3, b = 5;
System.out.println("交换前:a="+a+", b="+b); //3,5
a = a ^ b;
b = a ^ b; //等价 (3^5)^5 = 3
a = a ^ b; //等价 (3^5)^3 =5
System.out.println("交换后:a="+a+", b="+b); //5,3
}
}
✔ 技巧2:统计二进制中1的个数(高频面试题)
利用 n & (n-1) 核心技巧,每次运算会「擦掉」补码最右侧的1,循环次数即为1的个数,效率拉满:
java
public class BitSkill {
public static void main(String[] args) {
int n = 10; //二进制:1010 → 共2个1
int count = 0;
while(n != 0){
n = n & (n-1);
count++;
}
System.out.println("二进制中1的个数:"+count); //2
}
}
2.4 Java & C语言 位操作符 核心区别 ✅
▶ C语言:支持对「指针类型」做位运算,是底层开发常用技巧,可通过位运算操作指针地址;无严格类型约束,运算时自动隐式转换。
▶ Java:无指针概念,位操作符仅能对值类型整数运算,无法操作地址;强类型约束,byte/short运算时自动整型提升为int,语法严谨无歧义。
三、Java赋值操作符 = += -= *= /= %= 等 【开发高频,语法糖核心】
赋值操作符是Java中使用频率最高的操作符 ,核心作用是为变量赋值或简化「运算+赋值」的代码逻辑,分为简单赋值符 和复合赋值符两类,语法简单但暗藏避坑要点,也是Java与C语言的核心差异点之一。
3.1 简单赋值操作符 = :基础赋值核心
规则:将右侧表达式的结果,赋值给左侧的变量,语法:变量 = 表达式;
✅ 核心避坑:Java中=是赋值,==是判等,切勿混淆,这是新手最常见的语法错误。
java
public class AssignOper {
public static void main(String[] args) {
int a = 10; // 简单赋值:将10赋值给变量a
boolean flag = 3 > 2; // 将表达式结果赋值给变量
}
}
3.2 复合赋值操作符 【语法糖,开发必备】
包含:+=、-=、*=、/=、%=、<<=、>>=、>>>=、&=、|=、^=
✅ 核心规则:a += b 等价于 a = (a的类型)(a + b),所有复合赋值符均遵循此逻辑。
✅ 核心特性(Java专属,重中之重):
复合赋值操作符自带隐式强制类型转换,即使运算后超出原变量类型范围,也不会编译报错,而是自动截断转换,这是Java的语法糖,也是和简单运算的核心区别。
3.3 完整Java案例+避坑要点
java
public class AssignOper {
public static void main(String[] args) {
// 案例1:基础复合赋值
int a = 10;
a += 5; // 等价 a = a+5 → 15
a %= 3; // 等价 a = a%3 → 0
// 案例2:Java专属隐式强转(核心避坑)
short s = 1;
s += 2; // 编译通过,自带强转:s = (short)(s+2)
// s = s+2; 编译报错,无强转,int无法赋值给short
}
}
3.4 Java & C语言 赋值操作符 核心区别 ✅
▶ C语言:复合赋值无强制类型转换,不同类型运算自动隐式转换,仅编译器警告,易出现精度丢失;支持逗号表达式赋值,可多语句赋值。
▶ Java:复合赋值自带隐式强转 ,语法原生支持,编译无报错;新增>>>=复合赋值符(对应逻辑右移);无逗号表达式,仅逗号作为参数分隔符,语法更严谨。
✨ 知识回顾(核心考点,快速记忆)
- 位操作符:
&有0则0、|有1则1、^相同为0、~按位取反,均运算补码,仅支持整数; - 异或三大特性是核心考点,可实现无临时变量交换、统计二进制1的个数;
- 赋值操作符分简单与复合,复合赋值是语法糖,Java自带隐式强转,新增
>>>=; - Java与C差异:位运算无指针约束,赋值运算自带强转,无逗号表达式。
✍️ 写在最后
本篇作为Java操作符系列第三篇,我们吃透了位操作符与赋值操作符的所有核心知识点,位操作符是面试与优化的高频考点,赋值操作符是开发的基础工具,两者都是Java语法的核心组成。
位运算的所有技巧都基于补码的底层逻辑,建议大家结合案例多敲代码,理解规则后便能灵活运用;赋值操作符的避坑点在于复合赋值的隐式强转,熟记即可规避语法错误。
下一篇我们将讲解Java剩余的所有操作符:单目、关系、逻辑、条件操作符,还有下标引用、函数调用等特殊操作符,以及操作符优先级与表达式求值陷阱,收尾整个操作符体系,敬请期待~
感谢各位阅读,觉得内容有用欢迎点赞+收藏+关注✨,你的支持是持续更新的动力,咱们下篇见!