一、算术运算符
运算符:+ - * / % ++ –
注意:
1、byte/short在运算的时候会自动的提升为int
2、同一个类型参与运算,结果的类型与参与运算的类型一致。
3、 如果运算过程中有大类型参与了运算,结果一定是大类型
4、由于绝大部分小数在转化成二进制的时候是无限小数,所以double类型在存储小数的时候也没有办法精确存储,因此也没有办法来精确运算。
5、 整数/0 -> ArithmeticException
任意非0数字/0.0或者是任意小数/0-> Infinity
0/0.0->NaN-> Not a Number
1、求模运算取余
符号:%
规则:在做取余运算的时候,先按正数进行取余,然后看%左边数字的符号,如果%左边的数字是正数,那么结果就是正数
5 % 3 = 2
1 % 4 = 1
-8%3=-2
8%-3=2
-8%-3=-2---
3.2 % 2 = 1.2
5.4%1.7=0.3
2、自增自减运算符
符号:++/–
-
++ 在变量名之前,表示先自增,自增完成之后才会参与其他运算
-
++ 在变量名之后,表示先拿变量的原来的值参与运算,然后再自增
int i = 5;
//int j = ++i; -> i = i + 1; -> int j = i; -> j = 6;
int j = ++i * 2; -> i = 6, j = 12;
int i = 5;
// int j = i++; -> 表示先把5拿出来,i自增为6,然后把5赋值给j
int j = i++ * 2; -> i = 6, j = 10;->先把i的值5取出来参与乘法运算,然后i自增
int i = 3;
// int j = i++ + ++i; -> i = 5, j = 8;
int j = ++i + i++; -> i = 5, j = 8
注意:byte/short类型可以参与++/–运算,而且运算完成之后依然是原来的类型—Java在底层已经进行了强制转换
二、赋值运算符
符号:= += -= *= /= %= &= |= ^= <<= >>= >>>=
注意:除了=以外,其余的赋值运算符要求这个变量必须有值
byte/short可以参与赋值运算。
int i = 5;
i += i -= i *= i++; -> i = -15
i = 5+ (5 - ( 5 * 5));
三、关系/比较运算符
==用于判断两个值是否相等的 != 用于判断两个值是否不相等的 > < >= <=
int i = 4;
int j = 5;
i == j; -> false
i != j; -> true
i > j; -> false
instanceof—用于判断对象是否是否对应类的实例的。
“abc” instanceof String -> true
逻辑运算符
位运算符
三元运算符
四、逻辑运算符
&—与(And) |—或(Or) !—非(Not) ^—异或 &&—短路与 ||—短路或
true&true=true true&false=false false&true=false false&false=false
true|true=true true|false=true false|true=true false|false=false
!true=false !false=true
true^true=false truefalse=falsetrue=true false^false=false
对于&&而言,如果前边的表达式的结果为false,则后边的表达式就不再运算
对于||而言,如果前边的表达式的结果为true,则后边的表达式就不再运算
五、位运算符
& | ^ << >> >>> ~
注意:位运算针对的是整数,运算的是数据的补码
数据在计算机中是以补码形式来存储的。最高位是一个符号位—如果是正数,最高位为0,如果是负数,最高位为1. 对于正数而言,原反补三码一致。负数的反码是在原码的基础上,最高位不变,其余位0->1,1->0,负数的补码是在反码的基础上+1
6- 00000000 00000000 00000000 00000110—原码/反码/补码
-6 - 10000000 00000000 00000000 00000110—原码
11111111 11111111 11111111 11111001—反码
11111111 11111111 11111111 11111010—补码
11111111 11111111 11111111 11101101—补码
11111111 11111111 11111111 11101100—反码
10000000 00000000 00000000 00010011—原码— -19
[外链图片转存失败(img-cp5mxB87-1562151943190)(file:///C:\Users\志\AppData\Local\Temp\ksohtml3540\wps1.jpg)]
a ^ b ^ b = a; b ^ b ^ a = a
交换两个数的值:
int i = 3, j = 5;
方式一:第三方变量
int k = i;
i = j;
j = k;
方式二:加减法
i = i + j;
j = i - j;
i = i - j;
方式三:异或
i = i ^ j;
j = i ^ j; -> j = i ^ j ^ j; -> j = i;
i = i ^ j; -> i = i ^ j ^ i; -> i = j;
i ^= j; j ^= i; i ^= j;
注意:Java中所有的数值类型的数据都是有符号的。
六、三元运算符
逻辑值 ? 表达式1 :表达式2;
如果逻辑值为true的话,执行表达式1,;反之执行表达式2
练习:判断是否是一个奇数
在三元表达式形成嵌套的时候,尽量添加()来提高代码的可读性
练习: >=90 A >= 80 B >= 60 C < 60 D
从控制台获取数据:
import java.util.Scanner;
Scanner s = new Scanner(System.in);
double d = s.nextDouble(); // 获取小数
int i = s.nextInt(); // 获取整数
String str = s.nextLine(); // 获取一行
\+ 字符串拼接运算
String s = “a”;
s = s + “b”; -> s = “ab”
il.Scanner;
Scanner s = new Scanner(System.in);
double d = s.nextDouble(); // 获取小数
int i = s.nextInt(); // 获取整数
String str = s.nextLine(); // 获取一行
\+ 字符串拼接运算
String s = “a”;
s = s + “b”; -> s = “ab”
可以利用+将两个字符串进行拼接,或者也可以利用+将任何数据与字符串进行拼接