运算符(代码及操作)

运算符基础题

1.1 算术运算符

/*
    算术运算符:
       +: 求和
       -: 求差
       *: 求积
       /: 求商
       %: 求余数
 */

import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        //+: 求和
        int a = 10;
        int b = 20;
        int c = a + b;
        System.out.println(c);
        //键盘录入两个整数,求和
        Scanner sc = new Scanner(System.in);//Alt+回车修正代码或者叫不全代码
        System.out.println("请输入第一个整数:");
        int num1 = sc.nextInt();
        System.out.println("请输入第二个整数:");
        int num2 = sc.nextInt();
        int num3 = num1+num2;
        System.out.println("两数的和是:"+num3);

        //-: 求差
        int d = a - b;
        System.out.println(d);

        //*: 求积
        int e = a * b;
        System.out.println(e);
        System.out.println("--------------------");
        //数学中的除法 可以同时求商和求余数 10 ÷ 3 = 3 ...... 1 在java中要么求商要么求余数
        // /: 求商  整数相除叫取整
        int x = 10;
        int y = 3;
        int z = x / y;
        System.out.println(z); // 3
        // %: 求余数 除不尽都是余数
        int m = x % y;// 10%3
        System.out.println(m);// 1
        //我就想得到3.333333…怎么办? 就要使用小数相除
        double n = 10.0 / 3;  //自动类型转换 把int类型的3,转成double类型的3.0
        System.out.println(n);

        //除不尽都是余数
        int h = 3%10;
        System.out.println(h); // 3
        int j = 10%20;
        System.out.println(j); //10

        int k = 6%10;
        System.out.println(k); //6
    }
}

1.2 字符的加操作

/*
    字符的加操作:


    提示:byte short char 三种类型的数据,在参与运算的时候,首先要转成int 类型的值,然后再参与运算


    ASCII码:
        ASCII (American Standard Code for Information Interchange):
        美国信息交换标准代码是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。
        它是最通用的信息交换标准,并等同于国际标准 ISO/IEC 646。
        ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符

         'A' ==> int 类型的 65
         'a' ==> int 类型的 97
         '0' ==> int 类型的 48

 */
public class Demo02 {
    public static void main(String[] args) {
        char c = 'A';
        System.out.println(c + 1); //66

        // 'A' ==> int 类型的 65

        char d = 'a';
        System.out.println(d + 1); //98

        // 'a' ==> int 类型的 97

        char e = '0';
        System.out.println(e + 1); //49

        // '0' ==> int 类型的 48

        //如果有 更高的数据类型参与运算 向高类型转
        double f = 3.14;
        double s = c + f;
        System.out.println(s);

    }
}

1.3 字符串的加操作

/*
    字符串的加操作:
        拼接,遇到字符串才是拼接符
 */
public class Demo03 {
    public static void main(String[] args) {
        System.out.println("HelloWorld");
        System.out.println("Hello"+"World");
        System.out.println(1+99+"年黑马");

        System.out.println(1+2+3+4+5+"HelloWorld"+6+7+8+9);//15HelloWorld6789
        System.out.println(1+2+3+4+5+"HelloWorld"+(6+7+8+9));//15HelloWorld30
    }
}

1.4 自增自减运算符

/*
    自增自减运算符
        自增运算符:++
            对变量自增一
            自增运算符和变量单独使用的时候,无论在变量的前面还是在变量的后面都是对变量自增一
            自增运算符和其他变量参与运算时候 ++在变量的后面,先参与运算,然后再自增一
            自增运算符和其他变量参与运算时候 ++在变量的前面,先自增一,在参与运算
 */
public class Demo04 {
    public static void main(String[] args) {
        //自增运算符:++
        //自增运算符和变量单独使用的时候,无论在变量的前面还是在变量的后面都是对变量自增一
        int a = 10;
        //a++;
        ++a;
        System.out.println(a); //11
        //自增运算符和其他变量参与运算时候 ++在变量的后面,先参与运算,然后再自增一
        int b = 20;
        int c = b++;
        System.out.println(b); //21
        System.out.println(c); //20
        //自增运算符和其他变量参与运算时候 ++在变量的前面,先自增一,在参与运算
        int d = 30;
        int e = ++d;
        System.out.println(d); //31
        System.out.println(e); //31


    }
}
/*
    自减运算符:
        对变量自减一
 */
public class Demo05 {
    public static void main(String[] args) {
        int a = 10;
        //单独使用的时候,无论在变量的前面还是在变量后面,都是对变量自减一
        //--a;
        a--;
        System.out.println(a); // 9
        //参与运算的时候,--在变量的后面,先参与运算,再自减一
        int b = 20;
        int c = b--;
        System.out.println(b); // 19
        System.out.println(c); // 20
        //参与运算的时候,--在变量的前面,先自减一,在参与运算
        int d = 30;
        int e = --d;
        System.out.println(d);
        System.out.println(e);
    }
}

1.5 关系运算符

/*
    关系运算符:
        >
        >=
        <
        <=
        ==
        !=
        关系运算符的结果是布尔类型的值,是true或者false
 */
public class Demo06 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(a > b);//false
        System.out.println(a < b);//true
        a = 20;
        System.out.println(a == b);//true
        System.out.println(a >= b);//true
        System.out.println(a <= b);//true
        a = 21;
        System.out.println(a >= b);//true
        System.out.println(a <= b);//false

        System.out.println(a != b);//true

    }
}

1.6 逻辑运算符

/*
    逻辑运算符:
        & :见false则false,只有两边同时为true结果才为true
        | :见true则true ,只有两边同时为false结果才为false
        ^ : 相同为false 不同为true
        ! : 取反 true变false false变true
        提示:逻辑运算符两边放的是关系表达式,因为关系表达式的值是布尔类型的,所以逻辑运算符表达式的值,也是布尔类型的
 */
public class Demo07 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 30;
        // & :见false则false,只有两边同时为true结果才为true
        System.out.println(a > b & a > c); //false & false ==> false
        System.out.println(a > b & a < c); //false & true  ==> false
        System.out.println(a < b & a > c); //true  & false ==> false
        System.out.println(a < b & a < c); //true  & true  ==> true
        System.out.println("-------------------------");
        //| :见true则true ,只有两边同时为false结果才为false
        System.out.println(a > b | a > c); //false | false ==> false
        System.out.println(a > b | a < c); //false | true  ==> true
        System.out.println(a < b | a > c); //true  | false ==> true
        System.out.println(a < b | a < c); //true  | true  ==> true
        System.out.println("--------------------------");
        //^ : 相同为false 不同为true
        System.out.println(a > b ^ a > c); //false ^ false ==> false
        System.out.println(a > b ^ a < c); //false ^ true  ==> true
        System.out.println(a < b ^ a > c); //true  ^ false ==> true
        System.out.println(a < b ^ a < c); //true  ^ true  ==> false
        System.out.println("--------------------------");
        //!:取反的意思 true变false,false变true
        System.out.println(a > b);      //false
        System.out.println(!(a > b));   //true
        System.out.println(!!(a > b));  //false
        System.out.println(!!!(a > b)); //true
    }
}

1.7 短路的逻辑运算符

/*
    短路的逻辑运算符:
        &&:
            短路与,和逻辑与的运算规则是一样的,见false则false,具有短路的效果,如果左边表达式的值是false右边就表达式不运算
        ||:
            短路或,和逻辑或的运算规则是一样的,见true则true,具有短路的效果,如果左边表达式的值为true,右边表达式就不运算
 */
public class Demo08 {
    public static void main(String[] args) {
        //&:短路与,和逻辑与的运算规则是一样的,见false则false,具有短路的效果,如果左边表达式的值是false右边就表达式不运算
        int a = 10;
        int b = 20;
        /*System.out.println(a++ > 30 & b++ > 30); //false & false ==> false
        System.out.println(a); //11
        System.out.println(b); //21*/
        System.out.println(a++ > 30 && b++ > 30); //false & false ==> false
        System.out.println(a); //11
        System.out.println(b); //20
        //||:短路或,和逻辑或的运算规则是一样的,见true则true,具有短路的效果,如果左边表达式的值为true,右边表达式就不运算
        int c = 30;
        int d = 40;
        //System.out.println(c++ < 50 | d++ > 50); //true | false ==> true
        /*System.out.println(c); //31
        System.out.println(d); //41*/
        System.out.println(c++ < 50 || d++ > 50); //true | false ==> true
        System.out.println(c); //31
        System.out.println(d); //40
    }
}

1.8 赋值运算符

/*
    赋值运算符:
        =: 把右边的变量或者值,赋值给左边的变量


        +=:
            把左边的变量中的值和右边的变量或者值相加的和,重新赋值给左边的变量
        -=:
            把左边的变量中的值和右边的变量或者值相减的差,重新赋值给左边的变量
        *=:
            把左边的变量中的值和右边的变量或者值相乘的积,重新赋值给左边的变量
        /=:
            把左边的变量中的值和右边的变量或者值相除的商,重新赋值给左边的变量
        %=:
            把左边的变量中的值和右边的变量或者值相除的余数,重新赋值给左边的变量
        复合赋值运算符特点: 隐含了一个强制类型转换
 */
public class Demo09 {
    public static void main(String[] args) {
        // =: 把右边的变量或者值,赋值给左边的变量
        int a = 10;
        int b = a;
        // +=:把左边的变量中的值和右边的变量或者值相加的和,重新赋值给左边的变量
        a += 10;
        System.out.println(a); // 20

        // -=:把左边的变量中的值和右边的变量或者值相减的差,重新赋值给左边的变量
        int c = 30;
        c -= 20; //c = c-20;
        System.out.println(c);

        // *=:把左边的变量中的值和右边的变量或者值相乘的积,重新赋值给左边的变量
        int d = 40;
        d *= 5;
        System.out.println(d); //200

        // /=:把左边的变量中的值和右边的变量或者值相除的商,重新赋值给左边的变量
        int e = 50;
        e /= 5;
        System.out.println(e); //10

        //%=:把左边的变量中的值和右边的变量或者值相除的余数,重新赋值给左边的变量
        int f = 60;
        f %= 8;
        System.out.println(f); //4

        //复合赋值运算符特点: 隐含了一个强制类型转换

        short s = 10;
        s += 10;// s = (short) (s+10);
        System.out.println(s); //20
    }
}

1.9 三元运算符

/*
    三元运算符:
        格式:
            条件表达式/关系表达式 ? 表达式1 : 表达式2
        运算规则:
            1.先判断 条件表达式/关系表达式 的值
            2.如果 条件表达式/关系表达式 的值为true 选择表达式1的值作为此三元表达式最终的值
            3.如果 条件表达式/关系表达式 的值为false 选择表达式2的值作为此三元表达式最终的值
 */
public class Demo10 {
    public static void main(String[] args) {
        //定义两个变量,求最大值
        int a = 30;
        int b = 20;

        int max = a > b ? a : b;

        System.out.println("max = " + max);

    }
}

习题

2.1 求两个数的最大值

import java.util.Scanner;

/*
    键盘录入两个数字,求最大值
        分析:
            1.键盘录入
                导包
                    import java.util.Scanner
                创建对象
                    Scanner sc = new Scanner(System.in);
                接收数据
                    int num1 = sc.nextInt();
                    int num2 = sc.nextInt();
             2.求最大值
                使用三元运算符求最大值
                int max = num1>num2?num1:num2;
            3.打印最大值
                sout(max)
 */
public class Demo01 {
    public static void main(String[] args) {
        //创建对象
        Scanner sc = new Scanner(System.in);
        //接收数据
        System.out.println("请输入第一个数字:");
        int num1 = sc.nextInt();
        System.out.println("请输入第二个数字:");
        int num2 = sc.nextInt();
        //使用三元运算符求最大值
        int max = num1 > num2 ? num1 : num2;
        //打印最大值
        System.out.println("max = " + max);
    }
}

2.2 求一个数字各个位上的数字

import java.util.Scanner;

/*
    需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台
        分析:
            1.键盘录入
                导包 import java.util.Scanner
                创建对象 Scanner sc = new Scanner(System.in);
                接收数据 int num = sc.nextInt();
            2.将其拆分为个位、十位、百位后
            3.打印

            123  拿到各位 123÷10 = 12 ...... 3
                 个位数字:123%10 = 3
                 十位数字:123/10%10 = 2
                 百位数字:123/100 = 1
 */
public class Demo02 {
    public static void main(String[] args) {
        //创建对象
        Scanner sc = new Scanner(System.in);
        //接收数据
        System.out.println("请输入一个三位数:");
        int num = sc.nextInt();
        //将其拆分为个位、十位、百位后
        //个位数字:123%10 = 3
        int ge = num%10;
        //十位数字:123/10%10 = 2
        int shi = num/10%10;
        //百位数字:123/100 = 1
        int bai = num/100;
        //3.打印
        System.out.println("个位上数字:"+ge);
        System.out.println("十位上数字:"+shi);
        System.out.println("百位上数字:"+bai);

    }
    /*
        1234
        个位 1234%10 = 4
        十位 1234/10%10 = 3
        百位 1234/100%10 = 2
        千位 1234/1000 = 1
        12345
        千位 12345/1000%10 = 2
        万位 12345/10000%10 = 1

        求各个位上的数字公式:
            个位 num/1%10
            十位 num/10%10
            百位 num/100%10
            千位 num/1000%10
            万位 num/10000%10
            ......


     */
}

2.3 求三个数的最大值

import java.util.Scanner;

/*
    案例:求三个整数的最大值
        需求:键盘录入三个整数,找出最大值并打印在控制台


 */
public class Demo03 {
    public static void main(String[] args) {
        //使用 Scanner 键盘录入三个整数
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个整数:");
        int num1 = sc.nextInt();
        System.out.println("请输入第二个整数:");
        int num2 = sc.nextInt();
        System.out.println("请输入第三个整数:");
        int num3 = sc.nextInt();
        //用三元运算符获取前两个整数的最大值,并用临时变量保存起来。
        int tempMax = num1 > num2 ? num1 : num2;
        //用三元运算符,让临时最大值,和第三个整数,进行比较,并记录结果
        int max = tempMax > num3 ? tempMax : num3;
        //打印结果
        System.out.println("max= "+max);
    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值