首页 > 编程语言 >JAVA基础 - 运算符

JAVA基础 - 运算符

时间:2024-07-28 09:59:56浏览次数:11  
标签:JAVA num1 num2 示例 int 基础 运算符 true

目录

一. 简介

二. 算术运算符

二. 自加,自减

三. 算术赋值运算符

四. 关系运算符

五. 逻辑运算符

六. 位运算符

七.其他运算符

八. 运算优先级


一. 简介

在 Java 中,运算符用于对数据进行各种运算操作。以下是一些常见的 Java 运算符:

  1. 算术运算符

    • + :加法
    • - :减法
    • * :乘法
    • / :除法
    • % :取余(模运算)
  2. 自增自减运算符

    • ++ :自增,使变量的值增加 1
    • -- :自减,使变量的值减少 1
  3. 关系运算符

    • == :等于
    • != :不等于
    • > :大于
    • < :小于
    • >= :大于等于
    • <= :小于等于
  4. 逻辑运算符

    • && :逻辑与
    • || :逻辑或
    • ! :逻辑非
  5. 位运算符

    • & :按位与
    • | :按位或
    • ^ :按位异或
    • ~ :按位取反
    • << :左移
    • >> :右移
    • >>> :无符号右移
  6. 赋值运算符

    • = :简单赋值
    • += :加等于
    • -= :减等于
    • *= :乘等于
    • /= :除等于
    • %= :取余等于
  7. 条件运算符(三元运算符)

    • condition? expression1 : expression2 :如果条件为真,返回表达式 1 的值;否则,返回表达式 2 的值

运算符在 Java 编程中用于执行各种计算和逻辑判断,以实现程序的功能。

二. 算术运算符

Java 中的算术运算符用于执行基本的数学运算。以下是对常见算术运算符的详细解释:

  1. +(加法运算符)

    • 用于将两个数相加。
    • 示例:int sum = 5 + 3; 结果 sum 的值为 8 。
  2. -(减法运算符)

    • 用于从一个数中减去另一个数。
    • 示例:int difference = 8 - 2; 结果 difference 的值为 6 。
  3. *(乘法运算符)

    • 用于两个数相乘。
    • 示例:int product = 4 * 5; 结果 product 的值为 20 。
  4. /(除法运算符)

    • 用于执行除法运算。
    • 当操作数都是整数时,结果为整数部分(向下取整)。
    • 示例:int quotient = 7 / 2; 结果 quotient 的值为 3 。
    • 如果操作数中有一个是浮点数,结果为浮点数。
    • 示例:double quotient = 7.0 / 2; 结果 quotient 的值为 3.5 。
  5. %(取模运算符,也称为取余运算符)

    • 用于计算除法运算的余数。
    • 示例:int remainder = 7 % 3; 结果 remainder 的值为 1 。

在进行算术运算时,需要注意数据类型的范围,以避免溢出。例如,两个较大的整数相加可能会超过 int 类型的取值范围。

以下是一个示例代码,展示了算术运算符的使用:

public class ArithmeticOperatorsExample {
    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 3;

        int addition = num1 + num2;
        int subtraction = num1 - num2;
        int multiplication = num1 * num2;
        int division = num1 / num2;
        int modulus = num1 % num2;

        System.out.println("加法: " + addition);
        System.out.println("减法: " + subtraction);
        System.out.println("乘法: " + multiplication);
        System.out.println("除法: " + division);
        System.out.println("取模: " + modulus);
    }
}

二. 自加,自减

在 Java 中,++(自增运算符)和 --(自减运算符)用于对变量的值进行增加或减少 1 的操作。

++ 自增运算符

有两种使用方式:前缀形式 ++i 和后缀形式 i++ 。

  • 前缀形式 ++i :先将变量的值增加 1,然后再使用变量的值进行其他操作。
    int i = 5;
    int result = ++i;  // 先将 i 的值增加到 6,然后将 6 赋值给 result
  • 后缀形式 i++ :先使用变量的值进行其他操作,然后再将变量的值增加 1 。
    int i = 5;
    int result = i++;  // 先将 5 赋值给 result,然后将 i 的值增加到 6

-- 自减运算符

与自增运算符类似,也有前缀形式 --i 和后缀形式 i-- 。

  • 前缀形式 --i :先将变量的值减少 1,然后再使用变量的值。
  • 后缀形式 i-- :先使用变量的值,然后再将变量的值减少 1 。

以下是一个示例代码,展示了自增和自减运算符的使用:

public class IncrementDecrementExample {
    public static void main(String[] args) {
        int num1 = 5;
        int num2 = 5;

        int result1 = ++num1;  // num1 先自增为 6,然后赋值给 result1
        int result2 = num2++;  // num2 先赋值给 result2 为 5,然后自增为 6

        System.out.println("result1: " + result1);  // 输出 6
        System.out.println("num1: " + num1);  // 输出 6

        System.out.println("result2: " + result2);  // 输出 5
        System.out.println("num2: " + num2);  // 输出 6
    }
}

需要注意的是,在复杂的表达式中使用自增和自减运算符时,要特别小心其运算顺序和结果,以避免出现意外的错误。

三. 算术赋值运算符

在 Java 中,算术赋值运算符是将算术运算和赋值操作组合在一起的运算符。它们包括 += 、 -= 、 *= 、 /= 和 %= 。

  1. += (加赋值运算符)
    • 示例:a += b 等价于 a = a + b
    • 例如:
    int a = 5;
    int b = 3;
    a += b;  // a 的值变为 8
  1. -= (减赋值运算符)
    • 示例:a -= b 等价于 a = a - b
    • 例如:
    int a = 10;
    int b = 4;
    a -= b;  // a 的值变为 6
  1. *= (乘赋值运算符)
    • 示例:a *= b 等价于 a = a * b
    • 例如:
    int a = 2;
    int b = 5;
    a *= b;  // a 的值变为 10
  1. /= (除赋值运算符)
    • 示例:a /= b 等价于 a = a / b
    • 例如:
    int a = 15;
    int b = 3;
    a /= b;  // a 的值变为 5
  1. %= (取模赋值运算符)
    • 示例:a %= b 等价于 a = a % b
    • 例如:
    int a = 17;
    int b = 4;
    a %= b;  // a 的值变为 1

使用算术赋值运算符可以使代码更简洁,特别是在对一个变量进行反复的算术运算和赋值操作时。

四. 关系运算符

在 Java 中,关系运算符用于比较两个值之间的关系,并返回一个布尔值(true 或 false)。以下是常见的关系运算符:

  1. == (等于)

    • 用于比较两个值是否相等。
    • 示例:5 == 5 返回 true , 5 == 6 返回 false 。
  2. != (不等于)

    • 用于判断两个值是否不相等。
    • 示例:5!= 6 返回 true , 5!= 5 返回 false 。
  3. > (大于)

    • 检查左边的值是否大于右边的值。
    • 示例:6 > 5 返回 true , 5 > 6 返回 false 。
  4. < (小于)

    • 检查左边的值是否小于右边的值。
    • 示例:5 < 6 返回 true , 6 < 5 返回 false 。
  5. >= (大于等于)

    • 左边的值大于或等于右边的值时返回 true 。
    • 示例:6 >= 5 和 5 >= 5 都返回 true , 4 >= 5 返回 false 。
  6. <= (小于等于)

    • 左边的值小于或等于右边的值时返回 true 。
    • 示例:5 <= 6 和 5 <= 5 都返回 true , 6 <= 5 返回 false 。

需要注意的是,关系运算符不仅可以用于基本数据类型(如整数、浮点数、字符等)的比较,也可以用于对象的比较(但通常需要重写对象的 equals 方法来实现自定义的比较逻辑)。

以下是一个使用关系运算符的示例代码:

public class RelationshipOperatorExample {
    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 20;

        boolean isEqual = num1 == num2;
        boolean isNotEqual = num1!= num2;
        boolean isGreater = num1 > num2;
        boolean isLess = num1 < num2;
        boolean isGreaterOrEqual = num1 >= num2;
        boolean isLessOrEqual = num1 <= num2;

        System.out.println("num1 == num2: " + isEqual);
        System.out.println("num1!= num2: " + isNotEqual);
        System.out.println("num1 > num2: " + isGreater);
        System.out.println("num1 < num2: " + isLess);
        System.out.println("num1 >= num2: " + isGreaterOrEqual);
        System.out.println("num1 <= num2: " + isLessOrEqual);
    }
}

五. 逻辑运算符

在 Java 中,逻辑运算符用于对布尔值进行操作,以组合或否定条件。常见的逻辑运算符有以下几种:

  1. && (逻辑与)

    • 当且仅当两个操作数都为 true 时,结果才为 true 。否则,结果为 false 。
    • 示例:(5 > 3) && (2 < 1) ,其中 (5 > 3) 为 true ,但 (2 < 1) 为 false ,所以整个表达式的结果为 false 。
  2. || (逻辑或)

    • 只要两个操作数中有一个为 true ,结果就为 true 。只有当两个操作数都为 false 时,结果才为 false 。
    • 示例:(5 < 3) || (2 > 1) ,因为 (2 > 1) 为 true ,所以整个表达式的结果为 true 。
  3. ! (逻辑非)

    • 用于反转操作数的布尔值。如果操作数为 true ,则 ! 操作的结果为 false ;如果操作数为 false ,则结果为 true 。
    • 示例:!(5 > 3) ,由于 (5 > 3) 为 true ,所以 !(5 > 3) 的结果为 false 。

逻辑运算符常用于控制程序的流程,例如在 if 语句、 while 循环等结构中根据条件的真假来决定执行的代码路径。

以下是一个示例代码,展示了逻辑运算符的使用:

public class LogicalOperatorExample {
    public static void main(String[] args) {
        boolean condition1 = true;
        boolean condition2 = false;

        // 逻辑与
        boolean andResult = condition1 && condition2;
        System.out.println("逻辑与结果: " + andResult);  // 输出 false

        // 逻辑或
        boolean orResult = condition1 || condition2;
        System.out.println("逻辑或结果: " + orResult);  // 输出 true

        // 逻辑非
        boolean notResult =!condition1;
        System.out.println("逻辑非结果: " + notResult);  // 输出 false
    }
}

六. 位运算符

在 Java 中,位运算符用于对整数类型(byteshortint 和 long)的位进行操作。以下是常见的位运算符:

  1. & (按位与)

    • 对两个操作数的对应位进行与操作。只有当两个对应位都为 1 时,结果位才为 1 ,否则为 0 。
    • 示例:5 & 3 ,即 0101 & 0011 ,结果为 0001 ,也就是 1 。
  2. | (按位或)

    • 对两个操作数的对应位进行或操作。只要两个对应位中有一个为 1 ,结果位就为 1 。
    • 示例:5 | 3 ,即 0101 | 0011 ,结果为 0111 ,也就是 7 。
  3. ^ (按位异或)

    • 对两个操作数的对应位进行异或操作。当两个对应位不同时,结果位为 1 ,相同时为 0 。
    • 示例:5 ^ 3 ,即 0101 ^ 0011 ,结果为 0110 ,也就是 6 。
  4. ~ (按位取反)

    • 对操作数的每一位进行取反操作,1 变为 0 ,0 变为 1 。
    • 示例:~5 ,即 ~0101 ,结果为 1010 ,在有符号整数中表示 -6 。
  5. << (左移)

    • 将操作数的所有位向左移动指定的位数,右边用 0 填充。
    • 示例:5 << 2 ,即 0101 << 2 ,结果为 010100 ,也就是 20 。
  6. >> (右移)

    • 将操作数的所有位向右移动指定的位数,如果操作数为正数,左边用 0 填充;如果为负数,左边用 1 填充。
    • 示例:5 >> 1 ,即 0101 >> 1 ,结果为 0010 ,也就是 2 。
  7. >>> (无符号右移)

    • 无论操作数的正负,都用 0 填充左边的空位。
    • 示例:-5 >>> 1 ,即 11111011 >>> 1 ,结果为 01111101 。

位运算符在某些特定的编程场景中,如优化性能、处理二进制数据、实现特定的算法等方面非常有用。

public class BitwiseOperatorExample {
    public static void main(String[] args) {
        int num1 = 5;
        int num2 = 3;

        System.out.println("num1 & num2 = " + (num1 & num2));
        System.out.println("num1 | num2 = " + (num1 | num2));
        System.out.println("num1 ^ num2 = " + (num1 ^ num2));
        System.out.println("~num1 = " + ~num1);

        System.out.println("num1 << 2 = " + (num1 << 2));
        System.out.println("num1 >> 1 = " + (num1 >> 1));
        System.out.println("num1 >>> 1 = " + (num1 >>> 1));
    }
}

七.其他运算符

  1. ? : (三元运算符)

    • 语法:condition? expression1 : expression2
    • 如果 condition 为 true ,则返回 expression1 的值;否则,返回 expression2 的值。
    • 示例:int num = (5 > 3)? 10 : 20; 由于 5 > 3 为 true ,所以 num 的值为 10 。
  2. . (点运算符)

    • 用于访问对象的属性或方法。
    • 示例:String str = "Hello"; int length = str.length(); 这里通过 .length() 访问了 String 对象 str 的 length 方法。
  3. new

    • 用于创建对象或数组。
    • 示例:创建对象:Person person = new Person(); 创建数组:int[] arr = new int[5];
  4. -> (在 Java 8 的 lambda 表达式中使用)

    • 用于指定 lambda 表达式中的参数和主体。
    • 示例:List<String> names = Arrays.asList("Alice", "Bob"); names.forEach(name -> System.out.println(name));

八. 运算优先级

以下是 Java 中运算符优先级的完整列表,从高到低排列:

  1. 括号 ()
  2. 一元运算符:++ 、 -- 、 + (正号)、 - (负号)、 ~ (按位取反)、 ! (逻辑非)
  3. 乘除与取余:* 、 / 、 %
  4. 加减:+ 、 -
  5. 移位:<< 、 >> 、 >>>
  6. 关系比较:< 、 <= 、 > 、 >= 、 instanceof
  7. 相等比较:== 、 !=
  8. 按位与:&
  9. 按位异或:^
  10. 按位或:|
  11. 逻辑与:&&
  12. 逻辑或:||
  13. 条件运算符(三元运算符):? :
  14. 赋值运算符:= 、 += 、 -= 、 *= 、 /= 、 %= 、 <<= 、 >>= 、 &= 、 ^= 、 |=

如果表达式中包含多个具有不同优先级的运算符,将按照优先级从高到低的顺序进行计算。如果优先级相同,则按照从左到右的顺序进行计算。

为了使代码的逻辑更加清晰,避免由于优先级导致的错误,在复杂的表达式中,建议使用括号来明确计算的顺序。

例如:

int a = 2;
int b = 3;
int c = 4;

int result1 = a + b * c;  // 先计算 b * c ,结果为 12,然后加上 a ,最终结果为 14
int result2 = (a + b) * c;  // 先计算 a + b ,结果为 5,然后乘以 c ,最终结果为 20

标签:JAVA,num1,num2,示例,int,基础,运算符,true
From: https://blog.csdn.net/Cx20190420/article/details/140609828

相关文章

  • Python入门知识点 8--函数基础与函数参数
    一、初识函数(function)编程函数!=数学函数,里面的是逻辑功能,而不是套公式编程函数的作用是实现特定操作的一段代码有钱了给100个朋友都点一份这样的吃的,大家都是点一样的东西   1.薯条;   2.上校鸡块;   3.全鸡;一个个去点单会很麻烦这个时候就会用到套餐......
  • Java周总结4
    1、进行面向对象的案例packagecom.myjava.playgame;importjava.util.Random;publicclassuser{//姓名。血量,性别,长相privateStringname;privateintblool;privateStringgender;privateStringface;//长相数组String[]boyf......
  • (免费领源码)java#ssm#mysql航空机票管理系统27545-计算机毕业设计项目选题推荐
    摘 要随着互联网时代的到来,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个B/S结构的航空机票管理系统,机票系统的管理工作系统化、规范化,也会提高平台形象,提高管理效率。本航空机票管理系统是针对目前航空机票管理系统的实际需求,从实际工作出发,对......
  • Java入门到精通:第八课 数组
    一、数组概述1、数组的解释:可以存储同种数据类型的多个值的一种容器2、注意:(1)存储数据时,需要结合隐式转换:(2)建议:容器的类型,和存储的数据类型保持一致二、数组的定义1、格式:2、数组的静态初始化3、数组的动态初始化4、数组的静态初始化和数组的静态初始化的区别:......
  • 【免费领源码】Java/Mysql数据库+SSM校园兼职网站 25557,计算机毕业设计项目推荐上万套
    摘 要当今人类社会已经进入信息全球化和全球信息化、网络化的高速发展阶段。丰富的网络信息已经成为人们工作、生活、学习中不可缺少的一部分。人们正在逐步适应和习惯于网上贸易、网上购物、网上支付、网上服务和网上娱乐等活动,人类的许多社会活动正在向网络化发展。兼职......
  • 【免费领源码】Java/Mysql数据库+springboot驾校预约管理系统 25540,计算机毕业设计项
    摘 要随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于驾校预约管理系统当然也不能排除在外,随着网络技术的不断成熟,带动了驾校预约管理系统,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。这种......
  • 当我尝试使用 HTMLSession 渲染 JavaScript 时,出现错误
    我尝试使用HTMLSession渲染JavaScript,但是当我尝试时它给了我一个错误。>>>r.html.render()Futureexceptionwasneverretrievedfuture:<Futurefinishedexception=NetworkError('ProtocolerrorTarget.detachFromTarget:Targetclosed.')>pyppeteer.error......
  • JavaEE 初阶(8)——多线程6之线程安全下-->volatile
    之前,我们在 JavaEE初阶(6) 这篇文章中,谈到过引起线程不安全的原因,初步了解了 “可见性” “Java内存模型” “指令重排序”,本章讲解volatile会涉及到这三个知识点,详细内容可以参考  JavaEE初阶(6) 这篇文章。目录一. 引入二.volatile关键字 a.保证“可......
  • JavaEE 初阶(7)——多线程5之线程安全中 -->“死锁”
    目录一.什么是“死锁”二.产生死锁的场景  场景1:一个线程连续加锁 场景2:两个线程两把锁场景3:N个线程M把锁 三.产生死锁的四个必要条件(缺一不可)四. Java标准库中的线程安全类一.什么是“死锁”并非是synchronized就一定线程安全,还要看代码具体咋写。到底......
  • JavaEE 初阶(9)——多线程7之 wait 和 notify
    目录一.监视器锁与监视器二.wait()  三.notify()和notifyAll()3.1notify() 3.2notifyAll()3.3wait等待 和sleep休眠的对比(面试题)wait(等待)/notify(通知)由于线程在操作系统上是“随机调度,抢占式执行”的,因此线程之间执行的先后顺序难以预知。但是......