Java语法之运算符二(附练习和答案)

简介: Java语法之运算符二(附练习和答案)

10.自增自减运算符

分类:

++  自增运算符

--  自减运算符

++:就是把变量里面的值+1

--:就是把变量里面的值-1

使用方式:

  • 放在变量的前面,我们叫做先++。 比如:++a
  • 放在变量的后面,我们叫做后++。 比如:a++

注意点:

不管是先++,还是后++。单独写在一行的时候,运算结果是一模一样的。

案例:

//++
int a = 10;
a++;//就是让变量a里面的值 + 1
System.out.println(a);//11
++a;//就是让变量a里面的值 + 1
System.out.println(a);//12

自增自减运算符的应用场景:

某些情况下,变量需要进行加1或者减1的时候使用。

比如:过生日多一岁,就用到了自增运算符。

比如:购物商场中,选择商品数量,也用到了自增或者自减运算符。

比如:统计很多数据中,有多少个数据满足要求,也用到了自增运算符。

11.赋值运算符

最为常用的: =

运算过程:就是把等号右边的结果赋值给左边的变量

案例:

public class OperatorDemo6 {
    public static void main(String[] args) {
        //1.最为简单的赋值运算符用法
        int a = 10;//就是把10赋值给变量a
        System.out.println(a);
        //2.如果等号右边需要进行计算。
        int b = 20;
        int c = a + b;//先计算等号右边的,把计算的结果赋值给左边的变量
        System.out.println(c);
        //3.特殊的用法
        a = a + 10;//先计算等号右边的,把计算的结果赋值给左边的变量
        System.out.println(a);//20
    }
}

12.扩展赋值运算符

分类:

+=、-=、*=、/=、%=

运算规则:

就是把左边跟右边进行运算,把最终的结果赋值给左边,对右边没有任何影响。

案例:

public class OperatorDemo7 {
    public static void main(String[] args) {
        //扩展赋值运算符
        int a = 10;
        int b = 20;
        a += b;//把左边和右边相加,再把最终的结果赋值给左边,对右边没有任何影响
        // 相当于 a = a + b;
        System.out.println(a);//30
        System.out.println(b);//20
    }
}

注意点:

扩展的赋值运算符中隐层还包含了一个强制转换。

以+=为例。

a += b ;实际上相当于 a = (byte)(a + b);

public class OperatorDemo8 {
    public static void main(String[] args) {
        byte a = 10;
        byte b = 20;
        //a += b;
        a = (byte)(a + b);
        System.out.println(a);//30
    }
}

13.关系运算符

又叫比较运算符,其实就是拿着左边跟右边进行了判断而已。

分类:

符号 解释
== 就是判断左边跟右边是否相等,如果成立就是true,如果不成立就是false
!= 就是判断左边跟右边是否不相等,如果成立就是true,如果不成立就是false
> 就是判断左边是否大于右边,如果成立就是true,如果不成立就是false
>= 就是判断左边是否大于等于右边,如果成立就是true,如果不成立就是false
< 就是判断左边是否小于右边,如果成立就是true,如果不成立就是false
<= 就是判断左边是否小于等于右边,如果成立就是true,如果不成立就是false

注意点:

  • 关系运算符最终的结果一定是布尔类型的。要么是true,要么是false
  • 在写==的时候,千万不要写成=

14.逻辑运算符

& 和 | 的使用:

&:逻辑与(而且)

两边都为真,结果才是真,只要有一个为假,那么结果就是假。

|:逻辑或(或者)

两边都为假,结果才是假,只要有一个为真,那么结果就是真。

代码示例:

// &  //两边都是真,结果才是真。
System.out.println(true & true);//true
System.out.println(false & false);//false
System.out.println(true & false);//false
System.out.println(false & true);//false
System.out.println("===================================");
// | 或  //两边都是假,结果才是假,如果有一个为真,那么结果就是真。
System.out.println(true | true);//true
System.out.println(false | false);//false
System.out.println(true | false);//true
System.out.println(false | true);//true

使用场景:

根据固定的场景,来选择使用&还是使用|

  • 用户登录。
    用户名输入正确 & 密码输入正确
    因为只有用户名和密码同时都正确了,那么才能成功登录,只要有一个失败了都不行。
    使用技巧:
    当我们需要同时满足左边和右边两种情况时,可以使用且
  • 丈母娘选女婿
    丈母娘:女婿啊,你要么买个房子,要么买辆车。就可以把我的小棉袄穿走了。
    买个房子 | 买辆车
    两个条件中,只要满足其中一个,就可以穿走小棉袄了。
    使用技巧:
    当两种条件只要满足其中一个的时候,可以使用或

^(异或)的使用:

在以后用的不多,了解一下即可。

计算规则:如果两边相同,结果为false,如果两边不同,结果为true

代码示例:

//^   //左右不相同,结果才是true,左右相同结果就是false
System.out.println(true ^ true);//false
System.out.println(false ^ false);//false
System.out.println(true ^ false);//true
System.out.println(false ^ true);//true

!(取反)的使用:

是取反,也叫做非。

计算规则:false取反就是true,true取反就是false

温馨提示:取反最多只用一个。

代码示例:

System.out.println(!false);//true
System.out.println(!true);//false
System.out.println(!!false);//注意点:取反最多只用一个。

15.短路逻辑运算符

分类: && ||

&&:

运算结果跟&是一模一样的,只不过具有短路效果。

||:

运算结果跟|是一模一样的。只不过具有短路效果。

逻辑核心:

当左边不能确定整个表达式的结果,右边才会执行。

当左边能确定整个表达式的结果,那么右边就不会执行了。从而提高了代码的运行效率。

举例:

  • 用户登录案例
    用户名正确 & 密码正确
    如果使用一个&,不管用户名是否正确都会去验证密码。

思考:

如果用户名输入正确了,那么我们再判断密码是否正确,是符合业务逻辑的。

但是如果用户名输入错误了,那么现在还有必要去比较密码吗?没有不要了。

如果使用一个&,那么左边和右边不管什么情况下,都会执行。

用户名正确 && 密码正确

如果用户名输入正确了,那么才会验证密码是否输入正确。

如果用户名输入错误了,那么就不会再去验证密码是否正确,最终的结果直接为false。从而提高了程序运行的效率。

  • 丈母娘选女婿
    有房 | 有车
    首先先看看有没有房,发现有,然后再去看看有没有车。

思考:

既然都有房子,干嘛还要去看车呢?多此一举。

有房 || 有车

首先先看看有没有房,如果有,那么右边就不执行了。最终的结果直接为true。

如果没有房子,才会去看右边有没有车。

总结:

&& 和 & 、||和|的运行结果都是一模一样的。

但是短路逻辑运算符可以提高程序的运行效率。

建议:

最为常用: && || !

16.三元运算符

又叫做:三元表达式或者问号冒号表达式。

格式:

关系表达式 ? 表达式1 :表达式2 ;

计算规则:

  • 计算关系表达式的值。
  • 如果关系表达式的值为真,那么执行表达式1。
  • 如果关系表达式的值为假,那么执行表达式2。

注意点:

三元运算符的最终结果一定要被使用,要么赋值给一个变量,要么直接打印出来。

案例:

public class OperatorDemo12 {
    public static void main(String[] args) {
        //需求:求两个数的较大值
        int a = 10;
        int b = 20;
        //格式:关系表达式 ? 表达式1 : 表达式2 ;
        //注意点:
        //三元运算符的最终结果一定要被使用。
        //要么赋值给一个变量,要么直接输出。
       int max =  a > b ? a : b ;
        System.out.println(max);
        System.out.println(a > b ? a : b);
    }
}

17.练习1-两只老虎

需求:

动物园里有两只老虎,两只老虎的体重分别为通过键盘录入获得,

请用程序实现判断两只老虎的体重是否相同。

代码示例:

//1.获取两只老虎的体重
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一只老虎的体重");
int weight1 = sc.nextInt();
System.out.println("请输入第二只老虎的体重");
int weight2 = sc.nextInt();
//2.利用三元运算符求出最终结果
String result = weight1 == weight2 ? "相同" : "不相同";
System.out.println(result);

18.练习2-求三个数的最大值

需求:

一座寺庙里住着三个和尚,已知他们的身高分别为150cm、210cm、165cm。

请用程序实现获取这三个和尚的最高身高。

代码示例:

//1.定义三个变量记录和尚的身高
int height1 = 150;
int height2 = 210;
int height3 = 165;
//2.利用三元运算符求出两个数中的较大值。
int temp = height1 > height2 ? height1 : height2;
//3.求出最终的结果
int max = temp > height3 ? temp : height3;
System.out.println(max);

19.运算符的优先级

在Java中涉及了很多的运算符,每一种运算符都有各自的优先级。但是这些优先级不需要记忆。

咱们只要知道其中一点:

小括号优先于所有。


相关文章
|
19天前
|
Java Go 开发工具
【Java】(4)五种运算符的说明(&&、||、>=、>、<=、<)、4种控制语句(if、for、while、dowhile)、输入和输出说明
扩展类的赋值运算符不改变运算结果类型,假设最初这个变量的的类型byte类型,无论怎么进行加或追减,最终该变量的数据类型还是byte类型。注:一个表达式中有多个运算符,运算符有优先级,不确定的加小括号,优先级得到提升。当布尔表达式的结果是false的时候,选择表达式2作为整个表达式的执行结果。当布尔表达式的结果是true的时候,选择表达式1作为整个表达式的执行结果。当用户输入的时候,并且最终敲回车键的时候,键入的信息会自动赋值给a。并且,连接运算之后的结果还是一个字符串类型。表达式1 : 表达式2。
59 2
|
1月前
|
Java
Java基础语法与面向对象
重载(Overload)指同一类中方法名相同、参数列表不同,与返回值无关;重写(Override)指子类重新实现父类方法,方法名和参数列表必须相同,返回类型兼容。重载发生在同类,重写发生在继承关系中。
96 1
|
1月前
|
存储 SQL NoSQL
Redis-常用语法以及java互联实践案例
本文详细介绍了Redis的数据结构、常用命令及其Java客户端的使用,涵盖String、Hash、List、Set、SortedSet等数据类型及操作,同时提供了Jedis和Spring Boot Data Redis的实战示例,帮助开发者快速掌握Redis在实际项目中的应用。
207 1
Redis-常用语法以及java互联实践案例
|
2月前
|
存储 缓存 算法
Java数据类型与运算符深度解析
本文深入解析Java中容易混淆的基础知识,包括八大基本数据类型(如int、Integer)、自动装箱与拆箱机制,以及运算符(如&与&&)的使用区别。通过代码示例剖析内存布局、取值范围及常见陷阱,帮助开发者写出更高效、健壮的代码,并附有面试高频问题解析,夯实基础。
|
2月前
|
算法 Java 测试技术
零基础学 Java: 从语法入门到企业级项目实战的详细学习路线解析
本文为零基础学习者提供完整的Java学习路线,涵盖语法基础、面向对象编程、数据结构与算法、多线程、JVM原理、Spring框架、Spring Boot及项目实战,助你从入门到进阶,系统掌握Java编程技能,提升实战开发能力。
161 0
|
2月前
|
存储 Java 容器
Java基本语法详解
本文深入讲解了Java编程的基础语法,涵盖数据类型、运算符、控制结构及数组等核心内容,帮助初学者构建坚实的编程基础。
|
3月前
|
Java 数据库连接 数据库
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
本文全面总结了Java核心知识点,涵盖基础语法、面向对象、集合框架、并发编程、网络编程及主流框架如Spring生态、MyBatis等,结合JVM原理与性能优化技巧,并通过一个学生信息管理系统的实战案例,帮助你快速掌握Java开发技能,适合Java学习与面试准备。
160 2
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
|
3月前
|
存储 安全 Java
从基础语法到实战应用的 Java 入门必备知识全解析
本文介绍了Java入门必备知识,涵盖开发环境搭建、基础语法、面向对象编程、集合框架、异常处理、多线程和IO流等内容,结合实例帮助新手快速掌握Java核心概念与应用技巧。
83 0
|
4月前
|
人工智能 Java
Java运算符中的隐式转换
本文介绍了 Java 运算符中的隐式类型转换规则,涵盖算数、逻辑、位、关系、赋值及其他运算符。重点分析了算数和位运算符在处理小于 int 位长的数据时会自动转换为 int 类型的特性,并通过代码示例说明可能引发的类型不匹配错误。逻辑、关系、赋值及其他运算符则不涉及类型转换。总结指出,部分运算符在计算时会将小位长数据隐式转为 int 类型,结果也为 int。
|
4月前
|
人工智能 Rust Java
Java中的算数、关系、逻辑、条件、赋值 五大运算符详解
本文介绍了Java中的运算符及其优先级,包括算数运算符(如+、-、*、/、%、++、--)、关系运算符(如&lt;、&gt;、==、!=)、逻辑运算符(如&&、||、!)、条件运算符(三目运算符)和赋值运算符(如=、+=、-=等)。详细解释了每种运算符的功能与用法,例如自增自减运算符的特点、逻辑运算符的短路法运算以及位运算符的操作规则。最后还提供了运算符优先级表格,帮助开发者理解复杂表达式的计算顺序。文中提醒,在实际开发中,建议使用括号明确运算顺序以提高代码可读性。
213 0