JAVA基础--运算符

运算符

注意:()的优先级最高,因此可以多打一些()提高代码的可读性!!

算术运算符:

+、-、*、/、%(模:取余)、++(自增)、--(自减)

public class Demo1 {
    public static void main(String[] args) {
        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);//10除20=0.5,但a,b均为int型,因此结果为0
        System.out.println(a / (double)b);//将其中一个强制转为double型即可得出正确答案
        System.out.println(b % a);//b对a取余数
    }
}

注意类型转换问题:

public class Demo1 {
    public static void main(String[] args) {
        long a = 123456789L;
        int b = 145;
        short c = 15;
        byte d = 5;
        //a为long型,因此输出long类型的数值,若a为double型则输出double型数值
        System.out.println(a+b+c+d);//输出123456954
        System.out.println(b+c+d);//输出int型,165
        System.out.println(c+d);//输出int型,20

自增、自减

public class Demo1 {
    public static void main(String[] args) {
        int a = 1;
        int b = a++;//b=a=1,a=a+1=2(先赋值后自增)
        int c = ++a;//a=a+1=2+1=3,c=a=3(先自增后赋值)
        System.out.println(a);//输出3
        System.out.println(b);//输出1
        System.out.println(c);//输出3
    }
}

赋值运算符:

//=并不表示等于,等于是==
a = b;//将b的值赋值给a
a == b;//表示a等于b

关系运算符

>、<、>=、<=、==、!=(不等于)、instanceof

注意:关系运算符返回的结果是一个布尔值,ture或false

public class Demo1 {
    public static void main(String[] args) {
       int a = 10;
       int b = 20;
       System.out.println(a>b);//返回false
       System.out.println(a<b);//返回true
       System.out.println(a==b);//返回false
       System.out.println(a!=b);//返回true
    }
}

逻辑运算符

&&(与)、||(或)、!(非)

public class Demo1 {
    public static void main(String[] args) {
        boolean a = true;
        boolean b = false;
        System.out.println("a && b:"+(a&&b));//逻辑&&(与):两个变量为真则为真
        System.out.println("a || b:"+(a||b));//逻辑||(或):一个变量为真则为真
        System.out.println("!b:"+(!b));//逻辑非(!):若为真结果则为假,若为假结果则为真
    }
}

运行结果如下:

注意:短路运算:在&&运算中,若前面的表达式为false,则后面的表达式不会执行

public class Demo1 {
    public static void main(String[] args) {
         int a = 1;
         boolean b = (a>3)&&(a++>3);//a>3为假,短路运算原则:后面的表达式不执行
         System.out.println(b);//输出false
         System.out.println(a);//输出1,a还是为1
    }
}

位运算符(注意笔试/面试)

与二进制关:&(与)、|(或)、^(异或)、~(取反)、>>(右移)、<<(左移)、>>>(了解即可)

&、|、^、~:

A  =  1100 0110
B  =  0011 1100
--------------------------------------------
A&B = 0000 0100 (与&:两个1则为1,其余为0)
A|B = 1111 1110 (或|:两个0则为0,其余为1)
A^B = 1111 1010 (异或^:两个相同则为0,不同则为1)
~A  = 0011 1001 (取反~:若是1则为0,若是0则为1)

<<、>>:效率极高!!

public class Demo1 {
    public static void main(String[] args) {
        int a = 2;
        int b =(a<<3);//2<<3 = 2*2*2*2(2左移3位)
        System.out.println(b);//输出16
        
        /*
        2*8=16 //2*2*2*2=16(2的4次方)
        << : *2
        >> : /2
        ----------------------------
        //二进制移位,1向左移动一位等于*2
        0000 0001:1
        0000 0010:2
        0000 0100:4
        0000 1000:8
        0001 0000:16 (2左移3位)
         */
    }
}

条件运算符(三目运算符)

表达式1 ?表达式 2 :表达式 3

如果表达式1正确则输出表达式2,否则输出表达式3

int c = 10;
int d = 20;
//如果c等于d则e=c,若不等于则e=c+d
int e =(c==d) ? c :c + d;
System.out.println(e);//输出结果为30

扩展赋值运算符

+=、-=、*=、/=

例如:a+=b意为a=a+b

int c = 10;
int d = 20;
c += d;//c=c+d
System.out.println(c);//输出30

字符串连接符:+ (面试考题)

public class Demo1 {
    public static void main(String[] args) {
        //字符串连接符'+':若一方为String类型,则会将另一方转为String类再进行拼接
        int a = 10;
        int b = 20;
        System.out.println(""+a+b);//输出1020
        System.out.println(a+b+"");//输出30,因为String类型在后面,所以前面的a+b会先运算再进行拼接
    }
}
posted @ 2024-03-05 10:39  月亮警察  阅读(7)  评论(0编辑  收藏  举报