java基础语法3 算术运算符 赋值运算符 自加自减 连接字符串

本文介绍了Java中的算术运算符,包括加减乘除、取整除、取余以及自加自减的用法,强调了表达式结果的数据类型由最大数据类型决定的原则。同时,文章探讨了自加自减的顺序差异,并通过示例解释了运算优先级。此外,还讲解了赋值运算符的作用,以及在short类型变量自增时可能出现的问题。
摘要由CSDN通过智能技术生成

Java基础语法3

Java学习路线Day4

一、运算符

1.算术运算符

     +   -    *       /        %        ++    --
     加  减   乘    除法取整   除法取余    自加   自减

首先了解几个概念:
操作数:参与运算的常量或变量值。
操作符:将参与运算的常量或者变量值连接起来的符号。
表达式:由操作数和操作符构成并且符合Java语法规范的式子。根据操作符的不同,可以称作不同的表达式(算术表达式,逻辑表达式等)。

重点:一个表达式的最终结果的数据类型是由参与表达式中的最大的数据类型决定的。
示例:

public class SuanShuOptDemo1 {
    public static void main(String[] args) {
        int a = 40;
        int b = 20;
        System.out.println(a + b);//加
        System.out.println(a - b);//减
        System.out.println(a * b);//乘
        System.out.println(a / b);//取整数部分,不能除0
        //如果我就是想让a/b整除具有小数部分
        //只要让其中一个转换为float类型即可
        System.out.println((float) a / b);
        
        System.out.println(a % b);//取余数部分
        
        //自加自减单独使用时,++在变量前面和后面结果都一样
        System.out.println(a++);
        System.out.println(++a);
        System.out.println(a--);
        System.out.println(--a);
        //自加自减混合使用时,++在变量前面,先进行赋值操作,
        //再自加1;++在变量后面,先自加1,再进行赋值操作。
    }
}

image.png
1.System.out.println((float) a / b);
为什么输出为2.0?
就是因为一个表达式的最终结果的数据类型是由参与表达式中的最大的数据类型决定的。
2.+ - * / %都是使用变量来计算。++和- -是对变量本身计算,使变量本身加1或减1。(注意a++是先使用a作为语句的参数,再自加。++a是先自加,再使用加过的a值作为参数。)

如下代码应该输出什么?

public class SuanShuOptDemo3 {
    public static void main(String[] args) {
        int a = 4;
        int b = (a++)+(++a)+(a*10);
        System.out.println("a:"+a);
        System.out.println("b:"+b);
    }
}

在这里插入图片描述
a的值只需要看a经过了几次自加,两次,所以就是4+2=6.
b的值分几步来看:
int b = (a++)+(++a)+(a*10)
1.第一个括号内是a++,所以先把a的值参与到运算,即第一个括号内取值为4;
2.取值之后a自加,此时a=5;
3.第二个括号内是++a,所以先让a自加,a=6,然后再取a的值,也就是说第二个括号内取值为6,;
4.此时a是6,所以a*10=60;
5.b=4+6+60=70;


这里还需要补充 + 加号的用法:
1.字符相加

public class DataTypeDemo4 {
    public static void main(String[] args) {
        System.out.println('a');//单独打印字符,就是打印字符本身
        //当字符与数值相加或者两个字符相加时,会将字符对应的ASCII码值取出来进行运算
        System.out.println('a' + 1);
        System.out.println('a' + 'b');
    }}

image.png
2.连接字符串
从左往右运算,一个加号一个加号地分析
1.加号两边,只要有一边是字符串,那么就做字符串的拼接运算
2.加号两边如果没有字符串,就做加法运算
3.可以使用小括号调整运算顺序
4. 单个字符参与运算就是使用ASCII值

public class DataTypeDemo5 {
    public static void main(String[] args) {
        System.out.println("hello"+'a'+1);
        System.out.println('a'+1+"hello");
        System.out.println("5+5="+(5+5));
        System.out.println(5+5+"=5+5");
    }
}

image.png

2.赋值运算符

=     +=       -=      /=      %=
        int a = 40;
        int b = 20;
        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);
    }
}

image.png
赋值运算符与算术运算符不同,其作用于变量本身(计算后为变量本身赋值)。如上程序,变量a的值经历了40 —>60---->40—>800—>40—>0的变化过程。
题目:
short s1=1; s1 = s1+1;
short s2=1;s2+=1;
上面两个代码有没有问题,如果有,哪里有问题?
在这里插入图片描述
第一行有问题,s1先参与运算,提升数据类型到int型,再用short类型的s1接收,属于小盒子装大象报错。
第二行没有问题是因为赋值运算符隐含了强制类型转换的过程。即:
s+=1 不等价于 s=s+1
s+=1 等价于 s=(s的数据类型)(s+1)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值