Java基础——运算符

一、运算符和表达式

  1. 什么叫运算符?

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

b.什么是表达式?

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

二、六种运算符

  1. 算术运算符

符号

作用

+

-

*

/

%

取模、取余

1.小数参与运算时,结果有可能是不精确的;
2.整数参与计算,结果只能得到整数;
  1. 类型转换的分类

隐式转换 (自动类型提升):取值范围小的数值转换为取值范围大的数值
隐式转换的两种提升规则:1.取值范围小的和取值范围大的进行运算,小的会先提升为大的,再进行运算;2.byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行计算。


强制转换:取值范围大的数值转换为取值范围小的数值
格式:目标数据类型 变量名 = (目标数据类型)被强制的数据
注:数据如果过大就会导致结果出错
  1. 字符串的“+”操作

1.当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算符了。会将前后的数据进行拼接,并产生一个新的字符串。
例如:“123”+123 ---->结果为:“123123”

2.连续进行“+”操作时,从左到右逐个执行。
例如:1+99+“年” ---> 结果为:“100年”
  1. 字符的“+”操作

字符+字符字符+数字时,会把字符通过ASCII码表查询到对应的数字再进行计算。
  1. 练习

需求:键盘录入一个三位数将其拆分为个位、十位、百位,打印在控制台
公式总结:
个位:数值%10
十位:数值/10%10
百位:数值6100%10
千位:数值/1000%10;
....
代码如下
import java.util.Scanner;

public class ArithmeticoperatorDem01 {
    public static void main(String[] args) {
        // 键盘录入一个三位数,获取其中的个位、十位、百位

        // 1.键盘录入
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个三位数:");
        int number = sc.nextInt();

        // 2.获取个位、十位、百位
        // 公式:
        // 个位:数字%10
        // 十位:数字/10%10
        // 百位:数字/10/10%10
        // ...
        int ge = number % 10;
        int shi = number / 10 % 10;
        int bai = number / 10 / 10 % 10;
        System.out.println("个位是:"+ge);
        System.out.println("十位是:"+shi);
        System.out.println("百位是:"+bai);
    }
}

运行结果:

  1. 自增自减运算符

符号

作用

说明

++

变量的值加1

--

变量的值减1

注意事项:
++和--既可以放在变量的前边,也可以放在变量的后边。

两种用法:

1.单独使用:++和--无论是放在变量的前边还是后边,单独写一行结果是一样的。
2.参与计算:a++是先用后加,++a是先加后用。

代码演示如下:

public class test04 {
    public static void main(String[] args) {
        int x = 10;
        //后++:先用后加
        //先把x变量中的值拿出来用,赋值给y,然后再进行自增
        //赋值给y的是自增前的
        int y = x++;
        //先++:先加后用
        //先把x进行自增,然后把自增后的结果赋值给左边的变量
        //先把x自增,变成12,然后再把自增之后的12赋值给z
        int z = ++x;
        System.out.println("x:" + x);
        System.out.println("y:" + y);
        System.out.println("z:" + z);
    }
}

运行结果为:

  1. 赋值运算符

符号

作用

说明

=

赋值

int a=10,将10赋值给变量a

+=

加后赋值

a+=b,将a+b的值给a

-=

减后赋值

a-=b,将a-b的值给a

*=

乘后赋值

a*=b,将a×b的值给a

/=

除后赋值

a/=b,将a÷b的商给a

%=

取余后赋值

a%=b,将a÷b的余数给a

注意事项:扩展的赋值运算符隐含了强制类型转换
  1. 关系运算符(比较运算符)

符号

说明

==

a==b,判断a和b的值是否相等,成立为true,不成立为false

!=

a!=b,判断a和b是否不相等,成立为true,不成立为false

>

a>b,判断a是否大于b,成立为true,不成立为false

>=

a>=b,判断a是否大于等于b,成立为true,不成立为false

<

a<b。判断a是否小于b,成立为true,不成立为false

<=

a<=b,判断a是否小于等于b,成立为true,不成立为false

注意事项:关系运算符的结果都是boolean类型,要么是true,要么是false。
千万不要把“==”误写成“=”。
  1. 逻辑运算符

符号

作用

说明

&

逻辑与(且)

并且,两边都是真,结果才是真

|

逻辑或

或者,两边都为假,结果才是假

^

逻辑异或

相同为false,不同为true

!

逻辑非

取反

短路逻辑运算符:(效率比普通的逻辑运算符高)

符号

作用

说明

&&

短路与

结果和&相同,但是有短路效果

||

短路或

结果和|相同,但是有短路效果

注意事项:1.&、|,无论左边true、false,右边都要执行;
2.&&、||,如果左边能确定整个表达式的结果,右边不执行;
3.&&:左边为false,右边不管是真是假,整个表达式的结果一定是false;
4.||:左边为true,右边不管是真是假,整个表达式的结果一定是true;
5.这两种情况下,右边不执行,提高了效率。

最常用的逻辑运算符:&&,||,!
  1. 三元运算符(三元表达式)

  1. 格式

关系表达式?表达式1:表达式2;
先判断关系表达式,如果为真执行表达式1,如果为假执行表达式2
  1. 计算规则

首先计算 关系表达式的值
如果值为true, 表达式1的值就是运算结果
如果值为false, 表达式2的值就是运算结果

三、运算符优先级

优先级

运算符

1

.、()、{}

2

!、-、++、--

3

*、/、%

4

+、-

5

<<、>>、>>>

6

<、<=、>、>=、instanceof

7

==、!=

8

&

9

^

10

|

11

&&

12

||

13

?:

14

=、+=、-=、*=、/=、%=、&、=

四、原码反码补码

  1. 原码

十进制数据的二进制表现形式,最左边是符号位,0为正,1为负
例如:56 --> 0 0111000;其中 0是符号位, 0111000是数据
最大值为01111111 (十进制数为+127)
最小值为11111111 (十进制数为-127)

原码的弊端:
利用原码进行计算的时候,如果是对正数进行计算是不会有问题的。
但是如果是负数计算,结果就出错,实际运算的结果,跟正确的运算方向是相反的。
  1. 反码(为了解决原码不能计算负数的问题而出现的)

正数的反码是其本身,负数的反码是符号位保持不变,其余位取反
即正数的反码不变,负数的反码在原码的基础上,符号位不变,数值取反,0变1,1变0。

反码的弊端:
负数运算的时候,如果结果不跨0,是没有任何问题的,但是如果结果跨0,跟实际结果会有1的偏差。
  1. 补码(为了解决负数计算时跨0的问题而出现的)

正数的补码是其本身,负数的补码是在其反码的基础上+1。
另外补码还能多记录一个特殊的值-128,该数据在1个字节下,没有原码和反码。
注:计算机中的存储和计算都是以补码的形式进行的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值