编程语言
首页 > 编程语言> > java 第四章学习 运算符

java 第四章学习 运算符

作者:互联网

运算符

运算符介绍

运算符是一种特殊的符号,用以表示数据的计算,赋值和比较等。

  1. 算术运算符

  2. 赋值运算符

  3. 关系运算符(比较运算符)

  4. 逻辑运算符

  5. 位运算符(需要二进制基础)

  6. 三元运算符

算术运算符

算术运算符是对数值类型的变量进行运算的,在Java程序中使用的非常多。

算术运算符

  1. 对于除号,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。例如:int x =10 /3 结果是3

  2. 取模的本质(重点):a % b = a - a / b * b;

  3. 自增 ++

关系运算符

  1. 关系运算符的结果都是boolean型,也就是要么是true,要么是false

  2. 关系表达式 经常用在 if结构的条件中或者循环结构的条件中

关系运算符

  1. 关系运算符的结果都是boolean型,也就是要么是true,要么是false。

  2. 关系运算符组成的表达式,我们称之为关系表达式。 a>b

  3. 比较运算符"=="不能误写成"="

逻辑运算符

用于连接多个条件 (多个关系表达式),最终的结果也是一个boolean值。

分为两组学习

  1. 短路与&& ,短路或|| ,取反 !

  2. 逻辑与 & 逻辑或 |,逻辑异或^

逻辑运算符

逻辑运算符规则

  1. a&b &叫逻辑与:规则:当a和b同时为true,则结果为true,否则为false

  2. a&&b &&叫短路与: 规则:当a和b同时为true,则结果为true,否则为false

  3. a|b:|叫逻辑或,规则:当a和b,有一个为true,则结果为true,否则为false

  4. a||b :||叫短路或,规则:当a和b,有一个为true,则结果为true,否则为false

  5. !a:叫取反,或者非运算。但a为true,则结果为false,当a为false时,则结果为true

  6. a^b:叫逻辑异或,当a和b不同时,则结果为true,否则为false

&& 和& 基本规则

名称语法特点
短路与&& 条件1&&条件2 两个条件都为true,结果为true,否则为false
逻辑与& 条件1&条件2 两个条件都为true,结果为true,否则为false
  1. && 短路与: 如果第一个条件为false,则第二个条件不会判断,最终结果为false,效率高

  2. & 逻辑与:不管第一个条件是否为false,第二个条件都要判断,效率低

  3. 开发中,我们使用的基本是短路与 && ,效率高

||和|基本规则

名称语法特点
短路或|| 条件1||条件2 两个条件只要有一个成立,结果为true,否则为false
逻辑或| 条件1|条件2 两个条件只要有一个成立,结果为true,否则为false
  1. ||短路或:如果第一个条件为true,这第二个条件不会判断,最终结果为true,效率高

  2. | 逻辑或:不管第一个条件是否为true,第二个条件都要判断,效率低

  3. 开发中,我们基本使用短路或 ||

取反基本规则

名称语法特点
!非(取反) !条件 如果条件本身成立,结果为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

赋值运算符

  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 = (byte)(b + 2)),b++;

三元运算符

条件表达式?表达式1:表达式2;

运算规则

 1. 如果条件表达式为true,运算后的结果是表达式1;
 1. 如果条件表达式为false,运算后的结果为表达式2;

口诀:【一灯大师:一真大师】

  1. 表达式1和表达式2要为可以赋给接收变量的类型(或者可以自动转换)。

  2. 三元运算符可以转成if--else语句

 int res = a > b ? a++ : --b;

等价于 if(a > b) res = a++; else res = --b;

运算符的优先级

标识符的命名规则和规范

  1. Java对各种变量、方法和类等命名时使用的字符序列称为标识符

  2. 凡是可以自己起名字的地方都叫标识符 int num1 = 90;

  1. 由26个英文字母大小写,0~9,_或者$组成

  2. 数字不可以开头。int 3ab = 1;//错误

  3. 不可以使用关键字和保留字,但能包含关键字和保留字。

  4. Java中严格区分大小写,长度无限制。 int totalNum = 10; int n = 90;

  5. 标识符不能包含空格。 int a b = 90;//错误

  1. 包名:多单词组成时所有字母都小写:aaa.bbb.ccc//比如:com.hsp.crm

  2. 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz[大驼峰],比如:TankShortGame

  3. 变量名、方法名:多单词组成时,第一个单词的首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz[小驼峰,简称驼峰法] 比如:tankShotGame

  4. 常量名:所有字母都大写。多个单词时每个单词用下划线连接:XXX_YYY_ZZZ,比如:定义一个所得税率 TAX_RATE

  5. 后面学习到类,包,接口时,要遵守以上的命名规范,更加详细的可以查看文档。

关键字

定义:被JAVA语言赋予了特殊含义,用作专门用途的字符串(单词)

特点:关键字中所有字母都为小写

关键字

关键字2

保留字i

java保留字:现有Java版本尚未使用,但以后版本可能会作为关键字使用,自己命名标识符时要避免使用这些保留字: byValue、cast、future、generic、inner、operator、outer、rest、var、goto、const

键盘输入语句

在编程中,需要接收用户输入的信息,就可以使用键盘输入语句来获取。

Input.java,需要一个扫描器(对象),就是Scanner

  1. 导入该类的所在包,java.util.*

  2. 创建该类对象(声明变量)

  3. 调用里面功能

进制

对于整数:有四种表示方式

  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不区分大小写。

 int n1 = 0b1010;
 int n2 = 1010;
 int n3 = 01010;
 int n4 = 0x1010;

进制

进制2

进制的转换(基本功)

二进制转换成十进制示例

规则:从最低位(右边)开始,将每个位上的数提取出来,乘以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

二进制在运算中的说明

  1. 二进制是逢2进位的进位制,0、 1是基本算符。

  2. 现代的电子计算机技术全部采用的二进制,因为它只是用0和1两个数字符号,非常简单方便,易于用电子方式实现。计算机内部处理的信息,都是采用二进制数来表示的。二进制(Binary)数用0和1两个数字以及其组合来表示任何数。进位的规则是逢2进1,数字1在不同的位上代表不同的值,按从右至左的次序,这个值以二倍递增。

原码、反码、补码(重点 难点)

网上对原码,反码,补码的解释太过复杂,下面精简的内容要背诵下来

对于有符号的而言:

  1. 二进制的最高位是符号位:0表示正数,1表示负数(0->0 1-->-)

  2. 正数的原码,反码,补码都一样(三码合一)

  3. 负数的反码 = 它的原码符号位不变,其他位取反(0 -->1 1--> 0)

  4. 负数的补码 = 它的反码 + 1; 负数的反码 = 负数的补码 - 1

  5. 0的反码、补码都是0

  6. Java没有无符号数,换言之,Java中的数都是有符号的

  7. 在计算机运算的时候,都是以补码的方式来运算的

  8. 当我们看运算结果的时候,要看他的原码(!!)

位运算符

  1. 按位与&:两位全为1,结果为1,否则为0

  2. 按位或|:两位有一个为1,结果为1,否则为0

  3. 按位异或^:两位一个为0,一个为1,结果为1,否则为0

  4. 按位取反~:0--》1 1--》0

  1. 算术右移>>:低位溢出,符号位不变,并用符号位补溢出的高位

  2. 算术左移<<:符号位不变,低位补0

  3. 逻辑右移>>>也叫无符号右移,运算规则是:低位溢出,高位补0

  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