黑马程序员Java零基础视频教程笔记-运算符 2

简介: 黑马程序员Java零基础视频教程笔记-运算符

五、赋值运算符和关系运算符

1. 赋值运算符

① 分类

符号 作用 说明
= 赋值 int a=10,将10赋值给变量a
+= 加后赋值 a+=b,将a+b的值给a
-= 减后赋值 a-=b,将a-b的值给a
*= 乘后赋值 a*=b,将a*b的值给a
/= 除后赋值 a/=b,将a÷b的商给a
%= 取余后赋值 a%=b,将a÷b的余数给a

② 样例

package com.itheima.assigningoperator;
public class AssigningoperatorDemo1{
    public static void main(){
        //+=
        //规则:将左边和右边进行相加,然后再把结果赋值给左边
        int a = 10;
        int b = 20;
        //把a+b,再把结果赋值给左边的变量a
        a += b;
        //等同于 a = (int)(a + b);
        System.out.println(a);//30
        System.out.println(b);//20
        //细节:
        //+=,-=,*=,/=,%= 底层都隐藏了一个强制类型转换
        short s = 1;
        //把左边和右边进行相加,得到结果2,再赋值给左边的变量
        s += 1;
        //等同于:s = (short)(s + 1);
        System.out.println(s);//2
    }
}

2. 关系运算符

① 分类

符号 说明
== a==b,判断a和b的值是否相等,成立为true,不成立为false
!= a!=b,判断a和b的值是否不相等,成立为true,不成立为false
> a>b,判断a是否大于b,成立为true,不成立为false
>= a>=b,判断a是否大于等于b,成立为true,不成立为false
< a>b,判断a是否小于b,成立为true,不成立为false
<= a<=b,判断a是否小于等于b,成立为true,不成立为false

注意:关系运算符的结果都是boolean类型,要么是true,要么是false

② 样例

package com.itheima.assigningoperator;
public class AssigningoperatorDemo2{
    public static void main(){
        //1.== 判断左右两边是否相等
        int a = 10;
        int b = 10;
        int c = 20;
        System.out.println(a == b);//true
        System.out.println(a == c);//false
    }
}

3. 练习

package com.itheima.test;
import java.util.Scanner;
public class Test2{
    public static void main(String[] args){
        /*
        需求:
        您和您的约会对象正试图在餐厅获得一张桌子。
        键盘录入两个整数,表示你和你约会对象衣服的时髦度。(手动录入0~10之间的整数,不能录入其他)
        如果你的时髦度大于你对象的时髦度,相亲就成功,输出true,否则输出false。
        */
        //1.键盘录入两个整数表示衣服的时髦度
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入我们自己的衣服时髦度");
        int myFashion = sc.nextInt();
        System.out.println("请输入相亲对象的衣服时髦度");
        int girlFashion = sc.nextInt();
        //2.把我衣服的时髦度跟女孩的时髦度进行对比就可以了
        boolean result = myFashion > girlFashion;
        //3. 打印结果
        System.out.println(result);
    }
}

六、四种逻辑运算符

1. 分类

符号 作用 说明
& 逻辑与(且) 并且,两边都为真,结果才是真
| 逻辑或 或者,两边都为假,结果才是假
^ 逻辑异或 相同为false,不同为true
! 逻辑非 取反

2. 样例

package com.itheima.logicoperator;
public class LogicoperatorDemo1{
    public static void main(String[] args){
        //1.& 并且
        //两边都为真,结果才是真
        System.out.println(true & true);//true
        System.out.println(false & true);//false
        System.out.println(true & false);//false
        System.out.println(false & false);//false
        //2.| 或者 
        //两边都为假,结果才是假
        System.out.println(true | true);//true
        System.out.println(false | true);//true
        System.out.println(true | false);//true
        System.out.println(false | false);//false        
    }
}
package com.itheima.logicoperator;
public class LogicoperatorDemo2{
    public static void main(String[] args){
        // ^ 异或 
        //相同为false,不同为true
        System.out.println(true ^ true);//false
        System.out.println(false ^ true);//true
        System.out.println(true ^ false);//true
        System.out.println(false ^ false);//false
        // ! 逻辑非 取反 
        //提示:
        //取反的感叹号不要写多次,要么不写,要么只写一次
        System.out.println(!false);//true
        System.out.println(!true);//false   
    }
}

七、短路逻辑运算符

1. 分类

符号 作用 说明
&& 短路与 结果和 & 相同,但是有短路效果
|| 短路或 结果和 | 相同,但是有短路效果

注:& | ,无论左边 true false,右边都要执行

&& || ,如果左边能确定整个表达式的结果,右边不执行

2. 样例

package com.itheima.logicoperator;
public class LogicoperatorDemo3{
    public static void main(String[] args){
        //1.&&
        //运行结果跟单个&是一样的
        //表示两边都为真,结果才是真
        System.out.println(true && true);//true
        System.out.println(false && true);//false
        System.out.println(true && false);//false
        System.out.println(false && false);//false
        //2.||
        //运行结果跟单个 | 是一样的
        //表示两边都为假,结果才是假
        System.out.println(true || true);//true
        System.out.println(false || true);//true
        System.out.println(true || false);//true
        System.out.println(false || false);//false   
        //3.短路逻辑运算符具有短路效果
        //简单理解:当左边的表达式能确定最终的结果,那么右边就不会参与运行了
        int a = 10;
        int b = 10;
        boolean result = ++a < 5 && ++b <5;
        System.out.println(result);//false
        System.out.println(a);//11
        System.out.println(b);//10
    }
}

3. 练习

package com.itheima.test;
public class Test3{
    public static void main(String[] args){
        /*
        数字6是一个真正伟大的数字,键盘录入两个整数
        如果其中一个为6,最终结果输出true
        如果它们的和为6的倍数,最终结果输出true
        其他情况都是false
        */
        //分析:
        //1.键盘录入两个整数
        // 变量a 变量b
        //2.a == 6 || b == 6 || (a + b) % 6 == 0
        //如果满足其中一个,那么就可以输出true
        //键盘录入两个整数
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数");
        int number1 = sc.nextInt();
        System.out.println("请输入第二个整数");
        int number2 = sc.nextInt();
        //可以短路逻辑运算符去连接三个判断
        boolean result = number1 == 6 || number2 == 6 || (number1 + number2) % 6 == 0;
        System.out.println(result);
    }
}

八、三元运算符

1. 格式

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

int max = a > b ? a : b;

2. 计算规则

① 首先计算关系表达式的值

② 如果值为true,表达式1的值就是运算结果

③ 如果值为false,表达式2的值就是运算结果

3. 样例

package com.itheima.ternaryoperator;
public class TernaryoperatorDemo1{
    public static void main(String[] args){
        //需求:使用三元运算符,获取两个数的较大值
        //分析:
        //1.定义两个变量记录两个整数
        int number1 = 10;
        int number2 = 20;
        //2.使用三元运算符获取两个整数的较大值
        //格式:关系表达式 ? 表达式1 : 表达式2;
        //整个三元运算符的结果必须要被使用
        int max = number1 > number2 ? number1 : number2;
        System.out.println(max);
        System.out.println(number1 > number2 ? number1 : number2);
    }
}

4. 练习

package com.itheima.test;
import java.util.Scanner;
public class Test4{
    public static void main(String[] args){
        /*
        需求:动物园里有两只老虎,体重分别通过键盘录入获得
        请用程序实现判断两只老虎的体重是否相同
        */
        //分析:
        //1.键盘录入两只老虎的体重
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一只老虎的体重");
        int weight1 = sc.nextInt();
        System.out.println("请输入第二只老虎的体重");
        int weight2 = sc.nextInt();   
        //2.比较
        //true false
        //相同 不同
        //System.out.println(weight1 == weight2);
        String result = weight1 == weight2 ? "相同" : "不同";
        System.out.println(result);     
    }
}
package com.itheima.test;
import java.util.Scanner;
public class Test5{
    public static void main(String[] args){
        /*
        需求:一座寺庙里住着三个和尚,已知他们的身高分别为150cm、200cm、165cm
        请用程序实现获取这三个和尚的最高身高
        */
        //1.定义三个变量记录三个和尚的身高
        int height1 = 150;
        int height2 = 210;
        int height3 = 165;
        //2.拿着第一个和尚和第二个和尚进行比较
        //再拿着结果和第三个和尚进行比较即可
        int temp = height1 > height2 ? height1 : height2;
        int max = temp > height3 ? temp : height;
        //ctrl + alt + L 自动格式化代码
        System.out.println(max);
    }
}

记住 () 即可

目录
相关文章
|
17天前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
17天前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
24天前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
27 2
|
16天前
|
Java 数据库连接 编译器
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
34 0
|
5天前
|
安全 Java API
java如何请求接口然后终止某个线程
通过本文的介绍,您应该能够理解如何在Java中请求接口并根据返回结果终止某个线程。合理使用标志位或 `interrupt`方法可以确保线程的安全终止,而处理好网络请求中的各种异常情况,可以提高程序的稳定性和可靠性。
35 6
|
20天前
|
设计模式 Java 开发者
Java多线程编程的陷阱与解决方案####
本文深入探讨了Java多线程编程中常见的问题及其解决策略。通过分析竞态条件、死锁、活锁等典型场景,并结合代码示例和实用技巧,帮助开发者有效避免这些陷阱,提升并发程序的稳定性和性能。 ####
|
18天前
|
存储 监控 小程序
Java中的线程池优化实践####
本文深入探讨了Java中线程池的工作原理,分析了常见的线程池类型及其适用场景,并通过实际案例展示了如何根据应用需求进行线程池的优化配置。文章首先介绍了线程池的基本概念和核心参数,随后详细阐述了几种常见的线程池实现(如FixedThreadPool、CachedThreadPool、ScheduledThreadPool等)的特点及使用场景。接着,通过一个电商系统订单处理的实际案例,分析了线程池参数设置不当导致的性能问题,并提出了相应的优化策略。最终,总结了线程池优化的最佳实践,旨在帮助开发者更好地利用Java线程池提升应用性能和稳定性。 ####
|
20天前
|
缓存 Java 开发者
Java多线程编程的陷阱与最佳实践####
本文深入探讨了Java多线程编程中常见的陷阱,如竞态条件、死锁和内存一致性错误,并提供了实用的避免策略。通过分析典型错误案例,本文旨在帮助开发者更好地理解和掌握多线程环境下的编程技巧,从而提升并发程序的稳定性和性能。 ####
|
14天前
|
安全 算法 Java
Java多线程编程中的陷阱与最佳实践####
本文探讨了Java多线程编程中常见的陷阱,并介绍了如何通过最佳实践来避免这些问题。我们将从基础概念入手,逐步深入到具体的代码示例,帮助开发者更好地理解和应用多线程技术。无论是初学者还是有经验的开发者,都能从中获得有价值的见解和建议。 ####
|
14天前
|
Java 调度
Java中的多线程编程与并发控制
本文深入探讨了Java编程语言中多线程编程的基础知识和并发控制机制。文章首先介绍了多线程的基本概念,包括线程的定义、生命周期以及在Java中创建和管理线程的方法。接着,详细讲解了Java提供的同步机制,如synchronized关键字、wait()和notify()方法等,以及如何通过这些机制实现线程间的协调与通信。最后,本文还讨论了一些常见的并发问题,例如死锁、竞态条件等,并提供了相应的解决策略。
38 3