Java 入门探索者03(运算符,前序后序)

Java中的运算符主要包括以下几类:

1. 算术运算符:
   - 加法运算符(+):将两个操作数相加。
   - 减法运算符(-):将第一个操作数减去第二个操作数。
   - 乘法运算符(*):将两个操作数相乘。
   - 除法运算符(/):将第一个操作数除以第二个操作数。
   - 取余运算符(%):取第一个操作数除以第二个操作数的余数。

2. 关系运算符:
   - 相等运算符(==):如果两个操作数相等,则返回true;否则返回false。
   - 不等运算符(!=):如果两个操作数不相等,则返回true;否则返回false。
   - 大于运算符(>):如果第一个操作数大于第二个操作数,则返回true;否则返回false。
   - 小于运算符(<):如果第一个操作数小于第二个操作数,则返回true;否则返回false。
   - 大于等于运算符(>=):如果第一个操作数大于等于第二个操作数,则返回true;否则返回false。
   - 小于等于运算符(<=):如果第一个操作数小于等于第二个操作数,则返回true;否则返回false。

3. 逻辑运算符:
   - 与运算符(&&):当两个操作数都为true时,返回true;否则返回false。
   - 或运算符(||):当两个操作数中有一个为true时,返回true;否则返回false。
   - 非运算符(!):如果操作数为true,则返回false;如果操作数为false,则返回true。

4. 赋值运算符:
   - 简单赋值运算符(=):将右侧的操作数的值赋给左侧的操作数。
   - 复合赋值运算符(+=、-=、*=、/=、%=):将右侧的操作数与左侧的操作数进行相应的运算,然后将结果赋给左侧的操作数。

5. 位运算符:
   - 与运算符(&):对两个操作数的每一个位进行与运算。
   - 或运算符(|):对两个操作数的每一个位进行或运算。
   - 异或运算符(^):对两个操作数的每一个位进行异或运算。
   - 取反运算符(~):对操作数的每一个位进行取反运算。
   - 左移运算符(<<):将操作数的每一个位向左移动指定的位数。
   - 右移运算符(>>):将操作数的每一个位向右移动指定的位数。
   - 无符号右移运算符(>>>):将操作数的每一个位向右移动指定的位数,移动后空出的位以0填充。

6. 三元运算符(?:)是一种简化if-else语句的表达式。它由三部分组成,中间用问号和冒号分隔,语法为:表达式1 ? 表达式2 : 表达式3。

其中,表达式1为条件表达式,如果为真,则执行表达式2并返回结果;如果为假,则执行表达式3并返回结果。三元运算符可以嵌套使用,用于多个条件的判断。

例如:

int a = 5;
int b = 10;
int max = (a > b) ? a : b;
上述代码中,如果变量a大于变量b,则max的值为a;反之,max的值为b。

7. 自增自减运算符(++、--)用于增加或减少变量的值。它可以分为前缀形式和后缀形式。

前缀形式是在变量前面使用自增(++)或自减(--)运算符,语法为:++变量、--变量。它的特点是先执行自增或自减操作,再返回结果。

后缀形式是在变量后面使用自增(++)或自减(--)运算符,语法为:变量++、变量--。它的特点是先返回结果,再执行自增或自减操作。

例如:

int a = 5;
int b = ++a;
在这段代码中,变量a的值先自增1,然后赋值给变量b,所以b的值为6。

int c = 5;
int d = c++;
在这段代码中,变量c的值先赋值给变量d,然后再自增1,所以d的值为5。

自增自减运算符还可以用于表达式中的运算,例如:

int a = 5;
int b = 10;
int sum = a++ + --b;
在这段代码中,变量a的值先赋值给sum,然后再自增1;变量b的值先自减1,然后再与sum相加。所以sum的值为15,a的值为6,b的值为9。



public class Test01 {
    public static void main(String[] args) {
        //算术运算符+-*/%
        int a = 9;
        int b = 7;
        int c = 0;
        c = a + b;
        System.out.println(c);
        c = a - b;
        System.out.println(c);
        c = a * b;
        System.out.println(c);
        c = a / b;//向零取整
        System.out.println(c);
        c = a % b;
        System.out.println(c);

        //遵循正常的数学规律,负负得正
        System.out.println(9/4);
        System.out.println(9/-4);
        System.out.println(-9/4);
        System.out.println(-9/-4);

        //取余的结果,看的是被除数的符号,被除数是正结果为正,被除数是负结果为负
        System.out.println(9%4);
        System.out.println(9%-4);
        System.out.println(-9%4);
        System.out.println(-9%-4);

    }
}


public class Test02 {
    public static void main(String[] args) {
        //复合赋值运算符
        int a = 9;
        int b = 5;
        b += a;//等价于b = b + a ;
        System.out.println("b = " + b);//14
        b -= a;//等价于b = b - a ;
        System.out.println("b = " + b);//5
        b *= a;//等价于b = b * a ;
        System.out.println("b = " + b);//45
        b /= a;//等价于b = b / a ;
        System.out.println("b = " + b);//5
        b %= a;//等价于b = b % a ;
        System.out.println("b = " + b);//5

        //面试题:+号的作用
        //1.算术运算符:进行算术运算,+左右两侧都是操作数
        //2.字符串连接符,进行字符串拼接,+左右两侧只要有一侧是字符串就是字符串连接符
        //3.+表示正号(不写)

        System.out.println(6+6+6+"6");
        System.out.println(6+6+"6"+6);
        System.out.println(6+"6"+6+6);
        System.out.println("6"+6+6+6);

        /**
         *面试题:问下列代码有错误吗,如果有说出错误,如果没有则输出结果
         * byte a = 127;
         * a += 1;
         * a = a + 1;
         * 答:上述第三行代码报错,原因是1是int类型的数据,在进行计算的时候会将a+1
         * 全部转换为int类型进行计算,计算完再给a赋值的时候会发生报错,所以修改后的
         * 代码是a=(byte)(a+1);第二句不报错的原因是a+=1,实质等价于
         * a+=(byte)(a+1);默认带强制转换所以不报错,修改后输出时发现数值超过了byte
         *的数据类型的取值范围,发生了数据溢出
         * 解决方法跟上述一致,所以输出结果是-127。
         */


    }
}
public class Test03 {
    public static void main(String[] args) {
        int a = 9;
        //后序增
        a++;
        //前序增
        ++a;
        //后序减
        a--;
        //前序减
        --a;
        //++--符号在前就是前序,在后就是后序
        //前序增减:先运算在赋值
        //后序增减:先赋值在运算
        a = 5;
        int b = 0;
        b = a++;
        System.out.println("a = "+ a +" b = "+b);
        b = ++a;
        System.out.println("a = "+ a +" b = "+b);
        b = a--;
        System.out.println("a = "+ a +" b = "+b);
        b = --a;
        System.out.println("a = "+ a +" b = "+b);

        int x = 5;
        int y = ++x;
        int z = y-- + ++x;
        x = 7;
        y = x--;
        System.out.println("x = " + x);
        System.out.println("x = " + y);
        System.out.println("z = " + z);
        System.out.println("z = " + z++);
        System.out.println("z = " + (++z));

    }
}
public class Test04 {
    public static void main(String[] args) {
        //关系运算符
        int a = 7;
        int b = 9;
        //返回值都是boolean类型的值
        System.out.println(a==b);
        System.out.println(a!=b);
        System.out.println(a>b);
        System.out.println(a<b);
        System.out.println(a>=b);
        System.out.println(a<=b);

    }
}
public class Test05 {
    public static void main(String[] args) {
        int a = 0,b = 4,c = 5;
        //面试题:&&和&的区别
        //答:相同点:都可以作为逻辑运算符进行逻辑运算,左右两侧都是boolean类型的值,
        //当左右两侧都为真的时候,结果为真,否则结果为假。
        //不同点:作为逻辑运算符时,&&为短路与,左侧为false的时候,右侧代码不运行,
        // 而&不管左侧是否为false,右侧都会正常执行。
        //&还可以作为位运算符进行位运算
        if (b>c&&(a=3)>2){
            a = 1;
            b = 0;
            c = 0;
        }
        System.out.println(a);
    }
}
public class Test06 {
    public static void main(String[] args) {
        //位运算最好的理解方式是转成二进制进行计算
        int a = 16;//0001 0000
        int b = 15;//0000 1111
        int c = a & b;//0000 0000
        System.out.println(c);//0
        int d = a | b;//0001 1111
        System.out.println(d);//31
        //异或,相同的为假,不同的为真
        int e = a ^ b;//0001 1111
        System.out.println(e);//31
        //面试题:如何将2快速的变成16
        //<<左移0000 0010->0001 0000
        System.out.println(2<<3);
    }
}
public class Test07 {
    public static void main(String[] args) {
        //条件运算符,Java中唯一的条件运算符
        //x?y:z
        //x为boolean类型的表达式,如果x为true,则输出y的值,否则输出z的值
        int score= 68;
        //String表示的是字符串类型
        String result = score>60?"及格":"不及格";
        System.out.println(result);

    }
}
public class test08 {
    //main回车或者psvm回车
    public static void main(String[] args) {
        //sout回车
        System.out.println();
        Scanner sc = new Scanner(System.in);
        //next()和nextLine()都是用于接收字符串的
        String s1 = sc.next();
        //nextLine()可以接收空格回车等特殊符号
        String s2 = sc.nextLine();
        String s3 = sc.next();
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);
    }
}
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值