今天我们来讲讲 “运算符”

1、算数运算符

1)算数运算符的介绍

 public static void main(String[] args) { 
        int i = 123456;
 System.out.println(i/1000*1000);
//计算结果是123000 
}

 
  1. 特别说明

1、+运算符

  • ++ 运算,变量自己增长1。反之, -- 运算,变量自己减少1,用法与 ++ 一致。
  • 独立运算:
    1. 变量在独立运算时, 前++ 和 后++ 没有区别 。
    2. 变量 前++ :例如 ++i 。
    3. 变量 后++ :例如 i++ 。
  • 混合运算:
    1. 和其他变量放在一起, 前++ 和 后++ 就产生了不同。
    2. 变量 前++ :变量a自己加1,将加1后的结果赋值给b,也就是说a先计算。a和b的结果都是 2。 
public static void main(String[] args) {
int a = 1;
int b = ++a;
System.out.println(a);//计算结果是2
System.out.println(b);//计算结果是2
}

 变量 后++ :变量a先把自己的值1,赋值给变量b,此时变量b的值就是1,变量a自己再加 1。a的结果是2,b的结果是1。

public static void main(String[] args) {
int a = 1;
int b = a++;
System.out.println(a);//计算结果是2
System.out.println(b);//计算结果是1
}

前++,前-- 先计算,再赋值;

后++ ,后-- 先赋值,再计算

 2 、赋值运算符

 

 赋值运算符,就是将符号右边的值,赋给左边的变量。

public static void main(String[] args){
int i = 1;
i+=1;
// i=i+1 ==> 1+1 ==>2 i=2
System.out.println(i); //输出结果是2
}

3 、关系运算符

 

 关系运算符,是两个数据之间进行比较的运算,运算结果都是布尔值 true 或者 false 。

public static void main(String[] args) {
System.out.println(1==1);//true
System.out.println(1<2);//true
System.out.println(2>3);//false
System.out.println(2<=3);//true
System.out.println(2>=3);//false
System.out.println(2!=3);//true
}

 4 、逻辑运算符

逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否 成立,判断 的结果是 true 或 false。

 示例:

public static void main(String[] args) {
//定义变量
int i = 10;
int j = 20;
int k = 30;
//& “与”,并且的关系,只要表达式中有一个值为false,结果即为false
System.out.println((i > j) & (i > k)); //false & false,输出false
System.out.println((i < j) & (i > k)); //true & false,输出false
System.out.println((i > j) & (i < k)); //false & true,输出false
System.out.println((i < j) & (i < k)); //true & true,输出true
System.out.println("........");
//| “或”,或者的关系,只要表达式中有一个值为true,结果即为true
System.out.println((i > j) | (i > k)); //false | false,输出false
System.out.println((i < j) | (i > k)); //true | false,输出true
System.out.println((i > j) | (i < k)); //false | true,输出true
System.out.println((i < j) | (i < k)); //true | true,输出true
System.out.println("........");
//^ “异或”,相同为false,不同为true
System.out.println((i > j) ^ (i > k)); //false ^ false,输出false
System.out.println((i < j) ^ (i > k)); //true ^ false,输出true
System.out.println((i > j) ^ (i < k)); //false ^ true,输出true
System.out.println((i < j) ^ (i < k)); //true ^ true,输出false
System.out.println("........");
//! “非”,取反
System.out.println((i > j)); //false
System.out.println(!(i > j)); //!false,,输出true
}

逻辑运算符,是用来连接两个布尔类型结果的运算符,运算结果都是布尔值 true 或者 false

public static void main(String[] args) {
int x = 3;
int y = 4;
System.out.println((x++ > 4) & (y++ > 5)); // 两个表达都会运算
System.out.println(x); // 4
System.out.println(y); // 5
System.out.println((x++ > 4) && (y++ > 5)); // 左边结果为false,右边不参与
运算
System.out.println(x); // 4
System.out.println(y); // 4
}

 5 、三元运算符

三元运算符也叫三目运算符。

三元运算符格式:

数据类型 变量名 = 布尔类型表达式?结果1:结果2 

  •  三元运算符计算方式:
    • 布尔类型表达式结果是true,三元运算符整体结果为结果1,赋值给变量。
    • 布尔类型表达式结果是false,三元运算符整体结果为结果2,赋值给变量。
public static void main(String[] args) {
int a = 20;
int b = 10;
int max = (a>b ? a : b);//max赋值为 a,b中较大的值
System.out.println(max);//20
int min = (a<b ? a : b);//min赋值为 a,b中较小的值
System.out.println(min);//10
}

 6、 位运算符

1 .进制及转换

计算机中的数据不同于人们生活中的数据,人们生活采用十进制数,而计算机中全部采用二进制数表 示,它只包含0、1两个数,逢二进一,1+1=10。每一个0或者每一个1,叫做一个bit(比特)。 下面了解一下十进制和二进制数据之间的转换计算。

1、 十进制转二进制 

十进制整数转换成二进制采用“除2倒取余”,十进制小数转换成二进制小数采用“乘2取整”。 

 这里,我们以常用的整数进制转换进行说明:

十进制转八进制、十六进制的思路与十进制转二进制一样。 

2、二进制转十进制 

二进制转十进制采用按权相加法

  1.  二进制转换成八进制的方法是,取三合一法,即从二进制的小数点为分界点,向左(或向右)每三位取 成一位。
  2. 二进制转换成十六进制的方法是,取四合一法,即从二进制的小数点为分界点,向左(或向右)每四位 取成一位。

7 、运算符的优先级 

不同运算符可以相互组合数据形成一个复杂的表达式,表达式的具体执行先后运行就需要根据运算符的 优先级判断。

 注意:

        尽量不要写特别复杂的表达式,别人看着也不舒服;另外可以结合小括号()来控制执行顺序。

### C++ 中逻辑运算符的使用方法和特性 #### 1. 基本概念 在 C++ 中,逻辑运算符主要用于处理布尔表达式的组合。这些运算符可以将多个条件连接起来形成更复杂的判断语句[^1]。 #### 2. 运算符及其功能 以下是三种主要的逻辑运算符- **逻辑与(&&)**: 当两个操作数都为真时,返回 `true`;否则返回 `false`。 ```cpp bool result = (5 > 3) && (7 < 9); // true, 因为两部分均为 true ``` - **逻辑或(||)**: 只要有一个操作数为真,则返回 `true`;只有当两者皆假时才返回 `false`。 ```cpp bool result = (5 > 8) || (7 < 9); // true, 因为第二部分为 true ``` - **逻辑非(!)**: 对单个操作数取反。如果原值为 `true` 则变为 `false`,反之亦然。 ```cpp bool value = true; bool negatedValue = !value; // false ``` 以上描述涵盖了标准情况下的行为特点。 #### 3. 短路求值机制 值得注意的是,在执行逻辑运算过程中存在短路现象。对于 `&&` 来说,一旦发现左侧表达式已经为假便不再计算右侧表达式;而对于 `||` 而言,只要左边的结果为真是就不会再评估右边的部分。 ```cpp int x = 0; bool check = (x != 0) && ((1 / x) == 1); // 不会触发除零错误,因为第一个条件失败后不会继续验证第二个条件 ``` 此特性能有效提升程序效率并防止潜在运行期异常的发生。 #### 4. 关于混淆点:位运算 vs 逻辑运算 尽管某些时候看起来相似,但实际上位运算(`&`, `|`)针对每一位单独作用,适用于整型数据上的逐比特操作而非单纯的真假判定场景下应用。因此应当区分清楚何时选用何种工具来达成目标效果[^3]。 例如下面的例子展示了相同符号不同含义的区别之处: ```cpp unsigned char byteA = 0b0011&#39;0011; unsigned char byteB = 0b0000&#39;1111; // Bitwise AND (&) unsigned char bitwiseAndResult = byteA & byteB; // Result is 0b0000&#39;0011 // Logical AND (&&), assuming these were converted to boolean context somehow. if(byteA && byteB){ std::cout << "Both are non-zero."; } ``` 上述代码片段清晰表明了两种类型的操作差异所在。 #### 5. 自定义类中的逻辑运算支持通过重载实现 默认状态下,C++ 的内置逻辑运算符仅能应用于基础数据类别之上。然而借助运算符重载技术我们可以赋予用户自定义的数据结构类似的交互能力[^2]。不过需注意设计合理性以及遵循既定惯例以免引起误解或者难以维护等问题出现。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值