1、算数运算符
运算符:进行特定操作的符号。例如:+
表达式:用运算符连起来的式子叫做表达式。例如: 20+5。又例如: a + b
四则运算
加 | 减 | 乘 | 除 | 取模(余数) | 自增自减 |
+ | - | * | / | % | ++、-- |
对于一个整数的表达式来说,除法用的是整除,整数除以整数,结果仍然是整数。只看商,不看余数。
public static void main(String[] args){
//两个常量之间可以进行数学运算
System.out.println(20+30);
int a = 20;
int b = 30;
System.out.println(a-b); // -10
//两个变量之间也可以进行数学运算
System.out.println(a* 10); // 200
//变量和常量之间可以混合使用
int x = 10;
int y = 3;
int result1 = x / y;
System.out.println(result1); // 3
int result2 = x % y;
System.out.println(result2);//余数,模,1
// int + double --> double + double --> double
double result3 = x +2.5;
System.out.println(result3); //12.5
}
四则运算当中的加号“+”有常见的三种用法:
1.对于数值来说,那就是加法。
2.对于字符char类型来说,在计算之前,char会被提升成为int,然后再计算。
char类型字符,和int类型数字,之间的对照关系表:ASCII、Unicode
3.对于字符串string(首字母大写,并不是关键字)来说,加号代表字符串连接操作。
public static void main(String[] args){
//字符串类型的变量基本使用
//数据类型变量名称=数据值;
String str1 = "Hello";
System.out.println(str1); // Hello
System.out.println("Hello" + "world"); // Helloworld
String str2 = "Java";
// String + int --> string
System.out.println(str2 +20); //Java20
//优先级问题
//String+int+int
//String+ +int
//String
System.out.println(str2 +20+30);//Java2030
System.out.println(str2 +(20+30));//Java50
}
- 变量在独立运算时, 前++ 和 后++ 没有区别 。
- 变量 前++ :例如 ++i 。
- 变量 后++ :例如 i++ 。
- 和其他变量放在一起, 前++ 和 后++ 就产生了不同。
- 前++ :a自己加1,再将加1后的结果赋值给b,也就是说a和b的结果都是一样的。
- 后++:先赋值给b,a自己再加1。
使用区别:
1.在单独使用的时候,前++和后+没有任何区别。也就是:++num;和num++;是完全一样的。
2.在混合的时候,有【重大区别】
A.如果是【前++】,那么变量【立刻马上+1】,然后拿着结果进行使用。【先加后用】
B.如果是【后++】,那么首先使用变量本来的数值,【然后再让变量+1】。【先用后加】
public static void main(String[] args){
int num1=10;
System.out.println(num1);//10
++num1;//单独使用,前++
System.out.println(num1);//11
num1++;//单独使用,后++
System.out.println(num1);//12
System.out.println("===============");
//与打印操作混合的时候
int num2=20;
//混合使用,先++,变量立刻马上变成21,然后打印结果21
System.out.println(++num2);//21
System.out.println(num2);//21
System.out.println("===============");
int num3=30;
//混合使用,后++,首先使用变量本来的30,然后再让变量+1得到31
System.out.println(num3++);//30
System.out.println(num3);//31
System.out.println("===============");
int num4=40;
//和赋值操作混合
int result1=--num4;//混合使用,前--,变量立刻马上-变成39交给result1
System.out.println(result1);//39
System.out.println(num4);//39
System.out.println("===============");
int num5=50;
//混合使用,后--,首先把本来的数字交给result2,然后我自己再-1变成49
int result2=num5--;
System.out.println(result2);//50
System.out.println(num5);//49
System.out.println("===============");
int x=10;
int y=20;
//11+20=31
int result3=++x + y--;
System.out.println(result3);//31
System.out.println(x);//11
System.out.println(y);//19
}
2、逻辑运算符
符号 | && |
||
| ! |
逻辑符 | 逻辑与 | 逻辑或 | 逻辑非 |
相当于 | 并且 | 或者 | 取反 |
逻辑运算符的使用
public static void main(String[] args){
boolean b1 = true;
boolean b2 = false;//声明两个boolean变量
boolean b3 = b1 && b2;
System.out.println("b3 = " + b3);//b3 = false
System.out.println(b1 && b2);//false
System.out.println(b1 || b2);//true
System.out.println(!b1);//false
System.out.println(!b2);//true
}
逻辑运算符的短路特性
public static void main(String[] args){
int ia = 3;
int ib = 5;
boolean b4 = (++ia == 3) && (++ib == 5);
//++ia=4不等于3,为假,直接跳过第二个表达式,不执行
System.out.println("b4 =" + b4);//false
System.out.println("ia =" + ia);//4
System.out.println("ib =" + ib);//5
System.out.println("------------------------" );
boolean b5 = (++ia == 5) || (++ib == 5);
//++ia=5等于5,为真,直接跳过第二个表达式,不执行
System.out.println("b5 =" + b5);//true
System.out.println("ia =" + ia);//5
System.out.println("ib =" + ib);//5
}
赋值运算
ia == 2 | 表示判断变量ia的数值是否等于2 |
2 == ia | 表示判断2是否等于变量ia的数值,从结果上来说等价,但更推荐该方式 |
ia = 2 | 表示将2赋值给变量ia,覆盖变量ia原来的数值 |
2 = ia | 编译报错 错误:意外的类型 |
位移运算符
<< 左移运算符,用于将数据的二进制位向左移动,右边使用O补充
>> 右移运算符,用于将数据的二进制位向右移动,左边使用符号位补充
>>> 表示逻辑右移运算符,用于将数据的二进制位向右移动,左边使用0补充。
位运算符
& 表示按位与运算符,按照二进制位进行与运算,同1为1,一0为0.
| 表示按位或运算符,按照二进制位进行或运算,一1为1,同0为0.
~ 表示按位取反运算符,按照二进制位进行取反,1为0,0为1.
^ 表示按位异或运算符,按照二进制位进行异或运算,同为0,个问月l .*/