03.运算符

Posted W-forever

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了03.运算符相关的知识,希望对你有一定的参考价值。

运算符

算术运算符

+ :正数加法连接符
    连接符的作用:让任何的数据都可以通过字符串进行连接
    连接符要注意:任何类型的数据与字符串使用连接符连接,那么结果都是字符串类型的数据
    如果加号用于字符串的时候,那么加号就是一个连接符,并不是做加法运算
- :
* :
/ :
% :
++ :自增相当于操作数加一
    前自增:++位于操作数的前面,先自增,后使用
    后自增:++位于操作数的后面,先使用,后自增
-- :操作数减一
    前自减:--位于操作数的前面
    后自减:先使用,后自减
class demn{
    public static void main(String[] args){
        int i1 = 1;
        int i2 = 2;
        System.out.println("hello" + "world");
        //计算机每次运算的时候只可以取两个数进行运算
        System.out.println(1 + 2 + 3 + "world" + 1 + 2 + 3);//6world123
        
        
        int a = 12.0;
        int b = 3;
        System.out.println(a / b); //3
        
        java中做取模运算时,结果的正负号取决于被除数
        System.out.println("结果" + (10 % 3));
        System.out.println("结果" + (10 % -3));
        System.out.println("结果" + (-10 % 3));
        System.out.println("结果" + (-10 % -3));
        //四个的结果都是1
        
        int a = 0;
        int b = ++a;
        int c = a++;
        System.out.println("b = " + b + "c = " + c);
        后自增在jvm中的运行原理:
            因为后自增要使用到没有加一之前得值,那么jvm会先声明一个变量用于保存没有+1之前得值
        	原理:
            	1.int temp = i;//声明了一个临时变量用于记录没有加一之前得值
        		2.自增 i = i + 1;i = 1;
        		3.return temp;
    }
}

赋值运算符

= :赋值运算符
+= :
-= :
*= :
/= :
%= :
class demn{
    public static void main(String[] args){
        int i = 10;
        i += 2;
        System.out.println("i = " + i);
        
        byte b1 = 1;
        byte b2 = 2;
        b2 = b2 + b1;//报错,需要强制类型转化
        b2 += b1;//b2 += b1,在编译的时候,java编译器会进行强制类型转化,不需要我们手动转化
        System.out.println("b2:" + b2);
        
        
    }
}

比较运算符

== :判断是不是相等
    ==用于比较两个基本数据类型的时候,比较的是两个变量所存储的值是否一致
    ==用于比较两个引用变量的时候,比较的是两个引用类型变量所记录的内存地址是否一致
!= :
> :
< :
>= :
<= :

class demn{
    public static void main(){
        byte b = 10;
        long l = 30;
        System.out.println(l > b);// 两个不同类型的数据是否可以比较,可以的,但是两个不同类型的数据必须是兼用的数据,这个比较过程会先把b转化为long类型的变量,然后再进行比较
        System.out.println(\'a\' > 50);
    }
}

逻辑运算符

逻辑运算符是用来连接布尔表达式的

& :与,并且,只要两边的布尔表达式有都为true,结果才是true
| :或 只要两边的表达式又一边为true,那么结果就是true,只有两边同时为false,结果才是false
^ : 异或 只要两边的布尔表达式结果不一致,那么结果就是true
! : 非
&& : 短路,双与
|| : 短路, 双或
短路与与双与的区别;
    相同点:短路与和单与的运算结果都是相同的
    不同点:使用短路与的时候,如果左边的表达式为false,则不会在运算右边的布尔表达式,从而提高了效率
短路或与单或的区别:
    相同点:运算结果是一致的
    不同点:使用短路或的时候,如果左边的表达式为true,则不会在运算右边的布尔表达式
class demn{
    public static void main(){
        
    }
}

位运算符

位运算符就是直接操作二进制位的

& :与
| : 或
^ : 异或
~ : 取反
规律:如果操作数a连续异或同一个操作数两次,那么结果还是
class demn{
    class static void main(String[] args){
        System.out.println(6 & 3);//2
        System.out.println(6 | 3);//7
        System.out.println(6 ^ 3);//5
        System.out.println(~ 7);//转化为二进制数后,为负数,是补码,应该全部取反之后加一
    }
}
使用异或对图片数据进行加密
class imagetest{
    public static void main(String[] args){
        //找到图片文件
        File infile = new File("f:\\\\美女.png");
        File outfile = new File("e:\\\\加密的图片.png");
        //建立数据通道,让图片的二进制数据流入
        FileInputStream input = new FileInputStream(infile);
        FileOutputStream output new FileOutputStream(outfile);
        //边读,把读到的数据异或到一个,把数据写出
        int content = 0;
        while((content = input.read()) != -1){
            output.write(content^12);
        }
        output.close();
        input.close();
    }
}
java位运算中可能会出现的笔试题目
    1.交换两个变量的值
    2.取出一个二进制数据的指定位数:若要后四位,与1111相与
class demn{
    public static void main(){
        int a = 3;
        int b = 5;
        int temp;
        //第一种方式:定义第三方变量
        int temp = a;
        a = b;
        b = temp;
        //第二种方式:相加法,缺点:两个整型变量相加,有可能会出现超出int的表示范围
        a = a + b;
        b = a - b;
        a = a - b;
        //第三种方法:可以使用异或缺点:逻辑不清晰
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
    }
}

移位运算符,运算符的优先级

<< : 左移
    对一个操作数进行左移运算的时候,结果就是等于操作数乘以2的n次方,n就是左移的位数
>> : 右移
    一个操作数在进行右移的时候,如果该操作数是一个正数,那么左边空缺位补0,如果该操作数是一个负数,那么使用1补,一个操作数在做右移运算时,实际上就是等于该操作数除以2的n次方,n就是右移的位数
>>> : 无符号右移
    无符号右移和右移的区别:进行右移运算的时候,如果该操作数是一个正数,那么左边空缺位使用0补,负数一补,如果使用无符号数右移,不管是正数还是负数,统一使用0补
class public{
    public static void main(){
        System.out.println(3 << 1);//6,和计算机组成里面一样
        System.out.println(3 << 2);
    }
}
笔试题目:使用最高的效率算出2 * 8的结果
2 << 3

三元运算符

格式:

​ 布尔表达式?值1:值2;

三元运算符要注意的细节:

​ 使用三元运算符,一定要使用其返回的结果,或者定义一个变量接收该表达式返回的结果

class public{
    class static void main(String[] args){
        int age = 16;
        System.out.println(age>18?"成年人":"未成年人");
    }
}

以上是关于03.运算符的主要内容,如果未能解决你的问题,请参考以下文章

10个JavaScript代码片段,使你更加容易前端开发。

20个简洁的 JS 代码片段

20个简洁的 JS 代码片段

如何获取当前显示的片段?

如何在 python 中并行化以下代码片段?

KDoc:插入代码片段