JavaSE04——算数运算符

运算符

1 简介

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。

在Java中,运算符是一种用于执行基本操作的特殊符号。通过使用运算符,我们可以对变量和常量进行基本的数学、逻辑和关系操作。Java中的运算符可以分为以下几类:

  1. 算术运算符:用于执行基本的数学运算,例如加法、减法、乘法和除法等。常见的算术运算符包括+-*/%(取模)等。
  2. 关系运算符:用于比较两个值之间的关系,例如大于、小于、等于和不等于等。常见的关系运算符包括><>=<===!=等。
  3. 逻辑运算符:用于执行基本的逻辑操作,例如与、或和非等。常见的逻辑运算符包括&&(逻辑与)、||(逻辑或)和!(逻辑非)等。
  4. 位运算符:用于对整数进行按位操作,例如按位与、按位或和按位异或等。常见的位运算符包括&(按位与)、|(按位或)、^(按位异或)和~(按位取反)等。
  5. 赋值运算符:用于给变量赋值,并且可以与其他运算符结合使用。常见的赋值运算符包括=+=-=*=/=等。
  6. 其他运算符:Java中还有一些其他类型的运算符,例如条件运算符(? :)和 instanceof运算符等。

通过使用这些运算符,我们可以对变量和常量进行各种各样的操作,并且可以通过运算符优先级和结合性来确定运算符的执行顺序。需要注意的是,在进行运算时,需要保证操作数的数据类型一致,否则需要进行类型转换。

总之,在Java中,运算符是程序员处理数据和执行基本操作的重要工具。了解各种运算符的概念和使用方法,可以帮助我们更加高效地编写程序。

  1. 算术运算符
  2. 赋值运算符
  3. 比较运算符(关系运算符)
  4. 逻辑运算符
  5. 位运算符
  6. 三元运算符

2 算术运算符

算术运算符解释
+加法运算,字符串连接运算
-减法运算
*乘法运算
/除法运算
%取模运算,两个数字相除取余数
++、--自增自减运算
基本运算
  • 算数运算符练习:
public class Demo05 {    
    public static void main(String[] args) {        
        // 定义变量        
        int a = 5;        
        int b = 3;        
        System.out.println(a + b);      //8        
        System.out.println(a - b);      //2        
        System.out.println(a * b);      //15        
        System.out.println(a / b);      //1        
        System.out.println(a % b);      //2        
        System.out.println("------------");  
        
        //整数相除,结果是整数,要得到小数,必须有小数参与运算(提升为double类型)    
        System.out.println(5.0 / 3);        //1.6666666666666667        
        System.out.println(5 / 3.0);        //1.6666666666666667    
    }
}

%取余注意事项:

public class Demo06 {    
    public static void main(String[] args) {        
        System.out.println(5 % 3);        
        System.out.println(-5 % 3);        
        System.out.println(5 % -3);        
        System.out.println(-5 % -3);    
    }
}

tips:取余结果符号与左边符号相同

++和–

++ 运算,变量自己增长1。反之, – 运算,变量自己减少1,用法与 ++ 一致。

  • 独立运算:

    • 变量在独立运算时, 前++ 和 后++ 没有区别 。
    • 变量 前++ :例如 ++i 。
    • 变量 后++ :例如 i++ 。
  • 混合运算:

    • 和其他变量放在一起, 前++ 和 后++ 就产生了不同。

变量 前++ :变量a自己加1,将加1后的结果赋值给b,也就是说a先计算。a和b的结果都是2。

public class Demo07 {
    public static void main(String[] args) {

        int a = 1;
        int b = ++a;                //先++,后赋值

        System.out.println(a);          //2
        System.out.println(b);          //2
    }
}

变量 后++ :变量a先把自己的值1,赋值给变量b,此时变量b的值就是1,变量a自己再加1。a的结果是2,b的结果是1。

public class Demo08 {
    public static void main(String[] args) {

        int a = 1;
        int b = a++;            //先赋值,后++

        System.out.println(a);      //2
        System.out.println(b);      //1
    }
}

自增自减小练习

public class Demo09 {
    public static void main(String[] args) {
        int a = 10;
        int b = 10;
        int c = 10;
        a = b++;
        c = --a;
        b = ++a;
        a = c--;

        System.out.println(a);      //?
        System.out.println(b);      //?
        System.out.println(c);      //?
    }
}
+=运算
public class Demo {    
    public static void main(String[] args) {        
        short s = 1;       
        s += 1;				          
        System.out.println(s);    
    }
}

s += 1 逻辑上看作是 s = s + 1;计算结果被提升为int类型再向short类型赋值时发生错误,因为不能将取值范围大的类型赋值到取值范围小的类型,但是, s=s+1进行两次运算 , += 是一个运算符,只运算一次,并带有强制转换的特点,也就是说 s += 1 就是 s = (short)(s + 1) ,因此程序没有问题编译通过,运行结果是2;

但如果是s=s+1;那么就会出现编译保存,需要强制转换;

字符串注意事项

符号在遇到字符串的时候,表示连接、拼接的含义。“a”+"b"的结果是“ab”,连接含义


public class Demo10 {
    public static void main(String[] args) {
        // +遇到字符串表示连接
        System.out.println("df" + "bz");        //"dfbz"
        System.out.println("dfbz" + 10);        //"dfbz10"

        //1. "dfbz"+5="dfbz5"; 2. "dfbz5"+5="dfbz"
        System.out.println("dfbz" + 5 + 5);

        System.out.println("dfbz" + (5 + 5));   //1. 5+5=10; 2. 10+"dfbz"="10dfbz"
        System.out.println(5 + 5 + "dfbz");     //1. 5+5=10; 2. 10+"dfbz"="10dfbz"

        System.out.println("1+1="+1+1);
    }
}

思考?

System.out.println("1+1="+1+1);
常量和变量的运算

思考?下面的程序有问题吗?

public class Demo {    
    public static void main(String[] args) {        
        byte b1 = 1;        
        byte b2 = 2;        
        byte b3 = 1 + 2;        
        byte b4 = b1 + b2;    
    }
}

分析: b3 = 1 + 2 , 1 和 2 是常量,为固定不变的数据,在编译的时候(编译器javac),已经确定了 1+2 的结果并没有超过byte类型的取值范围,可以赋值给变量 b3 ,因此b3=1 + 2是正确的。反之, b4 = b2 + b3 , b2 和 b3 是变量,变量的值是可能变化的,在编译的时候,编译器javac不确定b2+b3的结果是什么,因此会将结果以int类型进行处理,所以int类型不能赋值给byte类型,因此编译失败。

3、算术运算符的优先级

当一个表达式中含有多个算术运算符时就会出现运算的先后顺序,

java中算术运算符的先后顺序为:【++ or - -】 > 【* or / or %】 > 【+ or -】

举例:

System.out.println(3 + 4 * 5 % 6 / 2);//相当于(((4 * 5) % 6 )/ 2) + 3 = 4
//字符串的 + 操作
System.out.println(3+'A'+"string");//先进行3+'A'操作然后再进行字符串的连接
System.out.println("string"+3+'A');//直接进行字符串的连接

控制台输出结果:

4
68string
string3A

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值