目录
一、运算符
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等
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中的数都是有符号的
- 在计算机运算的时候,都是以补码的方式来运算的//⚠️
- 当我们看运算结果的时候,要看他的原码
本文详细介绍了Java编程中的运算符分类、运算符优先级、标识符概念及命名规则,包括算术、关系、逻辑运算、赋值、三元运算和位运算,以及进制中的源码、反码和补码概念。
2331





