Hi i,m JinXiang
⭐ 前言 ⭐
本篇文章主要介绍Java算术运算符、逻辑运算符、四种进制介绍详细使用以及部分理论知识
🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁
🍉博主收将持续更新学习记录获,友友们有任何问题可以在评论区留言
目录
运算符介绍
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
1、算数运算符
算术运算符是对数值类型的变量进行运算的,在
Java
程序中使用的非常多。
1.1、算数运算符预览
1.2、算数运算符的使用
- /
- 取模(取余): n %
- 在%中的本质 看一个公式 a% b = a- a / b * b
- 自增:++
- 作为独立的语句使用:前++和后++都完全等价于 i = i + 1
- 作为表达式使用(重):
- 前++:++i 先自增后赋值
- 后++:i++ 先赋值后自增
- 自减:- -
- 作为独立的语句使用:前--和后--都完全等价于 i = i - 1
- 作为表达式使用(重):
- 前- -:- -i 先自减后赋值
- 后- -:i- - 先赋值后自减
1.3、算数运算符使用注意细节
1.4、自增自减练习题
//测试输出
inti1=10;
inti2=20;
inti=i1++;
System.out.print("i="+i);//10
System.out.println("i2="+i2);//20 i=--i2;
System.out.print("i="+i);//19
System.out.println("i2="+i2);//19
1.5、练习题
题目:
步骤:
结果:
2、关系运算符(比较运算符)
- 1、关系运算符的结果都是boolean型,只有true和false两种结果
- 2、关系表达式 经常用在if结构的条件中或循环结构的条件中
2.1、关系运算符预览
2.2、关系运算符的使用
- 相当于:==
- 不等于:!
- 小于:<
- 大于:>
- 小于等于:<=
- 大于等于:>=
- 检查是否是类:instanceof
2.3、练习题
3、逻辑运算符
用于连接多个条件(多个关系表达式),最终的结果也是一个boolean值。
3.1、逻辑运算符预览
√ :分为两组学习
- 1、短路与 && 短路或 || 取反!
- 2、逻辑与 & 逻辑或 | 和 ^ 逻辑异或
3.2、逻辑运算规则
3.3、短路与“ && ”和逻辑与“ & ”的区别
- //对于&&短路与而言,如果第一个条件为false,后面的条件不再判断
- //对于&逻辑与而言,如果第一个条件为false,后面的条件仍然会判断
&& 短路与:如果第一个条件为 false ,则第二个条件不会判断,最终结果为 false ,效率高 &逻辑与:不管第一个条件是否为 false ,第二个条件都要判断,效率低 扩展:开发中,我们使用的基本是使用短路与 &&, 效率高
3.4、“ || ”和“ | ”的使用区别
- ||短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true,效率高
- |逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低
- 扩展:开发中,我们基本使用 ||
3.5、“ !”取反的使用规则
- 非(取反):“ ! ” !条件 如果条件本身成立,结果为false,否则为true
3.6、“ ^ ”逻辑异或的使用规则
- a^b:叫逻辑异或
- 当a和b不同时,则结果为true,否则为false
- ^逻辑异或,System.out.println((4<1)^(6>3));//?
4、赋值运算符
赋值运算符就是将某个运算后的值,赋给指定的变量
4.1、基本赋值运算符
- “ = ” int a = 10
4.2、复合赋值运算符
- +=,-=,*=,/=,%=等,重点解释一个+=,其它的使用是一个道理
- “ += ” a += b; [等价a=a+b;]
4.3、赋值运算符特点
- 1、运算顺序从右往左 int num = a + b + c ;
- 2、赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值
- int num = 20; int num2 = 78 * 34 - 10; int num3 = a;
- 3、复合赋值运算符等价于下面的效果
- 比如: a+ =3;等价于a=a+3;编辑
- 4、复合赋值运算符会进行类型转换。
- byte b = 2; b+=3: b++:
5、三元运算符
5.1、基本语法
- 条件表达式?表达式1:表达式2;
5.2、三元运算符运算规则
- 1、如果条件表达式为true,运算后的结果是表达式1;
- 2、如果条件表达式为false,运算后的结果是表达式2;
- 口诀:[一灯大师:一真大师]
5.3、三元运算符使用
int a=10;
int b=99;
//解读
//1.a>b为false
//2.返回b--,先返回b的值,然后在b-1 //3.返回的结果是99
int result = a>b? a++ : b--;
System.out.println("result="+result);
System.out.println("a="+a);
System.out.println("b="+b);
5.4、使用细节
- 1、表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换)
- 2、三元运算符可以转成if--else语句
-
int res = a > b ? a++: --b;if ( a > b ) res = a++;else res = --b;
5.5、三元运算符使用细节
- //表达式1和表达式2要为可以赋给接收变量的类型
-
//(或可以自动转换/或者强制转换) inta=3; intb=8; intc=a>b?(int)1.1:(int)3.4;//可以的 doubled=a>b?a:b+3;//可以的,满足int->double
5.6、练习题
1、题目:实现三个数的最大值
2、分析
// 案例:实现三个数的最大值int n1 = 553;int n2 = 33;int n3 = 123;// 思路//1. 先得到 n1 和 n2 中最大数 , 保存到 max1//2. 然后再求出 max1 和 n3 中的最大数,保存到 max2
3、编写
int max1 = n1 > n2 ? n1 : n2;int max2 = max1 > n3 ? max1 : n3;System.out.println(" 最大数 ="+max2);
4、结果
最大数 = 553
6、运算符优先级
- 1、运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。
- 如下表,上一行运算符总优先于下一行。
- 2、只有单目运算符、赋值运算符是从右向左运算的。
6.1、运算符优先级预览
6.2、运算符的简单分类排序
- 1、(),{}等
- 2、单目运算符
- 3、算数运算符
- 4、位移运算符
- 5、比较运算符
- 6、逻辑运算符
- 7、三元运算符
- 8、赋值运算符
7、标识符的命名规则和规范
7.1、标识符概念
- 1. Java 对各种变量、方法和类等命名时使用的字符序列称为标识符
- 2.凡是自己可以起名字的地方都叫标识符int num1 = 90;
7.2、标识符的命名规则(必须遵守)
- 1、由26个英文字母大小写,0-9,或$组成
- 2、数字不可以开头。int 3ab = 1;//错误
- 3、不可以使用关键字和保留字,但能包含关键字和保留字。
- 4、 Java中严格区分大小写,长度无限制。int totalNum = 10; int n = 90;
- 5、标识符不能包含空格。intab = 90;
7.3、标识符的命名规范
- 1、包名:多单词组成时所有字母都小写: aaa.bbb.ccc //比如com.hsp.crm
- 2、类名、接口名:多单词组成时,所有单词的首字母大写: XxxYyyZzz 【大驼峰】
- 比如:TankShotGame特点:关键字中所有字母都为小写
- 3、变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个
- 单词首字母大写: xxxYyyZzz 【小驼峰】
- 比如: tankShotGame
- 4、常量名:所有字母都大写。多单词时每个单词用下划线连接: XXX_YYY_ZZZ
- 比如:定义-个所得税率TAX_RATE
7.4、Java中的关键字
- 定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
- 特点:关键字中所有字母都为小写
8、如何在键盘中输入语句
●介绍
在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。
Input,java ,需要一个扫描器(对象),就是Scanner
使用步骤:
- 1)导入该类的所在包,java.util.*
- 2)创建该类对象(声明变量)
- 3)调用里面的功能
9、四种进制介绍
9.1、对于整数,有四种表示方式:
- 1、二进制: 0,1,满2进1.以0b或0B开头。
- 2、十进制: 0-9,满10进1.
- 3、八进制: 0-7 ,满8进1.以数字0开头表示。
- 4、十六进制: 0-9及A(10)-F(15), 满16进1.以0x或0X开头表示。此处的A- F不区
- 分大小写。
9.2、代码演示四种进制
//演示四种进制
//
publicclassBinaryTest{
publicstaticvoidmain(String[]args){
//n1二进制
int n1 = 0b1010;//n210进制
int n2 = 1010;
//n38进制
int n3 = 01010;
//n416进制
int n4 = 0X10101;
System.out.println("n1="+n1);
System.out.println("n2="+n2);
System.out.println("n3="+n3);
System.out.println("n4="+n4);
System.out.println(0x23A);
}
}
9.3、进制的图示
9.4、进制的转换(基本功)
9.4.1、第一组
- 二进制转十进制
- 规则:从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数- 1)次方, 然后求和。
- 案例:把0b1011 转成十进制
- 0b1011 = 1 * 2的(1-1)次方 + 1 * 2 的(2-1)次方 + 0 * 2的(3-1)次方 + 1 * 2 的(4-1)次方的方法 = 计算结果:(1 + 2 + 0 + 8 = 11)
- 八进制转十进制
- 规则:从最低位开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和。
- 案例:把0234转成十进制
- 0234 = 4 * 8^ 0 + 3 * 8^1 + 2 * 8^2 = 计算结果(4+24+128=156)
- 十六进制转十进制
- 规则:从最低位(右边)开始,将每个位上的数提取出来, 乘以16的(位数-1)次方,然后求和。
- 案例:把0x23A转成十进制
- 0x23A = 10 * 16^0 + 3 * 16^1 + 2 * 16^0 = 计算结果(10 + 48 + 512 = 570)
9.4.2、第二组
- 十进制转二进制
-
规则:将该数不断除以 2, 直到商为 0为止,然后将每步得到的余数倒过来,就是对应的二进制
-
案例:把 34转成二进制=>0B100010
-
计算结果是:0B100010
-
- 十进制转八进制
-
规则:将该数不断除以 8, 直到商为 0 为止,然后将每步得到的余数倒过来,就是对应的八进制
-
案例:请将 131 转成八进制 =>0203
- 计算结果是:0203
-
- 十进制转十六进制
-
规则:将该数不断除以 16 ,直到商为 0 为止,然后将每步得到的余数倒过来,就是对应的十六进制。
-
案例:请将 237 转成十六进制 =>0xED
-
-
9.4.3、第三组
- 二进制转八进制
-
规则:从低位开始 , 将二进制数每三位一组,转成对应的八进制数即可。
-
案例:请将ob11010101 转成八进制
-
ob11(3)010(2)101(5) => 0325
-
- 二进制转十六进制
-
规则:从低位开始,将二进制数每四位一组,转成对应的十六进制数即可。
-
案例:请将ob11010101 转成十六进制
-
ob1101(D)0101(5) = 0xD5
-
9.4.4、第四组
- 八进制转二进制
-
规则:将八进制数每 1 位,转成对应的一个3位的二进制数即可。案例:请将 0237 转成二进制
-
02(010) 3(011) 7(111) = 0b010011111
-
- 十六进制转二进制
-
规则:将十六进制数每 1 位,转成对应的 4 位的一个二进制数即可。
-
案例:请将0x23B转成二进
-
0x2(0010) 3(0011) B(1011) = 0b001000111011
-
10、二进制在运算中的说明
- 1.二进制是逢2进位的进位制,0、1是基本算符。
- 2.现代的电子计算机技术全部采用的是二进制,因为它只使用0、1两个数字符号,非常简单方便,易于用电子方式实现。计算机内部处理的信息,都是采用二进制数来表示的。二进制(Binary) 数用0和1两个数字及其组合来表示任何数。进位规则是"逢2进1",数字1在不同的位上代表不同的值,按从右至左的次序,这个值以二倍递增。
10、源码、反码、补码(重点 难点)
简介:
- 1、二进制的最高位是符号位: 0表示正数,1表示负数(口诀: 0- > 0 1- > -)
- 2、正数的原码,反码,补码都一样(三码合一)
- 3、负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)
- 4、负数的补码=它的反码+1 ,负数的反码=负数的补码- 1
- 5、0的反码,补码都是0
- 6、java没有无符号数,换言之,java中的数都是有符号的
- 7、在计算机运算的时候,都是以补码的方式来运算的
- 8、当我们看运算结果的时候,要看他的原码
11、位运算符
Java中有7个运算符(&、|、^、~、>>、<<、和>>>)
分别是按位与&、按位或|、按位异或^ 按位取反 ,他们的运算规则是:
- 按位与& : 两位全为1,结果为1,否则为0
- 按位或 | : 两位有一个为1,结果为1,否则为0
- 按位异或^ : 两位一个为0,一个为1,结果为1,否则为0
- 按位取反~ : 0->1 , 1->0
看完点赞~人美心善