java基础第二部分

java基础第二部分

运算符

算数运算符

算术运算符用在数学表达式中,它们的作用和在数学中的作用一样

操作符名称描述
+ 加法 相加运算符两侧的值
减法 左操作数减去右操作数
* 乘法 相乘操作符两侧的值
/ 除法 左操作数除以右操作数
% 取余 左操作数除以右操作数的余数
++ 自增 操作数的值增加1
-- 自减 操作数的值减少1
% 取模 两个数相除的余数

测试

 public class Demo01 {
 
     public static void main(String[] args) {
 
         int a = 10;
         int b = 20;
         int c = 30;
         int d = 40;
 
         long e = 5145646546L;
         int f = 120;
         short g = 32;
         byte h = 11;
 
         System.out.println(a+b);
         System.out.println(a-b);
         System.out.println(a*c);
         System.out.println(a/(double)d);
         System.out.println(d%c);
         System.out.println(a++); //先使用a,再加1
         System.out.println(--b); //先减1,再使用b
 
         System.out.println("========================");
 
         System.out.println(e+f+g+h); //long
         System.out.println(f+g+h); //int
         System.out.println(g+h); //int
 
 
    }
 }
 

image-20201001193619912

注意点:

.如果+号用于字符串的时候,那么+号就是一个连接符,并不是做加法功能了。

.连接符的作用:让任何的数据都可以与字符串进行拼接。

.任何类型的数据与字符串使用连接符连接,那么结果都是字符串类型的数据。

 

比较运算符

比较运算符的结果一定是boolean类型,也叫关系运算符

操作符名称描述
> 大于 相加运算符两侧的值
< 小于 左操作数减去右操作数
== 等于 相乘操作符两侧的值
>= 大于等于 左操作数除以右操作数
<= 小于等于 左操作数除以右操作数的余数
!= 不等于 操作数的值增加1

测试

 public class Demo02 {
 
     public static void main(String[] args) {
 
         int a = 10;
         int b = 20;
         int c = 20;
 
         System.out.println(a>b);
         System.out.println(a<b);
         System.out.println(a>=b);
         System.out.println(c<=b);
         System.out.println(a==b);
         System.out.println(a!=b);
    }
 }

image-20201003091043817

 

逻辑运算符

操作符名称描述
&& 短路与 当且仅当两个操作数都为真,条件才为真。
& 逻辑与 当且仅当两个操作数都为真,条件才为真。
| | 短路或 如果任何两个操作数任何一个为真,条件为真。
| 逻辑或 如果任何两个操作数任何一个为真,条件为真。
! 逻辑非 用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false

测试

 public class Demo03 {
 
     public static void main(String[] args) {
 
         boolean a = false;
         boolean b = true;
 
         //短路与,前一个表达式的值为false,不在判断下一个表达式,只判断到a
         System.out.println(a&&b);
         //短路与,前一个表达式的值为false,后面继续判断
         System.out.println(a&b);
         //短路或,前一个表达式的值为true,不在判断下一个表达式,只判断到b
         System.out.println(b||a);
         //短路或,前一个表达式的值为true,后面继续判断
         System.out.println(b|a);
         System.out.println(!a);
    }
 
 }

image-20201003092737624

 

位运算符

操作符名称描述
& 按位& 如果相对应位都是1,则结果为1,否则为0
| 按位或 如果相对应位都是0,则结果为0,否则为1。
^ 异或 如果相对应位值相同,则结果为0,否则为1
~ 按位取反 翻转操作数的每一位,即0变成1,1变成0。结果为: -(X+1)
<<   按位左移 |通常格式为:value << num,value按位左移num位
>> 有符号按位右移 通常格式为:value >> num,value按位右移num位。
>>> 无符号按位右移 通常格式为:value >> num,value按右移num位,移动得到的空位以零填充。

测试

 public class Demo04 {
 
 
     public static void main(String[] args) {
         int a = 0b1101;
         int b = -0b11001;
 
         System.out.println(a&b);
         System.out.println(a|b);
         System.out.println(a^b);
         /*计算机中二进制是以补码形式存在的,对于正数来说,其反码和补码和补码就是本身,所以取反后在内存中是一个负数
         的补码,所以其输出的结果因为(原码)是减1再对非符号位取反,因为负数的补码是非符号位取反再加一。对于正数来说,其反码和补码和补码就是本身,所以取反后在内存中是一个负数
         的补码,所以其输出的结果因为(原码)是减1再对非符号位取反,因为负数的补码是非符号位取反再加一,例如*1101(13),其取反后为10010(补码),反码为10001,源码为11110(-14).
         对于负数来说,先计算其补码,再取反,就是输出结果(补码)。例如111001(-25),反码100110,补码100111,取反后011000(24)*/
         System.out.println(~a);
         System.out
                .println(~b);
 
         System.out.println("===================");
 
         System.out.println(a<<1);
         System.out.println(b<<1);
         System.out.println(a>>1);
         System.out.println(b>>1);
       
 
 
 
    }
 }

image-20201003112135465

 

注意点

计算机中二进制是以补码形式存在的,对于正数来说,其反码和补码和补码就是本身,所以取反后在内存中是一个负数的补码,所以其输出的结果因为(原码)是 减1再对非符号位取反,因为负数的补码是非符号位取反再加一。对于正数来说,其反码和补码和补码就是本身,所以取反后在内存中是一个负数的补码,所以 其输出的结果因为(原码)是减1再对非符号位取反,因为负数的补码是非符号位取反再加一,例如*1101(13),其取反后为10010(补码),反码为10001,源 码为11110(-14)。对于负数来说,先计算其补码,再取反,就是输出结果(补码)。例如111001(-25),反码100110,补码100111,取反011000(24)。

赋值运算符

操作符名称描述
= 赋值 右操作数的值赋给左侧操作数
+= 加和赋值 左操作数和右操作数相加赋值给左操作数 (a+=b 等同于 a = a+b)
-= 减和赋值 左操作数和右操作数相减赋值给左操作数 (a-=b 等同于 a = a-b)
*= 乘和赋值 左操作数和右操作数相乘赋值给左操作数 (a*=b 等同于 a = a*b)
\/= 除和赋值 左操作数和右操作数相除赋值给左操作数 (a/=b 等同于 a = a/b)
(%)= 取模和赋值 左操作数和右操作数取模后赋值给左操作数 (a%=b 等同于 a = a%b)
<< = 左移位赋值 左移位赋值运算符 (a<<=b 等同于 a = a<<b)
>> = 右移和赋值 右移位赋值运算符 (a>>=b 等同于 a = a>>b)
^ = 除和赋值 按位与赋值运算符 (a^=b 等同于 a = a^b)
&= 除和赋值 按位异或赋值操作符 (a&=b 等同于 a = a&b)
| = 除和赋值 按位或赋值操作符 (a|=b 等同于a = a|b)

 

条件运算符

条件运算符也叫三目运算符,

语法:(条件) ? 结果一 : 结果二;

测试

 public class Demo05 {
 
     public static void main(String[] args) {
         int a = 5;
         int b = 6;
 
         System.out.println((a>b)?true:false);
    }
 }

 

image-20201003113140951

 

instanceof 运算符

instanceof运算符可以确定对象是否属于一个特定的类.该运算符是二目运算符,左边的操作元是一个对象,右边是一个类,当左边的对象是右边的类或子类创 建的对象时,该运算符运算的结果是true,否则是false。,使用格式:( Object reference variable ) instanceof (class/interface type)

image-20201003122757599

运算符优先级

在一个表达式中可能包含多个有不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的运算顺序可能得出不同结果甚至出现错 误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性、唯一性。相同优先级中,按结合顺序计算.\1.

通常优先级由高到底的顺序依次是:

1.括号级别最高,逗号级别最低;

2.单目 > 算术 > 位移 > 关系 > 逻辑 > 三目 > 赋值。

3.除了单目运算符、赋值运算符和条件运算符,其他的运算符都是从左到右结合的。

 

文章部分参考:https://www.cnblogs.com/jpfss/p/11014790.html

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-10-03 18:47  夏雨初晴  阅读(182)  评论(0)    收藏  举报