JDK8运算符

运算符

Java语言支持如下运算符:

  • 算术运算符:+,-,*,/,%,++,--

  • 赋值运算符:=

  • 关系运算符:>,<,>=,<=,==,!=,instanceof

  • 逻辑运算符:&&,||,!

  • ==========会上面的就差不多了============

  • 位运算符:&,|,^,~,>>,<<,>>>

  • 条件运算符:?:

  • 扩展赋值运算符:+=,-=,*=,/=



二元运算符:

(两个数字进行运算就叫二元运算符)

//二元运算符(需要两个数字才行)
//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 ,
//分析 : abcd都是int类型,在10/20时会得到0.5
//int类型是整形,只能有整数,所以0.5取整=0,
//也可以进行强制类型转换,转换为double,就可以得到0.5,
//如下 :
System.out.println((double) a/b);
System.out.println("===============================");

运算数据类型转换

long a = 123123123123123L;
int b = 123;
short c = 10;
byte d = 8;
​
System.out.println(a+b+c+d);
System.out.println(b+c+d);
System.out.println(c+d);
//输出发现:第一个仍然是Long类型,
//        第二个变成了Int类型,
//        第三个变成了Int类型,
//原因:有Long类型的赋值,其他在和该Long类型变量进行运算时,默认运算结果类型也为Long
//     运算时有一个类型是Long,那么结果类型也是Long
//     如果没有Long,那么其结果都为Int,无论是否有Int类型,其结果都为Int
//System.out.println((String) (c+d));
//如果按上面的来输出,会发现无法转换为 String 类型,
//报错显示:不能把 Int 类型转换为 String 类型,侧面说明了这个(c+d)就是 Int类型
//而c和d没有一个是 Int类型,说明没有Long,输出全部都是Int,有Long,输出全部都是Long
//小知识:cast :转换

关系运算符:

//关系运算符:>,<,>=,<=,==,!=,instanceof
// 关系运算符返回的结果只有:  (true)正确,(false)错误     用布尔值来表示
​
​
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);//!=就是不等于
​
//=====================================================
//=====================================================
//=====================================================
//取模:(%)     实际就是取余数(取余),也叫  模运算
int c = 21;
int d = 22;
​
System.out.println(c%a);//输出结果为1,即21/10余1
System.out.println(d%a);//输出结果为2,即22/10余2


一元运算符:

(只有一个数字的运算)

 //++    --   自增  自减 ,一元运算符(只需要一个数就足够)
        int a = 3;
​
        int b = a++;   // a++ <==> a = a + 1
        /*a的值为3+1+1,过程:
        a=3——>a++——>先给b赋值为a=3,
        然后再a+1=4,此时a=4,b=3
        */
​
        int c = ++a;   // ++a <==> a = a + 1
        /*a的值为3+1+1,过程:
        a=3——>a++——>先给b赋值为a=3,
        然后再a+1=4,此时a=4,b=3
        */
​
        //意思一样,但是执行+1的时机不同
​
        System.out.println(a);//输出了5
        System.out.println(b);//输出了3
        System.out.println(c);//输出了5
​
        //面试题:a+++++b
        //a++   加上   ++b。
​
        //幂运算:2^3=8,但是Java里没有 ^ 这种表示方法,需要用到一个数学类
        double pow = Math.pow(2, 3);//输入Math,然后输个 . ,然后会点出很多,比如abs就是绝对值,max就是最大数等等
//乘方所对应的类就是pow
        System.out.println(pow);
        //输出了8.0,即2^3=8。

逻辑运算符:

//与(and):+(&&)     或(or):+(||)     非(取反):+!(&&)
boolean a = true;
boolean b = false;
​
System.out.println("a && b:"+(a&&b));//逻辑与运算:两个变量都为真,结果才为真
System.out.println("a || b:"+(a||b));//逻辑或运算:两个变量有一个为真,则结果就是真(两个变量都是假,结果才为假)
System.out.println("!a && b:"+!(a&&b));//逻辑非运算:真变假,假变真(取反)
System.out.println("========================================");
System.out.println("========================================");
​
​
//短路运算:
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);//false
System.out.println(c);//c = 5,c没有变成6,说明没有执行c++。
/*
* 如:
* 在判断逻辑或运算时:
* c<4和c++<4里c<4已经是假了,就可以不判断c++<4是真是假(短路),
* 直接会输出布尔值
* */

位运算符:

特点:效率高!!!!

/*
A = 0011 1100
B = 0000 1101
------------------------------------------------------------------
------------------------------------------------------------------
A&B   0000 1100(联系上节课的逻辑运算:与,两个结果都是真,结果才是真,都是1,结果为1,如果有一个0,结果为0)
A|B   0011 1101(联系上节课的逻辑运算:或,两个结果都是假,结果才是假,都为0,结果为0,如果有一个1,结果为1)
A^B   0011 0001(联系上节课的逻辑运算:非,两个结果相同,则为0,两个结果不相同,则为1)
~B    1111 0010(联系上节课的逻辑运算:取反,0变1,1变0)
 */
​
//面试题:
/*
我们都知道:2*8 = 16
但是计算机不知道,问:如何计算最快?
解:(一般人这样2*2*2*2)这样很慢,计算机在其底层要做很多的事情,因为计算机下面都是电路(计算机是不会乘除法的,都是加法)
但是在位运算里可以变得非常快,在位运算里只需要改变灯亮,改变计算机的高低电路就可以
位运算符: << , >> ,这两个是左移和右移的意思(箭头指向那边就是往哪边移)
​
 */
System.out.println(2<<3);
//此时发现2左移三位等于16
/*在二进制里:
0000 0000 = 0
0000 0001 = 1
0000 0010 = 2
0000 0100 = 4
0000 1000 = 8
0001 0000 = 16
0010 0000 = 32
......
此时会很清楚的发现,把1往左移动1位置,结果乘2
故:
在位运算里(二进制)
左移:乘2
右移:除二
 */
//位运算的好处:效率高!
//位运算的好处:效率高!
//位运算的好处:效率高!
//因为位运算是和二进制打交道的,可以用来做很多精巧快速的东西

拓展赋值运算符:(偷懒运算符)

int a = 10;
int b = 20;
a+=b;  //a = a + b;
a-=b;  //a = a - b;
   System.out.println(a);
   //也叫偷懒运算符
// =====================================================
​
   //字符串连接符:  +   , String
   System.out.println(a+b);
   System.out.println(""+a+b);
​
   System.out.println(a+b+"");
   //如果在前面,那么后面会拼接,如果字符串在后面,那么他依旧会运算。
   //所以 + 号除了加减,还有连接的作用

三元运算符:

//三元运算符:
//a?b:c;
//意思是若a==b,则结果为b,若a不等于b,则结果为c,类似:
// if(a==b);
//sout("b");
 // x?y:z
//如果x==true,则结果为y,否则结果为z
int score = 80;
String type = score<60?"不及格":"及格";
System.out.println(type);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值