第十二讲——基本运算符
第十二讲——基本运算符
目录
Java语言支持以下运算符
掌握
- 算术运算符;+、-、*、/、%(取余也叫求模)、++、--
- 赋值运算符;= (int A =10 把10赋值给A)
- 关系运算符;>、<、>=、<=、==、!= instanceof(!=不等于)
- 逻辑运算符;&&、||、!(与或非)
了解
位运算符;&、|、^、~、>>、<<、>>>
条件运算符;?:
扩展赋值运算符;+=、-=、*=、/=
三元运算符;?:
算术运算符;+、-、*、/、%(求模、取余)++(自增),--(自减)
package Base02;
//开头是包的前缀不用管
public class Demo01 {
public static void main(String[]args){
int num01 =10;
int num02 =20;
int num03 =30;
int num04 =40;
System.out.println(num01+num02);
System.out.println(num01-num02);
System.out.println(num01*num02);
System.out.println(num01/(double)num04);
//运算时注意运算结果类型是整型还是浮点型
//没转换的话 会计算错误
// % 取余
int num1 =10;
int num2 =18;
//两者之间相除取余数的绝对值(反正就是正的 )
System.out.println(num2%num1);//18/10=1....8
//这里讲一下强行转换类型的要点 下面是错误的格式
System.out.println((double)(num1/num2));//0.0
//这里的double是在int算出来的值后进行的转换是无效的,只是把0转换为0.0
//以下是正确格式; 应该在计算前进行转换
System.out.println((double)num1/num2);
}
}
算术运算符;++(自增),--(自减)
package Base;
public class Demo04 {
public static void main(String[]args){
int A = 6;
int B = A++;
int C = ++A;
int D = A++;
int E = ++A;
System.out.println(A);// A=10
System.out.println(B);// B=6 赋值在前 自增在后 先赋值 值=6 先赋值1 再加自增1 那么后面的A基数是7
System.out.println(C);// C=8 自增在前 赋值在后 先基数自增1 所以=8 后面的基数就是7+1=8
System.out.println(D);// D=8 赋值在前 自增在后 先赋值 值=8 再自增1 后面就是基数8+1=9
System.out.println(E);// E=10 自增再前 赋值在后 先自增1 值9 再自增1 后面的基数9+1=10
System.out.println(A);// A=10
System.out.println("\n"+"自减同理");
int a = 10;
int b = a--;
int c = --a;
int d = a--;
int e = --a;
System.out.println(a); // a=6
System.out.println(b); // b=10
System.out.println(c); // c=8
System.out.println(d); // d=8
System.out.println(e); // e=6
//后面的原值已经变了!!!注意
//===============================================
//显示
Desktop\DEMO-XXZ\out\production\DEMO-XXZ Base.Demo04
10
6
8
8
10
10
自减
6
10
8
8
6
Process finished with exit code 0
}
}
- 拓展默认运算类型
package Base02;
public class Demo01{
public static void main(String[]args){
byte A =10;
short B =20;
int C =1281512;
long D =123_4443_4343_4438L;//别忘记L
System.out.println((String) (A+B));
//不兼容的类型: int无法转换为java.lang.String
//说明在默认情况下类型为int
System.out.println((String)(A+B+C));
//不兼容的类型: int无法转换为java.lang.String
System.out.println((String) (A+B+D));
//不兼容的类型: long无法转换为java.lang.String
//有long最高级为long,没long默认int
}
}
关系运算符;>、<、>=, <=, ==、!=
package Base02;
//<、>、==、!=
//关系运算符; 返回的结果false或true boolean
public class Demo01{
public static void main(String[]args){
int A =1;
int a =2;
System.out.println(A==a);//false
System.out.println(A<a);//true
System.out.println(A>a);//false
System.out.println(A!=a);//true
}
}
幂运算
package Base;
//幂运算
public class Demo05 {
public static void main(String[]args) {
//必须用double
//格式是 double 变量名 = Math.pow(底数,几次方);(.不能少)
//Math 骂丝~ 首字大写!数学的意思
double pow = Math.pow(2, 3);
System.out.println(pow);
//=8
}
}
逻辑运算符;&&、||、!(与或非)
package Base;
public class Demo06 {
public static void main(String[]args){
boolean A = false;
boolean B = false;
System.out.println(A&&B); //全真才真
System.out.println(A||B); //一真就真
System.out.println(!(A&&B));//全真才假
/*总结;
&&(与)——>全真才真
||(或)——>一真就真
!(&&)(非&取反)——>全真才假
*/
//==========短路运算=======
int num01 = 5;
boolean C = (num01>4)||(num01++<4);
System.out.println("\n");
System.out.println(C);
System.out.println(num01);//打印5 说明后面num01++ 并没有执行
//总结; 短路运算;如果一开始就能判断真假,后面就不再计算:)
}
}
位运算符;&(与)、|(或)、~(非&取反)、^(异或)、>>(右移位)、<<(左移位)、
package Base;
public class Demo07 {
public static void main(String[]args){
/*====位运算===
& = “与” 和逻辑运算符&&一样 全为1时才1
| = “或” 有一个1 为1 其他都是0
~ = “非(取反)” 和!(&&)0为1 1为0 注意区分非运算
^ = “异或” 相同为0 不同为1
*/
/* A = 0011 1100
B = 0000 1101
-------------------------------
A&B = 0000 1100
A|B = 0011 1101
~B = 1111 0010
A^B = 0011 0011
//效率极高!!!!
------位运算>>和<<---------
怎么算2*8(前提是二的次方)最快?
先转换为2*2*2*
<< 左移位 乘法 左移2 就是2的二次方 3就三次方
>> 右移位 除法 右移2 就是2的二次方 3就三次方
二进制 逢二进一 2 4 6 8
格式 = 2 << 8(2的几次方)
0000 0000 1
0000 0001 2 (2的一次方)
0000 0011 3
0000 0100 4 (2的二次方)
0000 1000 8 (2的三次方)
0001 0000 16 (2的四次方)
*/
System.out.println(2<<3);
//
}
}
显示区域;
8
Process finished with exit code 0
扩展赋值运算符;+=、-=、*=、/=
偷懒运算符
package Base;
public class Demo09 {
public static void main(String[]args){
int a = 1;
int b = 2;
a-=b;// a= a-b
a+=b;// a= a+b
a*=b;// a= a*b
a/=b;// a= a/b
System.out.println(a);//应该显示-1
//字符串连接符
System.out.println(a+b);// 可以做数学运算
System.out.println(""+a+b);// 前面加空白""和+ 变成String字符连接
System.out.println(a+b+"123");//加在后面会进行运算!!!
}
}
三元运算符
package Base;
//条件运算符 ?:
public class Demo10 {
public static void main(String[]args){
int score = 95;
String type = score>92? "合格":"不合格";
System.out.println(type);
/*
条件运算符;?:
公式; 条件? 符合则 :不符合则
*/
//运用到的单词
//1. score 成绩 斯古尔~
//2. type 类型 台噗~ (比如成绩类型合格/不合格)
}
}
新增单词
- score 成绩 斯古尔~
- type 类型 台噗~ (比如成绩类型合格/不合格)
- Math 数学 骂丝~
- pow 复述(幂) 捧挖~
- cast 转换 ka死特
如果你有梦想 就努力去实现 就这样