- Java语言支持以下运算符:
-
算术运算符:+、-、*、/、%、++、–
-
加、减、乘、除、(取余)模运算······
//算术运算符,也可以叫:二元运算符(两个数进行 *** 作的) int a = 10; int b = 20; int c = 25; int d = 30; System.out.println(a+b); System.out.println(a-b); System.out.println(a*b); System.out.println(a/b); //第12的运行输出结果为:0 //两个int类型除完还是int型,本来结果为0.5,向下取整因为只有整数部分就取0,所以这里是有问题的 //可能会产生小数,算的时候应该强转一下 System.out.println(a/(double)b); //运行结果为: 30 -10 200 0.5
运算规则:先将运算级统一成该运算中最高的数据类型后再运算
//不同数据类型运算自动转换为容量大的数据类型(也就是:按类型优先级自动转换) Long a = 123123L; int b = 1231; short c = 12; byte d = 1; System.out.println(a+b+c+d);//Long System.out.println(b+c+d); //int System.out.println(c+d); //int //运行结果为: 124367 //Long 1244 //int 13 //int /* 各位看出来了嘛? 1.没有long时,所有非int类型转为int类型 2.类型转换的时候byte和short是在同一级别的,但是类型不同,如果要转的话无法都转为short或都转为byte,所以选择都转为更高一级的int(向上兼容),再做运算 3.运算规则:先将运算级统一成该运算中最高的数据类型后再运算 */
-
取余,也叫模运算
//取余,也叫模运算 //取两数相除后剩下的数 int a = 10; int b = 3; System.out.println(a%b); //运行结果为: 1
-
一元运算符/单目运算符
-
//上面的加减乘除都需要至少两个数计算,而这里的只需一个数就够了
//所以 自增 和 自减 也叫做:一元运算符/单目运算符
//++[自增:自己增加+1]、--[自减:自己减少-1]
//先跟着写代码
int a = 3;
int b = a++;
int c = ++a;
System.out.println(a);
System.out.println(b);
System.out.println(c);
//运行结果为:
5
3
5
//发现没?明明 a 被赋值了3,结果三行输出下来 a 居然是5!
//后面两个运行结果就更不用说了,程序小白的脑子是否已经成一锅浆糊了
//别慌,带着你一脑子浆糊...呸!带着你满头的疑问,继续往下看
//咱们试试这样:
int a = 3;
int b = a++;
//执行完这行代码后,是先给b赋值(b=3),再自增(遇到下一个 a 时 +1)(先用再加)
System.out.println(a);
//这里可以先输出现在的 a 看一下,a = 4 (没懂的再看一遍上一行注释)
int c = ++a;
//执行完这行代码前,是先给a自增(这里的a:4 +1),再赋值(c=5)(先加再用)
System.out.println(a);//这里运行输出结果时 a 就是5
System.out.println(b);//上面已有讲解,多看几遍写写代码,相信你可以理解的!
System.out.println(c);
//运行结果为:
4 //这是29行输出的a
5
3
5
/*
a++的值为4,但先赋的值是a(a=3)(b 输出就为3了),然后自增(a)+1,(a)变成了4,
到c的时候先自增后在(a=4)+1,最后的结果(a)就是5了,
最后又赋值给了c,所以(c 输出就为5),
a最后的结果就是5,请不要纠结第一次的a=3,那个只是初始值
*/
//现在各位理解了吧,现在回到自增自减的开始,再看看? 很好理解咯
//a++先赋值再自增,++a先自增再赋值
拓展知识:
幂运算 2^3
2* 2 *2 = 8 (很多运算,需要工具类来 *** 作)-
double pow = Math.pow(2, 3);
System.out.println(pow);
-
赋值运算符:=
- a = 10;将右边的值,放进左边的里面(赋值)
-
关系运算符:>、<、>=、<=、==、!=、instanceof
- 大于、小于、大于等于、小于等于、等于(Java中的等于是用"=="表达)、不等于
//关系运算符返回的结果: 正确、错误 (布尔值) int a = 10; int b = 20; System.out.println(a>b); System.out.println(a<b); System.out.println(a==b); System.out.println(a!=b); //运行结果为: false true //正确 false //错误 true
-
逻辑运算符:&&、||、!
- 与【两个条件都需要满足】、或【两个条件满足一个就可以】、
非【获取反向条件:不是这个条件(那就一定是另一个条件)】
boolean a = true; boolean b = false; System.out.println("a&&b:"+(a&&b));//逻辑与运算:两个变量都为真,结果就为true System.out.println("a||b:"+(a||b));//逻辑或运算:两个变量一个为真,结果就为true System.out.println("!(a&&b):"+!(a&&b));//逻辑非运算:如果是真,则为假,如果是假,则为真 //运行结果为: a&&b:false a||b: true !(a&&b): true //短路运算 int c =5; boolean d= (c<4)&&(c++<4); //这一行代码执行了c++(6)不小于4,为false,所以这里就会终止不再执行 System.out.println(d); System.out.println(c); //运行结果为: false 5
- 与【两个条件都需要满足】、或【两个条件满足一个就可以】、
-
位 运算符:&、|、^、~、>>、<<、>>>
-
//不要轻易的去用位运算符(容易出错) A = 0011 1100 B = 0000 1101 A&B = 0000 1100 "&"如果AB上下相对应位都是1,则结果为1,否则为0 A|B = 0011 1101 "|"如果AB上下相对应位都是0,则结果为0,否则为1 ^B = 0011 0001 "^"如果AB上下相对应位都相同,则结果为0,否则为1 ~B = 1111 0010 "~"与B相对应位都相反,都是0,则结果为1,都是1,则结果为0
-
-
条件运算符:?、:
//三元运算符: //如果x==true,结果为y,否则结果为z(x是条件y为真z为假) //x ? y z int score = 80; String type = score < 60 ? "不及格":"及格"; //代码解释:score也就是成绩的意思,判断 成绩小于60,就是"不及格","不及格"赋值到type,相反,如果成绩大于60,就"及格",赋值到type ,因为赋值的是字符串所以用String类型 System.out.println(type); //运行结果:自己去试试就知道啦 //再次总结:String类型的type变量是用来接收 判断条件(成绩大于60或小于60)后返回的字符串(及格或不及格)
-
扩展赋值运算符:+=、-=、*=、/=
(嘿嘿嘿~ 熟练应用方便摸鱼,新手可了解,不建议常用(前期还是要好好打基础滴)) int a = 10; int b = 20; a += b;//a = a+b (a+b之后再把结果赋值给a) System.out.println(a); a -= b;//与上同理,只是运算符号换了 (a-b之后再把结果赋值给a) System.out.println(a); //运行结果为: 30 10 //字符串连接符: + //(在这个连接符号前面只要出现了string类型(字符串类型)string类型会把后面的 *** 作数后的其他 *** 作数都转为string,再进行连接) System.out.println(a+b); //(面试题) System.out.println(""+a+b);//虽然没在""中输入,但是请回看上行注释 System.out.println(a+b+"");//如果string类型放在后面,其前面的 *** 作数则不会被转换 运行结果为: 1020 //这是都转为string,再进行连接的结果 30
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)