java 第四章学习 运算符
作者:互联网
运算符
运算符介绍
-
运算符介绍
运算符是一种特殊的符号,用以表示数据的计算,赋值和比较等。
-
算术运算符
-
赋值运算符
-
关系运算符(比较运算符)
-
逻辑运算符
-
位运算符(需要二进制基础)
-
三元运算符
算术运算符
-
介绍
算术运算符是对数值类型的变量进行运算的,在Java程序中使用的非常多。
-
算术运算符一览
-
算术运算符注意点
-
对于除号,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。例如:int x =10 /3 结果是3
-
取模的本质(重点):a % b = a - a / b * b;
-
自增 ++
- 作为独立语句的使用:前++和后++都完全等价于 i=i+1;
- 作为表达式使用:前++:++i先自增后赋值 后++:i++先赋值后自增。
关系运算符
-
介绍
-
关系运算符的结果都是boolean型,也就是要么是true,要么是false
-
关系表达式 经常用在 if结构的条件中或者循环结构的条件中
-
关系运算符一览
-
细节说明
-
关系运算符的结果都是boolean型,也就是要么是true,要么是false。
-
关系运算符组成的表达式,我们称之为关系表达式。 a>b
-
比较运算符"=="不能误写成"="
逻辑运算符
-
介绍
用于连接多个条件 (多个关系表达式),最终的结果也是一个boolean值。
-
逻辑运算符一览
分为两组学习
-
短路与&& ,短路或|| ,取反 !
-
逻辑与 & 逻辑或 |,逻辑异或^
逻辑运算符规则
-
a&b &叫逻辑与:规则:当a和b同时为true,则结果为true,否则为false
-
a&&b &&叫短路与: 规则:当a和b同时为true,则结果为true,否则为false
-
a|b:|叫逻辑或,规则:当a和b,有一个为true,则结果为true,否则为false
-
a||b :||叫短路或,规则:当a和b,有一个为true,则结果为true,否则为false
-
!a:叫取反,或者非运算。但a为true,则结果为false,当a为false时,则结果为true
-
a^b:叫逻辑异或,当a和b不同时,则结果为true,否则为false
&& 和& 基本规则
名称 | 语法 | 特点 |
---|---|---|
短路与&& | 条件1&&条件2 | 两个条件都为true,结果为true,否则为false |
逻辑与& | 条件1&条件2 | 两个条件都为true,结果为true,否则为false |
-
&& 和 & 使用区别
-
&& 短路与: 如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高
-
& 逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低
-
开发中,我们使用的基本是短路与 && ,效率高
||和|基本规则
名称 | 语法 | 特点 |
---|---|---|
短路或|| | 条件1||条件2 | 两个条件只要有一个成立,结果为true,否则为false |
逻辑或| | 条件1|条件2 | 两个条件只要有一个成立,结果为true,否则为false |
-
|| 和 | 使用区别
-
||短路或:如果第一个条件为true,这第二个条件不会判断,最终结果为true,效率高
-
| 逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低
-
开发中,我们基本使用短路或 ||
取反基本规则
名称 | 语法 | 特点 |
---|---|---|
!非(取反) | !条件 | 如果条件本身成立,结果为false,否则为true |
-
案例演示
boolean x = true;
boolean y = false;
short z = 46;
if((z++ == 46) && (y = true)) {
z++;
}
if((x = false)|| (++z == 49)) {
z++;
}
System.out.println("z=" + z);//z = 50
赋值运算符
-
介绍
赋值运算符就是将某个运算后的值,赋给指定的变量。
-
赋值运算符的分类
-
基本赋值运算符 = int a = 10;
-
复合赋值运算符
+=,-=,*=,/=, %=等,重点学习一个 +=,其他的使用是一个道理
a += b [等价于 a = a + b]
-
-
赋值运算符特点
-
运算顺序从右往左 int num = a + b + c;
-
赋值运算符的左边,只能是变量,右边可以是变量,表达式,常量值。例如:int num = 20;int num2 = 78 * 34 - 10;int num3 = a;
-
复合赋值运算符等价于下面的效果。
比如: a+=3;等价于 a = a+3;其他类推
-
复合赋值运算符会进行强制类型转换 byte b = 2(等价于 b = (byte)(b + 2)),b++;
三元运算符
-
基本语法
条件表达式?表达式1:表达式2;
运算规则:
1. 如果条件表达式为true,运算后的结果是表达式1;
1. 如果条件表达式为false,运算后的结果为表达式2;
口诀:【一灯大师:一真大师】
-
使用细节
-
表达式1和表达式2要为可以赋给接收变量的类型(或者可以自动转换)。
-
三元运算符可以转成if--else语句
int res = a > b ? a++ : --b;
等价于 if(a > b) res = a++; else res = --b;
运算符的优先级
标识符的命名规则和规范
-
标识符概念
-
Java对各种变量、方法和类等命名时使用的字符序列称为标识符
-
凡是可以自己起名字的地方都叫标识符 int num1 = 90;
-
标识符的命名规则(必须遵守)【背诵下来】
-
由26个英文字母大小写,0~9,_或者$组成
-
数字不可以开头。int 3ab = 1;//错误
-
不可以使用关键字和保留字,但能包含关键字和保留字。
-
Java中严格区分大小写,长度无限制。 int totalNum = 10; int n = 90;
-
标识符不能包含空格。 int a b = 90;//错误
-
标识符命名规范[更加专业]
-
包名:多单词组成时所有字母都小写:aaa.bbb.ccc//比如:com.hsp.crm
-
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz[大驼峰],比如:TankShortGame
-
变量名、方法名:多单词组成时,第一个单词的首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz[小驼峰,简称驼峰法] 比如:tankShotGame
-
常量名:所有字母都大写。多个单词时每个单词用下划线连接:XXX_YYY_ZZZ,比如:定义一个所得税率 TAX_RATE
-
后面学习到类,包,接口时,要遵守以上的命名规范,更加详细的可以查看文档。
关键字
-
关键字的定义和特点
定义:被JAVA语言赋予了特殊含义,用作专门用途的字符串(单词)
特点:关键字中所有字母都为小写
保留字i
-
介绍
java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使用,自己命名标识符时要避免使用这些保留字: byValue、cast、future、generic、inner、operator、outer、rest、var、goto、const
键盘输入语句
-
介绍
在编程中,需要接收用户输入的信息,就可以使用键盘输入语句来获取。
Input.java,需要一个扫描器(对象),就是Scanner
-
步骤
-
导入该类的所在包,java.util.*
-
创建该类对象(声明变量)
-
调用里面功能
进制
-
进制介绍
对于整数:有四种表示方式
-
二进制 :0,1,满2进1.以0b或者0B开头。
-
十进制:0~9,满10进1.
-
八进制:0-7,满8进1.以数字0开头。
-
十六进制:0-9以及A(10)-F(15),满16进1.以0x或者0X开头表示。此处的A-F不区分大小写。
-
案例演示
int n1 = 0b1010;
int n2 = 1010;
int n3 = 01010;
int n4 = 0x1010;
-
进制图示说明
进制的转换(基本功)
二进制转换成十进制示例
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和。
案例: 请将0b1011转成十进制的数。
0b1011 = 1 * 2的(1-1)次方 + 1 * 2的(2-1)次方 + 1 * 2的(4-1)次方 = 1 + 2 + 8 =11
八进制转换成十进制案例
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和。
案例:请将0234转成十进制的数
0234 = 4* 8的0次方+3*8的一次方+2 * 8的二次方 = 4+24+128 = 156
十六进制转换成十进制示例
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和。
案例:请将0x23A转换成十进制的数
0x23A = 10 * 16 ^0 + 3 * 16 ^1 + 2 * 16^2 =10 +48 + 512 = 570
十进制转换为二进制
规则:将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。
案例:请将34转换成二进制。 34 = 0B00100010
十进制转换成八进制
规则:将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的八进制。
案例:请将131转成八进制 = 0203
十进制转换成十六进制
规则:将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的十六进制。
案例:请将237转换成16进制 ==》0Xed
二进制转换成八进制
规则:从低位开始,将二进制数每三位一组,转换成对应的八进制数即可。
案例:请将0b11010101转换成八进制
0b11(3)010(2)101(5) ==> 0325
二进制转换成十六进制
规则:从低位开始,将二进制数每四位一组,转换成对应的十六进制数即可。
案例:请将0b1010101转换成十六进制
0b1010101 = 0xD5
八进制、十六进制转换成二进制
八进制转换成二进制
规则:将八进制数每一位,转成对应的一个3位的二进制数即可。
案例:请将0237转换成二进制
0237 = 0b10011111
十六进制转换成二进制
规则:将十六进制数每一位,转成对应的一个4位的二进制数即可。
案例:请将0x23B转换成二进制
0x23B =0b001000111011
二进制在运算中的说明
-
二进制是逢2进位的进位制,0、 1是基本算符。
-
现代的电子计算机技术全部采用的二进制,因为它只是用0和1两个数字符号,非常简单方便,易于用电子方式实现。计算机内部处理的信息,都是采用二进制数来表示的。二进制(Binary)数用0和1两个数字以及其组合来表示任何数。进位的规则是逢2进1,数字1在不同的位上代表不同的值,按从右至左的次序,这个值以二倍递增。
原码、反码、补码(重点 难点)
网上对原码,反码,补码的解释太过复杂,下面精简的内容要背诵下来
对于有符号的而言:
-
二进制的最高位是符号位:0表示正数,1表示负数(0->0 1-->-)
-
正数的原码,反码,补码都一样(三码合一)
-
负数的反码 = 它的原码符号位不变,其他位取反(0 -->1 1--> 0)
-
负数的补码 = 它的反码 + 1; 负数的反码 = 负数的补码 - 1
-
0的反码、补码都是0
-
Java没有无符号数,换言之,Java中的数都是有符号的
-
在计算机运算的时候,都是以补码的方式来运算的
-
当我们看运算结果的时候,要看他的原码(!!)
位运算符
-
Java中有7个位运算(&、|、^、~、>>、<<和>>>)
-
分别是按位与&、按位或|、按位异或^、按位取反~,它们的运算规则是:
-
按位与&:两位全为1,结果为1,否则为0
-
按位或|:两位有一个为1,结果为1,否则为0
-
按位异或^:两位一个为0,一个为1,结果为1,否则为0
-
按位取反~:0--》1 1--》0
-
还有3个位运算符>>、<<和>>>,运算规则:
-
算术右移>>:低位溢出,符号位不变,并用符号位补溢出的高位
-
算术左移<<:符号位不变,低位补0
-
逻辑右移>>>也叫无符号右移,运算规则是:低位溢出,高位补0
-
特别说明:没有<<<符号
-
案例演示
-
int a = 1 >> 2//1=>00000001--->00000000本质1/2/2 = 0
-
int c = 1 << 2//1=>00000001---->00000100本质1 * 2 * 2 = 4
计算下列表达式的结果
-10.5 % 3 = ?
//a % b 当a是小数时,公式 = a - (int) a / b * b = -10.5 - (-10) / 3 * 3 = -10.5 + 9 = -1.5
//注意:有小数运算,得到结果是近似值
标签:转换成,false,二进制,运算符,int,java,true,第四章 来源: https://www.cnblogs.com/xiaozhoustudy/p/16436127.html