尚硅谷Java入门视频教程(三)3 Java基本语法------学习思路&算数、赋值、比较、逻辑、位运算符&三元运算&运算优先级

这篇博客详细介绍了Java中的各种运算符,包括算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符和三元运算式,并通过实例解释了它们的用法和注意事项。例如,探讨了除法运算的小数处理、赋值运算符的连续赋值行为以及三元运算式的条件判断。此外,还通过代码展示了如何将一个三位数拆分成个位、十位和百位。
摘要由CSDN通过智能技术生成

目录

1.上篇回顾

2.运算符

2.1算术运算符

2.2赋值运算符

2.3 比较运算符

2.4 逻辑运算符

2.5 位运算符

2.6 三元运算式   (  )?  :  

2.7 运算符优先级

 


1.上篇回顾

HelloWorld-----学习基本Java语法

想挣钱 --->得写项目

一个项目(小项目下直接是模块) --->多个子系统 --->每个子系统下 --->模块 --->包 --->多个类 --->属性、方法

属性 --->对应数据部分

方法 --->对应操作部分 ---> 基本语法就是在学习方法中的部分如何编码

HelloWorld写入main()方法中,main()方法既是程序的入口、同时也是一个方法

将在类方法中编码比为做饭 

做饭是对各种食材进行加工 ; 程序是对各种类型的数据进行加工

食材名字 == 数据名字(类名、包名、方法名、变量名......) == 标识符 (标识符相关规则)

使用厨具对食材加工 == 关键字、运算符(public、class、void、static / 算数、比较、逻辑、赋值、位运算)

做饭的流程 == 程序运行的逻辑流程(顺序、分支、循环)

2.运算符

2.1算术运算符

除法:两个整数做除法,如果不能整除,会自动舍弃小数部分

除法:除数不能为0,如果除数为0,程序运行时会抛出数学异常

取模结果是正是负:和被模数的正负一致,和模数无关

模运算的结果也有可能是小数

Demo01ArithmeticOperator.java
/**
这个类测试算数运算符
*/
public class Demo01ArithmeticOperator{

    public static void main(String args[]){
        //正号   +
        int operator01 = 5;
        System.out.println(+operator01);//   5
        //负号   -
        int operator02 = 6;
        System.out.println(-operator02);//   -6
        //负负得正
        int operator03 = -3;
        System.out.println(-operator03);//   3

        //加法 :+
        int operatorAdd01 = 5;
        int operatorAdd02 = 3;
        int addResult = operatorAdd01 + operatorAdd02;
        System.out.println(addResult);//   8

        double operatorAdd03 = 10.6;
        double operatorAdd04 = 2.4;
        double addResuleDouble = operatorAdd03 + operatorAdd04;
        System.out.println(addResuleDouble);//   13.0

        //减法 :-
        int operatorSub01 = 10;
        int operatorSub02 = 2;
        int subResult = operatorSub01 - operatorSub02;
        System.out.println(subResult);//   8

        //乘法
        int operatorMul01 = 3;
        int operatorMul02 = 2;
        int mulResult = operatorMul01 * operatorMul02;
        System.out.println(mulResult);//   6

        //除法  能整除
        int operatorDiv01 = 8;
        int operatorDiv02 = 2;
        int divResult = operatorDiv01 * operatorDiv02;
        System.out.println(divResult);//   6

        //除法  不能整除  (声明过的变量不需要再声明)
        operatorDiv01 = 8;
        operatorDiv02 = 3;
        divResult = operatorDiv01 * operatorDiv02;
        System.out.println(divResult);//   2
        //除法的结果包含小数部分,赋值给int型后小数部分被舍弃
        //被除数不能为0 :抛出异常程序暂停:除0错误

        //整数除法,除不净,赋值给double类型,舍弃掉小数部分
        operatorDiv01 = 8;
        operatorDiv02 = 3;
        double divdoubleResult = operatorDiv01 * operatorDiv02;
        System.out.println(divdoubleResult );//   2.0

        //除0
        //抛出异常

        //取模,求余
        int operatorMod01 = 8;
        int operatorMod02 = 3;
        int modResult = operatorMod01 % operatorMod02;
        System.out.println(modResult);  // 2

        //负数取模: 被取模的数为负时,取模的结果也为负。模数为负时,取模结果为正
        operatorMod01 = -8;
        operatorMod02 = 3;
        int modResult = operatorMod01 % operatorMod02;
        System.out.println(modResult);  // -2

        //字符串连接
        boolean operatorJoin01 = true;
        float operatorJoin02 = 3.55f;
        System.out.println("123"+ operatorJoin01 +operatorJoin02 );  // 123true3.55

        // ++  --
        a++ : 先赋值后加1   ++a : 先加1后赋值


    }
}

注意:

除法:两整数相除,不能整除的时候,运算结果自动舍弃小数部分。

除法:除数不能为0,程序运行时为0抛出异常。

取模:取模结果的正负:看被模数的正负。(小数取模时运算结果可能为小数)。

练习:把一个三位数拆分成:个位:十位:百位

public class test{
    public static void main(String args[]){
        //设定一个三位数,求各个位数上的值
        int originalValue = 583;
        //取百位数    除一百
        int hundredValue = originalValue / 100;
        //取十位    对一百求模  (余数)  然后 除以十 就是  十位数
        int tenValue = originalValue % 100 / 10;
        //取个位数    对十求模   结果就是个位数
        int singleValue = originalValue % 10;
        
        System.out.println("百位数 = " + hundredValue);
        System.out.println("十位数 = " + tenValue);
        System.out.println("个位数 = " + singleValue );
    }
}

2.2赋值运算符

赋值运算符:=     (可以连续赋值)  x = y = z = 10;  先把10赋值给z然后把z = 10整体(整体的值为10)赋值给y,再把整体赋值给x

运算的方向:从右往左计算

int n = 10;
// 按照基本语法推测
// 第一步:取n的值,用来做加法 [10 + ?]
// 第二步:++n先加再取值,n变成了11 [10 + 11]
// 第三步:执行加法,得到21
// 第四步:计算+=操作 n = n + 21 [11 + 21]
// 第五步:计算n++里面的自增1,n从32变成33
n += (n++) + (++n);  // n = n + n++ + ++n  
// 根据前面推理的结果这里应该是33
// 但是实际运行的结果是32
System.out.println(n);

这个问题需要借助字节码文件的分析:javap -c Demo07GiveOperatorExercise.class

D:\record-video-original\day03\code>javap -c Demo07GiveOperatorExercise.class
Compiled from "Demo07GiveOperatorExercise.java"
public class Demo07GiveOperatorExercise {
public Demo07GiveOperatorExercise();
 Code:
 0: aload_0
 1: invokespecial #1 // Method java/lang/Object."":()V
 4: return
public static void main(java.lang.String[]);
 Code:
 0: bipush 10
 2: istore_1
 3: iload_1
 4: iload_1
 5: iinc 1, 1
 8: iinc 1, 1
 11: iload_1
 12: iadd
 13: iadd
 14: istore_1
 15: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
 18: iload_1
 19: invokevirtual #3 // Method java/io/PrintStream.println:(I)V
 22: return
}
// 根据反编译字节码文件,看到实际执行过程后,每一步推理如下:
// 0: bipush 10 准备常量10
// 2: istore_1 将10赋值给n
int n = 10;
// 3: iload_1 读取变量n的值 [10 + ?]
// 4: iload_1 读取变量n的值 [10 + 10]
// 5: iinc 1, 1 执行自增1 n从10变成11
// 8: iinc 1, 1 执行自增1 n从11变成12
// 11: iload_1 读取变量n的值,现在是12
// 12: iadd 执行加法10 + 10等于20
// 13: iadd 执行加法12 + 20等于32
// 14: istore_1 把最后一个加法的结果32赋值给n
n += (n++) + (++n);
// 最后n是32
System.out.println(n);

2.3 比较运算符

2.4 逻辑运算符

2.5 位运算符

2.6 三元运算式   (  )?  :  

 表达式1 与 表达式2 为同一种类型 ; 

三元运算与if - else 区别:

1. 三元运算可以转换为if - else 语句。

2. 三元运算符要求必须返回一个结果。

3. if后可以跟多个代码块。

例:( x > y ) ? x : y ;  // 若x大于y返回x,否则返回y。

2.7 运算符优先级

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值