Java语言支持以下运算符
-
算术运算符 +, -, *, /,(前面的运算符在Java里面叫做模运算)%(余数) , ++, --
-
赋值运算符 = (比如int a = 10; 把后面这个值赋值给a)
-
关系运算符 >, <, >=, <=, == (Java里面等于是用两个等于号等于的) . !=instanceof (不等于在Java中是!=)
-
逻辑运算符 &&(与),II(或), !(非)
-
位运算符 &,I, ^, ~. >> , << , >>>(了解他们就可以了!!!)
-
*条件运算符 ? : *
-
扩展赋值运算符 += , -= , *= , /=
记住一个单词cast=转换
加减乘除
package operator;//代表当前的包不能删除 public class Day01 { public static void main(String[] args) { //二元运算符 就是 a+b //快捷键 Ctrl =d 就是复制当前行到下一行 int a=10; int b=20; int c=25; int d=25; System.out.println(a+b);//(+等于加) System.out.println(a-b);//(-等于减) System.out.println(a*b);//(*等于乘) System.out.println(a/b);//(/等于除以)他的值等于0.5但是用int算出来的值等于0需要进行强制转换(a/(doubie)b);强制转换以后他的值等于0.5 } }
long类型和int类型加减
public class Day02{ public static void main(String[] args) { long a = 123123123123123L;//long类型后面加大写L int b = 123; short c = 10; byte d = 8; System.out.println(a + b + c);//long类型如果多个操数中有一个数为long类型那么它的结果就为long类型 System.out.println(b + c + d);//int类型如果没有long类型那么他的结果都为int类型 System.out.println(c + d);//int类型如果没有long类型那么他的结果都为in //System.out.println((double)c+d);等于double小数结果如果是是整数他的结果后面+.0小数结果 //cast=转换记住这个单词 } }
布尔值类型
package operator; public class Day03 { public static void main(String[] args) { //关系运算符返回的结果=要么正确 要么错误在Java里面正确和错误用布尔值(boolean)来表示的false(错误)---true(正确)//关系运算符就是来判断这个结果的正确和错误的 int a = 10; int b = 20; int c = 21; System.out.println(c % a);//%(c%a);等于除以的意思就是21除以10=2余111%的作用就是取余数!也叫做模运算。 System.out.println(a>b);//false错误 a=10 b=20 System.out.println(a<b);//true正确a=10 b=20 System.out.println(a==b);//false错误a=10 b=20 在Java里面=是==两个等于号!! System.out.println(a!=b);//true正确 a=10 b=20 } }
赋值运算符
/*++加加(意思叫自增 :就是自己增加) --减减(意思叫做自减 :就是自己减少) -- ++ 也叫做一元运算符 */ int a = 3; //a的初始值等于3 int b =a= a+1; // int b =a++; b =a是吧a的值转化给了b 然后或给a进行+1 // int b =a; a=a+1; 这个a++执行完后会先给b赋值,然后再自增 这个a++执行完的下一句才会被+1 //a =a+1;相当于在后面隐藏了这样一句话是在后面执行的 //相当于在int b =a++;中间隐藏了代码a++=a; a=a+1; (a++=a; 就b=a++;)没有被执行执行以后才会实行增或减 //System.out.println(a);//在这个地方输出的值等于4 //在b和c的中间加了一个a++=a; =a+1; int c = ++a; //执行完这行代码前,先给a自增在赋值 //++a a=a+1; //在这个地方c输出的是5相当于在b=a++;与c=++a;的中间加了一个++a a=a+1; System.out.println(a);//在这个地方输出的值等于5 System.out.println(b); System.out.println(c);
//a++ 与 a--是一样的
逻辑运算符
-
$$.II,!
逻辑运算符 public class Day05 { public static void main(String[] args) { //里面有3种操作(与 and)&&(或 or)||(非 取反)! boolean a =true; boolean b =false; System.out.println("a && b: "+(a&&b));//逻辑与运输算;两个变量都为真结果,结果才会为true System.out.println("a && b: "+(a||b));//逻辑或运输算;两个变量有一个为真(true),则结果才会为true System.out.println("!(a %% b)"+!(a&&b));//如果是真则变为假(false),如说是假则变为真(true) //短路运算的情况下 假设a(true)是真,b是(false)假 把b放在前面a放在后面会直接认为这个是假(false)不会执行后面的 int c =5; boolean d = (c<4)&&(c++<10); //结果false假 短路运算 System.out.println(d); System.out.println(c); } }
位运算
public class Day06 { public static void main(String[] args) { /* a= 0011 1100 b= 0000 1101 ---------------------------------------------------------- a&b= 0000 1100 如果对应位为1他才为1否则就是0 a|b= 0000 1101 如果对应位为0结果为0否则就是1 a~b= 0011 0001 如果对应位相同则为0 否则就是1 ~b= 1111 0010 取反跟上面的(b= 0000 1101)完全相反 2*8=16 怎么最快运算出来 拆分为2*2*2*2 <<(小于小于) :左移相当于把数字乘2(*2) >>(大于大于) :右移相当于把数字除以2(|2) 位运算效率高跟二进制打交道的 0000 0000 在二进制里面8个0代表0 0000 0001 代表1 0000 0010 代表2 0000 0011 代表3 0000 0100 代表4 0000 1000 代表8 0001 0000 代表16 */ System.out.println(2<<3);//=16 } }