6. java运算符

举报
数据分析与统计学之美 发表于 2021/09/28 18:03:30 2021/09/28
【摘要】 Java系列第六课

一、运算符分类

在这里插入图片描述

1、算数运算符

在这里插入图片描述

1)易错点Ⅰ:运算符拼接字符串。
public class  Test{
    	public static void main(String[] args) {
    		// 下面的运算都是从左向右,依次运行的。
         // 字符串在前,后面的运算是当作字符串来拼接。
    		System.out.println("结果是" + 5 + 2); 
         // 数值运算在前,是先进行运算,当碰到了字符串,再进行字符串拼接。
    		System.out.println(5 + 2 + "是结果"); 
         // 假如想要“结果是7”这样的输出结果
         System.out.println("结果是" + (5 + 2));
    }
}

结果如下:在这里插入图片描述

2)+、-、*运算操作如下。
public class  Test{
    	public static void main(String[] args) {
    		System.out.println(5 + 2);
    		System.out.println(5 - 6);
    		System.out.println(5 * 6);
    	}
}

结果如下:在这里插入图片描述

3)易错点Ⅱ:关于除( / ),单独拿出来说。
public class  Test{
    	public static void main(String[] args) {
        // 当数字全为整数,结果也会取整。
         System.out.println(5 / 2);
        // 只要有一个数据为浮点数,结果就是浮点数(发生数据类型提升)
    		System.out.println(5.0 / 2);
    		System.out.println(5 / 2.0);
    		System.out.println(5.0 / 2.0);
    	}
}

结果是:在这里插入图片描述
当除数是0,会发生什么情况:

public class  Test{
	public static void main(String[] args) {
		System.out.println(5 / 0);
	}
}

结果:使用javac编译不会出错,但是使用java运行的时候,会抛出异常。
在这里插入图片描述当除数是0.0,会发生什么情况:

public class  Test{
    	public static void main(String[] args) {
    		System.out.println(5 / 0.0);
    	}
}

结果:使用javac编译不会出错,使用java运行时,结果为Infinity,这个表示“正无穷大”。在这里插入图片描述当除数是-0.0,会发生什么情况:

public class  Test{
    	public static void main(String[] args) {
    		System.out.println(5 / -0.0);
    	}
}

结果是:在这里插入图片描述当被除数是0,除数是0.0或者是-0.0,又会出现什么情况:

public class  Test{
    	public static void main(String[] args) {
    		System.out.println(0 / 0.0);
    		System.out.println(0 / -0.0);
    	}
}

结果是:NaN(非数字)。在这里插入图片描述

4)易错点Ⅱ:关于取余数(取模)%

public class  Test{
    	public static void main(String[] args) {
    		System.out.println(5 % 2);       // 结果是:1
    		System.out.println(5 % 6);       // 结果是:5
    		System.out.println(5 % -2);      // 结果是:1
    		System.out.println(-5 % 2);      // 结果是:-1
         System.out.println(-5 % -2);     // 结果是:-1
    	}
}

注:当被除数是负数,结果就为负数;当被除数为正数,结果就为正数。不管除数是正数还是负数。

5)练习题在这里插入图片描述

第一题:

public class  Test{
    	public static void main(String[] args) {
    		int i = 46;
    		int i1;
    		int i2;
    		i1 = i / 7;
    		i2 = i % 7 ;
    		System.out.println(i1);  
    		System.out.println(i2);
    	System.out.println("周数为:" + i1 + "\t剩余的天数为:" + i2);
    }
}

结果为:
在这里插入图片描述第二题:

public class  Test{
    	public static void main(String[] args) {
    		int i = 567;
    		int i1 = i % 10;          // 得到7
    		int i2 = i / 10 % 10;     // 得到6
    		int i3 = i / 100;         // 得到5
    		int reNum = i1 * 100 + i2 * 10 + i3;
    		System.out.println(reNum);  
    	}
}

结果是:
在这里插入图片描述注意:我们又找到了一个取每个位置上数字的方法。好好体会上述思想。

2、自增自减运算符(一元的):很重要!!!

在这里插入图片描述可以有以下几种写法:在这里插入图片描述操作如下:

public class  Test{
    	public static void main(String[] args) {
    		int i = 5;
    		int j = 10;
    		i++;
    		j--;
    		System.out.println(i);     // 结果是6
    		System.out.println(j);     // 结果是9
     }
}
1)运算规律:(要好好理解)
前缀写法与后缀写法的区别:
后缀:a++
进行赋值运算(或输出语句),先赋值(输出),然后再自增或自减;
前缀:++a
进行赋值运算(或输出语句),先自增或自减,然后在赋值(输出)
2)后缀用法
public class  Test{
    	public static void main(String[] args) {
    		int i = 5;
    		int i1 = i++;   // 先赋值后自增
    		System.out.println(i1 + "," + i);
    	}
}

结果是:
在这里插入图片描述又一个例子:

public class  Test{
    	public static void main(String[] args) {
    		int i = 5;
    		System.out.println(i++);   // 这一行只是先输出,结果为5
    		System.out.println(i);     // 赋值后再自增,结果为6 
    	}
}

结果如下:在这里插入图片描述

3)前缀用法

public class  Test{
    	public static void main(String[] args) {
    		int i = 5;
    		int i1 = ++i;   // 先自增后赋值
    		System.out.println(i1 + "," + i);
    	}
}

结果是:在这里插入图片描述
又一个例子:

public class  Test{
    	public static void main(String[] args) {
    		int i = 5;
    		System.out.println(++i);    // 这一行是先自增,结果为6
    		System.out.println(i);      // 自增后进行输出,结果为6
    	}
}

结果如下:
在这里插入图片描述

练习题

在这里插入图片描述

做这个题目,要注意,前缀和后缀的区别。代码如下:

```java
public class  Test{
    	public static void main(String[] args) {
    		int i = 5;
    		int j = 5;
    		int m = 5;
    		int n = 5;
    		i++;            
    		j = j + 1;
    		m--;
    	n = n - 1;
    	System.out.println(i);      //  此时,i = 6
    	System.out.println(i++);    // 先输出6,然后自增为7 
    	System.out.println(++i);    //先自增,i变为8后再输出
    }
}

结果为:在这里插入图片描述

3、关系运算符

在这里插入图片描述
示例如下:

public class  Test{
    	public static void main(String[] args) {
    		int i = 56;
    		int j = 76;
    		int m  = 10;
    		int n = 100;
    		boolean r = i > j;
    		boolean s = m < n;
    		System.out.println(r);
    	System.out.println(s);
    }
}

结果如下:在这里插入图片描述

4、逻辑运算符

在这里插入图片描述
注:参与运算的操作数是boolean类型,结果也是boolean类型的。
在这里插入图片描述

&&     与    一假为假
||     或    一真为真
!     非    取反,你真我假;你假我真

操作如下:

public class  Test{
    	public static void main(String[] args) {
    		int i = 56;
    		int j = 76;
    		int k = 120;
    		boolean r = i + j > k && false;       // 一假为假
    		boolean s = i + j > k || false;       // 一真为真 
    		boolean t = !(i + j > k || false);    // 取反
    		System.out.println(r);
    	System.out.println(s);
    	System.out.println(t);
    }
}

结果如下:
在这里插入图片描述

5、赋值运算符:又叫“扩展赋值运算符”、“复合赋值运算符”。

在这里插入图片描述
详细说明:
在这里插入图片描述
示例代码如下:

public class  Demo1{
    	public static void main(String[] args) {
    		// 赋值运算符
    		int a = 5;
    		int b = 10;
    		int c = 20;
    		int d = 40;
    		a += 5;      // a = a + 5       5 + 5 = 10
    		b -= 2;      // b = b - 2      10 - 2 = 8
        c *= 3;      // c = c * 3      20 * 3 = 60
        d /= 4;      // d = d / 4      40 / 4 = 10
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
    }
}

结果如下:在这里插入图片描述

易错点

在这里插入图片描述
对于第一段代码分析如下:

public class  Demo1{
    	public static void main(String[] args) {
    		short a = 5;
    		// 相当于 short + int ---> 发生类型提升--->int + int--->最终结果为a为int类型
    		// 但是a是short类型。由int(范围大)--->short(范围小),会有损失。因此,结果报错。
    		a = a + 5;    // 解决办法:a = (short) (a +  5);强制转换类型
    		System.out.println(a);
    	}
}

结果如下:
在这里插入图片描述
对于第二段代码分析如下:

public class  Demo1{
    	public static void main(String[] args) {
    		short b = 5;
    		b += 5;   // 类型不同时候,会自动强制类型转换。b = (short)(b + 5)
    		System.out.println(b);
    	}
}

结果如下:
在这里插入图片描述
结论:a = a + 5与a += 5看似是一样的效果。但是实际上,a += 5中的“+=”运算符,在运算过程中,如果出现数据类型不同的情况,会发生“强制数据类型转换”,优先推荐使用该运算符,相对来说更为安全。

6、条件运算符(三元运算符)

在这里插入图片描述
操作如下:

public class  Demo2{
    	public static void main(String[] args) {
    		// 条件运算符(三元运算符)
    		int num1 = 100;
    		int num2 = 10;
    		int num3 = 1000;
    		String s = num1 > num2 ? "条件成立" : "条件不成立";
    		String t = num1 > num3 ? "条件成立" : "条件不成立";
    		System.out.println(s);
    	System.out.println(t);
    }
}

结果如下:在这里插入图片描述

7、位运算符

在这里插入图片描述

8、逻辑&&和|| 与 位&和| 的区别

逻辑运算符
在这里插入图片描述
位运算符
在这里插入图片描述

操作如下:
public class Demo3 {
    	public static void main(String[] args) {
    		// -------------------------位运算符----------------------------------
    		// 以 5 和 2 两个数字为例
    		System.out.println(Integer.toBinaryString(5));  // 十进制5的二进制是101
    		System.out.println(Integer.toBinaryString(2));  // 十进制2的二进制是10
    		System.out.println("------------------------");
    		System.out.println(5 & 2);    //与
    		System.out.println(5 | 2);    //或
        System.out.println(5 ^ 2);    //异或
        System.out.println(~5);       //非(取反)
        System.out.println(5 << 2);   //左移
        System.out.println(5 >> 2);   //右移
        System.out.println(5 >>> 2);  //无符号右移
    }
}

结果如下:在这里插入图片描述
运算过程解析:
在这里插入图片描述
在这里插入图片描述
区别如下:

 &&||     进行逻辑运算;
 &|     可以逻辑运算  可以位运算;
 &&||      短路   运算;
 &|     非短路  运算;

9、运算符的优先级

在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。