[Java基础] 运算符(三)

本文详细介绍了Java编程中的运算符分类、运算符优先级、标识符概念及命名规则,包括算术、关系、逻辑运算、赋值、三元运算和位运算,以及进制中的源码、反码和补码概念。

一、运算符

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

1. 算术运算符

介绍

对数值类型的变量进行运算

分类

运算运算符
正号+
负号-
+
-
*
/
取模(取余)%
自增(前)++a
自增(后)a++
自减(前)- - b
自减(后)b - -
字符串相加+

注意示例

int i = 1;
i = i++;	//⚠️i = 1
			//1⃣️temp = i
			//2⃣️i = i + 1;
			//3⃣️i = temp;
int i = 1;
i = ++i;	//⚠️i = 2
			//1⃣️i = i + 1;
			//2⃣️temp = i;
			//3⃣️i = temp;
double d1 = 10/4;	//输出2.0
double d2 = 10.0/4	//输出2.5

公式:a%b = a - a / b * b

System.out.println(-10 % 3);	//输出-1
System.out.println(10 % -3);	//输出1
System.out.println(-10 % -3);	//输出-1

2. 关系运算符

介绍

结果都是boolean型,也就是要么是true,要么是false

分类

运算运算符
想等于==
不等于!=
小于<
大于>
小于等于<=
大于等于>=

3. 逻辑运算符

介绍

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

分类

运算运算符
短路与&&
短路或||
逻辑与&
逻辑或
取反!
逻辑异或^

短路与&&和逻辑与&的使用区别:

短路与&&:如果第一个条件为false,则后面的条件不再判断
逻辑与&: 如果第一个条件为false,则后面的条件都要判断(效率低)

int a = 2;
int b = 4;
if(a<1 && ++b<10)	//第一个条件为false
{
}
System.out.println(b);	//b = 4;

if(a<1 || ++b<10)	//第一个条件为false
{
}
System.out.println(b);	//b = 5;

注意示例

boolean x = true;
boolean y = false;
int z = 1;
if((z++ == 1)&&(y=true))	//⚠️是赋值true,z+1=2
{
	z++;//z+1=3
}
if((x=false)||(++z == 4))	//⚠️是赋值false,z+1=4
{
	z++;//z+1=5
}
System.out.println(z);	//z = 5;

4. 赋值运算符

介绍

将某个运算后的值,赋给指定的变量

特点

1)运算顺序从左到右
2)赋值运算符左边只能是变量,右边可以是变量表达式常量值
3)复合赋值运算符会进行类型转换

byte b = 1;
b += 2;
//等价于
b = (byte)(b + 2)

5. 三元运算符

基本语法

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

运算规则

1)如果条件表达式为true,运算后结果为表达式1
2)如果条件表达式为false,运算后结果为表达式2

使用细节

1)表达式1和表达式2要为可以赋给变量的类型
2)可以转换为if—else语句

6. 位运算符

介绍

按位与&:全1为1,有0为0
按位或 |:全0为0,有1为1
按位异或^:相同为0,不同为1
按位取反~:0->1,1->0

算数右移>>:符号位不变,低位溢出
算数左移<<:符号位不变,地位补0
逻辑右移>>>:又叫无符号右移

  • 正数: r = 20 >>> 2

结果与 r = 20 >> 2 相同;

  • 负数: r = -20 >>> 2

-20:源码:10000000 00000000 00000000 00010100

反码:11111111 11111111 11111111 11101011

补码:11111111 11111111 11111111 11101100

右移:00111111 11111111 11111111 11111011

结果:r = 1073741819

二、运算符优先级

优先级

运算顺序运算符
. {} () ; ,
R->L++ ~ !
L->R* / %
L->R+ -
L->R>> >>> <<
L->R< > <= >=
L->R== !=
L->R&
L->R^
L->R
L->R&&
L->R||
L->R? :
R-L= *= /= %=

三、标识符

标识符概念

1)Java对各种变量、方法和类等命名时使用的字符序列称为标识符
2)凡是自己可以起名字的地方都叫标识符

命名规则

1)由26个英文字母大小写0-9_或$ 组成
2)数字不能开头
3)不可以使用关键字和保留字,但可以包含关键字和保留字
4)Java严格区分大小写,长度无限制
5)标识符不能含空格

命名规范

1)包名:aaa.bbb.ccc

package org.lxh.test;

2)类名、接口名:XxxYyyZzz

class TankShotGame

3)变量名、方法名:aaaBbbCcc

int tankShotGame

4)常量名:XXX_YYY_ZZZ

TAX_RATE

四、进制

源码、反码、补码

  • 二进制的最高位是符号位:0表示正数,1表示负数
  • 正数的原码,反码,补码都一样(三码合一〕
  • 负数的反码=它的原码符号位不变,其它位取反(0-≥1.1->0)
  • 负数的补码一它的反码+1,负数的反码 = 负数的补码 - 1
  • 0的反码,补码都是0
  • java没有无符号数,换言之,java中的数都是有符号的
  • 在计算机运算的时候,都是以补码的方式来运算的//⚠️
  • 当我们看运算结果的时候,要看他的原码
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你怎么知道我头发乌黑浓密

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值