从零开始学 Java 1-3 运算符

本文介绍了Java中的算术运算符,包括加减乘除和取余,通过实例展示了它们的用法。还讨论了数字、字符和字符串相加的不同情况,以及赋值运算符的使用,特别是类型转换和潜在的溢出问题。此外,提到了将三位数拆分成个位、十位和百位的方法。
摘要由CSDN通过智能技术生成

1-3 运算符

image-20221018114053859

运算符: 对字面量或者变量进行操作的符号

表达式:运算符把字面量或者变量连接起来符合 java 语法的式子就可以称为表达式。不同运算符连接的表达式体现的是不同类型的表达式。

1.1、算术运算符

Java 中的算术运算符有如下几种:

1639985319821

实例:

/*
    算术运算符
 */
public class OperatorDemo {
    public static void main(String[] args) {
        //定义两个int类型的变量
        int a = 6;
        int b = 4;
        //10
        System.out.println(a + b);
        //2
        System.out.println(a - b);
        //24
        System.out.println(a * b);
        //结果为 1 还是 1.5? ,结果为 1
        System.out.println(a / b);
        //2
        System.out.println(a % b);
        //整数相除只能得到整数,要想得到小数,必须有浮点数的参与
        System.out.println(6.0 / 4);
    }
}

最后,我们来总结一下,刚才在演示代码的时候有两个注意事项:

1639985366716

1.2、案例数值拆分

需求: 定义一个三位数,将其拆分为个位、十位、百位后,输出在控制台

什么意思呢?下面我们举例来说明一下:

举例: int number = 123;

在控制台输出结果:

​ 个位是:3

​ 十位是:2

​ 百位是:1

知道了要做什么后,下面我们来分析一下如何获取个位,十位,百位:

分析:

  • 个位的计算:数值 % 10

    123 除以 10(商12,余数为3)

  • 十位的计算:数值 / 10 % 10

    123 除以 10 (商12,余数为3,整数相除只能得到整数)

    12 除以 10 (商1,余数为2)

  • 百位的计算:数值 / 10 / 10 % 10

    123 / 10 / 10 % 10(123 / 10 得到12,12 / 10 得到1,1 % 10 得到 1)

分析完毕之后,实现一下:

/*
    需求:定义一个三位数,将其拆分为个位、十位、百位后,输出在控制台
 */
public class OperatorTest {
    public static void main(String[] args) {
        //定义一个三位数
        int number = 123;

        //获取个,十,百位数据
        int ge = number % 10;
        int shi = number / 10 % 10;
        int bai = number / 100 % 10;

        //输出结果
        System.out.println("个位是:" + ge);
        System.out.println("十位是:" + shi);
        System.out.println("百位是:" + bai);
    }
}

1.3、+操作的三种情况

1.3.1、数字相加(类型转换)

在Java程序中,数据参与运算,要求类型一致。这里就涉及到了数据的类型转换。而类型转换又分为两种:

  1. 隐式转换
  2. 强制转换

隐式转换: 把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量

1639986136058

强制转换: 把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量

格式:数据类型 变量名 = (目标数据类型)(数值或者变量)

演示如下:

/*
    数字相加
 */
public class OperatorDemo01 {
    public static void main(String[] args) {
        int a = 10;
        double b = 13.14;
        //隐式转换 为 double
        System.out.println(a + b);
		//强转为 int
        int c = (int)(a + b);
        System.out.println(c);
		//double d = a + b;

        short s = 10;
        int i = 20;
        //隐式转换 为 int
        int j = s + i;
		//short ss = s + i;
		//强转为 short
        short ss = (short) (s + i);
    }
}

强转溢出问题案例:

public static void main(String[] args) {
    //short 最大为 32767
    int a = 32769;
    int b = 32768;
    int c = 32767;
    short d = (short)a;
    short e = (short)b;
    short f = (short)c;
    System.out.println(d);//-32767
    System.out.println(e);//-32768
    System.out.println(f);//32767
}

当做强转的时候,会出现数据值溢出的情况,

如果数据超过了最大值,则会变成最小值,所以在转换之前要考虑是否会溢出这点

1.3.2、字符相加

代码演示:

/*
    字符相加
 */
public class OperatorDemo02 {
    public static void main(String[] args) {
        //定义两个变量
        int i = 10;
        char ch = 'A';//'A'的值是65
        ch = 'a';//'a'的值是97
        ch = '0';//'0'的值是48
        System.out.println(i + ch);
    }
}

字符参与 + 操作,其实就是拿字符在计算机底层对应的数值来进行计算的,这里我们了解一下英文大小写字符和数字字符对应的数据值:

  • ‘A’ 65 A-Z 是连续的
  • ‘a’ 97 a-z 是连续的
  • ‘0’ 48 0-9 是连续的

ASCII 码表,里面有常用的字符及其对应的数值关系:

1639986559242

1.3.3、字符串相加

代码演示:

/*
    字符串相加
 */
public class OperatorDemo03 {
    public static void main(String[] args) {
        System.out.println("it" + "heima");
        System.out.println("itheima" + 666);
        System.out.println(666 + "itheima");

        System.out.println("itheima" + 6 + 66);
        System.out.println(1 + 99 + "年itheima");
    }
}

代码演示完毕后,回到资料总结:

  • 当 “+” 操作中出现字符串时,这个 “+” 是字符串连接符,而不是算术运算
    • “zhongguo”+ 666
  • 当连续进行 “+” 操作时,从左到右逐个执行
    • 1 + 9999 + “岁zhongguo”

1.4、赋值运算符

Java 中的赋值运算符有如下几种:

1639987238107

代码演示:

/*
    赋值运算符
 */
public class OperatorDemo {
    public static void main(String[] args) {
        int a = 10;
        System.out.println("a:" + a);

        // += : 把左边和右边的数据相加,最后把结果赋值给左边
		//a += 20;
        a = a + 20;
        System.out.println("a:" + a);


        //注意:扩展的赋值运算符底层隐含了强制类型转换
        short s = 1;
		//s += 2;
        s = (short) (s + 2);
        System.out.println("s:" + s);
    }
}

注意:

1639987319209

以上内容大部分来着黑马,然后进行了下加工

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值