概述
目录
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-originalday03code>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 运算符优先级
最后
以上就是难过皮卡丘为你收集整理的尚硅谷Java入门视频教程(三)3 Java基本语法------学习思路&算数、赋值、比较、逻辑、位运算符&三元运算&运算优先级1.上篇回顾2.运算符的全部内容,希望文章能够帮你解决尚硅谷Java入门视频教程(三)3 Java基本语法------学习思路&算数、赋值、比较、逻辑、位运算符&三元运算&运算优先级1.上篇回顾2.运算符所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复