吃透Java操作符高阶:位操作符+赋值操作符 全解析(Java&C区别+实战技巧+面试考点)

🏠个人主页:黎雁

🎬作者简介:C/C++/JAVA后端开发学习者

❄️个人专栏:C语言数据结构(C语言)EasyXJAVA游戏规划程序人生

✨ 从来绝巘须孤往,万里同尘即玉京

文章目录

  • [吃透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(单目操作符))
      • [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语言 赋值操作符 核心区别 ✅)
    • [✨ 知识回顾(核心考点,快速记忆)](#✨ 知识回顾(核心考点,快速记忆))
    • [✍️ 写在最后](#✍️ 写在最后)

吃透Java操作符高阶:位操作符+赋值操作符 全解析✨(Java&C区别+实战技巧+面试考点)

文章摘要(245字)

本文为Java操作符系列第三篇,深度讲解位操作符与赋值操作符全知识点。完整解析位操作符&、|、^、~的运算规则,搭配经典实战案例与面试高频技巧,含无临时变量交换数值、统计二进制1的个数;详解赋值操作符基础语法与复合赋值特性,说明Java强类型下的自动转换规则。标注Java与C语言核心差异,Java无指针位运算、复合赋值自带隐式强转,规避语法坑。零基础友好,知识点兼顾基础用法与进阶技巧,吃透可熟练掌握二进制位运算与赋值逻辑,适配笔试面试与开发实战。

阅读时长:约7分钟

适用人群及阅读重点

  1. ✅ Java零基础入门者:掌握位操作符运算规则、赋值操作符用法,熟记核心代码案例。
  2. ✅ 有C语言基础转Java:聚焦位运算无指针约束、复合赋值隐式强转两大核心差异。
  3. ✅ 备考/初学开发者:吃透位运算经典面试技巧,均为笔试高频考点。
  4. ✅ 进阶学习者:掌握位运算底层优化思路,提升代码执行效率。

一、前言 ✨

各位CSDN的小伙伴们~上篇我们掌握了算术与移位操作符的核心用法,所有位相关运算的底层都是基于二进制补码,这也是本篇的核心基础。

今天我们学习Java操作符中进阶核心+高频面试考点:位操作符与赋值操作符。位操作符是对整数补码逐位运算的高效工具,是算法优化、嵌入式开发的核心技巧,更是笔试必考题;赋值操作符是开发中使用频率最高的操作符,包含基础赋值与复合赋值两类,暗藏自动类型转换的语法细节。本文全覆盖规则、案例、技巧、差异与避坑点,知识点干货满满,吃透即掌握核心考点,正式开讲💻!


二、Java位操作符 & | ^ ~ 【二进制运算大师⭐面试高频】

位操作符是Java核心进阶操作符,仅对整数类型生效,所有运算均基于数值的「二进制补码」逐位运算,执行效率极高,是底层优化的核心手段。Java与C语言的位运算规则完全一致,核心差异仅在于Java无指针,位操作符只能作用于值类型整数,无法对指针运算,语法更严谨。

✅ 位操作符通用前置规则

  1. 运算对象:byte/short/int/long整数类型,浮点型使用位操作符直接编译报错;
  2. 运算基准:所有位运算,均对数值的二进制补码逐位计算;
  3. 运算特性:位运算结果生成新值,不会修改原变量的数值

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:复合赋值自带隐式强转 ,语法原生支持,编译无报错;新增>>>=复合赋值符(对应逻辑右移);无逗号表达式,仅逗号作为参数分隔符,语法更严谨。


✨ 知识回顾(核心考点,快速记忆)

  1. 位操作符:&有0则0、|有1则1、^相同为0、~按位取反,均运算补码,仅支持整数;
  2. 异或三大特性是核心考点,可实现无临时变量交换、统计二进制1的个数;
  3. 赋值操作符分简单与复合,复合赋值是语法糖,Java自带隐式强转,新增>>>=
  4. Java与C差异:位运算无指针约束,赋值运算自带强转,无逗号表达式。

✍️ 写在最后

本篇作为Java操作符系列第三篇,我们吃透了位操作符与赋值操作符的所有核心知识点,位操作符是面试与优化的高频考点,赋值操作符是开发的基础工具,两者都是Java语法的核心组成。

位运算的所有技巧都基于补码的底层逻辑,建议大家结合案例多敲代码,理解规则后便能灵活运用;赋值操作符的避坑点在于复合赋值的隐式强转,熟记即可规避语法错误。

下一篇我们将讲解Java剩余的所有操作符:单目、关系、逻辑、条件操作符,还有下标引用、函数调用等特殊操作符,以及操作符优先级与表达式求值陷阱,收尾整个操作符体系,敬请期待~

感谢各位阅读,觉得内容有用欢迎点赞+收藏+关注✨,你的支持是持续更新的动力,咱们下篇见!

相关推荐
wangkay882 小时前
【Java 转运营】Day03:抖音直播间自然流运营
java·开发语言·新媒体运营
计算机程序设计小李同学2 小时前
平价药店销售与管理系统
java·mysql·spring·spring cloud·ssm
TEC_INO2 小时前
STM32_11:DMA
java·前端·stm32
郑州光合科技余经理2 小时前
私有化B2B订货系统实战:核心模块设计与代码实现
java·大数据·开发语言·后端·架构·前端框架·php
五阿哥永琪2 小时前
基于 Spring AOP 的角色权限校验实现指南&&注解类型避坑指南
java·后端·spring
czlczl200209252 小时前
Quartz基本原理与工程实践
java·spring boot·后端
callJJ2 小时前
Builder模式详解:从困惑到理解
java·建造者模式·智谱
大猫和小黄2 小时前
若依从零到部署:前后端分离和微服务版
java·微服务·云原生·架构·前后端分离·若依
Geoking.2 小时前
【设计模式】享元模式(Flyweight)详解:用共享对象对抗内存爆炸
java·设计模式·享元模式