Java--运算符

前言

运算符在我们开始上学的时候就开始见到了,记得一开始接触的是加法‘+’和减法‘-’,然后一步一步加深,对运算符这方面的知识一步一步慢慢的了解的更多了,所以这篇博客相当于对以前知识的总结。

内容

什么是运算符: 对变量进行操作的符号
运算符的分类: 算数运算符 , 赋值运算符 , 比较运算符 , 逻辑运算符 , 三元运算符

1. 算数运算符

算数运算符包括:

符号表示
+加法运算,字符串连接运算
-减法运算
*乘法运算
/除法运算
%取模运算,两个数字相除取余数
++ 、 –自增自减运算
public class Demo01Operater {
	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.66666?        
		System.out.println(a % b); 			 // 2        
		       
		System.out.println("‐‐‐‐‐‐‐‐‐");        
 			// 整数相除,结果是整数,要得到小数,必须有小数参与运算        
		System.out.println(5.0 / 3); 	// 1.6666666666666667        
		System.out.println(5 / 3.0); 	 // 1.6666666666666667        
	}    
}

Java中,整数相除结果是整数。

public static void main(String[] args) {
   int i = 1234;  
   System.out.println(i / 1000 * 1000);		//计算结果是?  
}

求余“%”非常有意思,来个有趣的问题:

System.out.println(5 % 3);		 // ?
System.out.println(5 % 3);		 // ?
System.out.println(5 %3);		 // ?
System.out.println(5 %3); 	 // ?

求余运算结果符号跟前面的数符号相同。
++ 运算:变量自己增长1。反之, – 运算,变量自己减少1,用法与 ++ 一致。

    • 独立运算:
  • 变量在独立运算时, 前++ 和 后++ 没有区别 。
  • 变量 前++ :例如 ++i 。
  • 变量 后++ :例如 i++ 。
    • 混合运算:
  • 和其他变量放在一起, 前++ 和 后++ 就产生了不同
  • 变量 前++ :变量a自己加1,将加1后的结果赋值给b,也就是说a先计算。a和b的结果都是2
public static void main(String[] args) {
    int a = 1;
    int b = ++ a; 					//先++,后=赋值
    System.out.println(a);			//计算结果是2
    System.out.println(b);			//计算结果是2
}
  • 变量 后++ :例如 i++ 。
public static void main(String[] args) {
    int a = 1;
    int b = a ++; 				//先=赋值,后++
    System.out.println(a);		//计算结果是2
    System.out.println(b);		//计算结果是1
}

来个有趣的问题:

// 面试题:
int a = 10;
int b = 10;
int c = 10;

a = b++;
// a = 10, b = 11
c = ‐‐a;
// a = 9, c = 9
b = ++a;
// a = 10, b = 10
a = c‐‐;
// a = 9, c = 8
// 请分别计算出a,b,c的值
    • +符号在字符串中的操作:
  1. +符号在遇到字符串的时候,表示连接、拼接的含义。
  2. “a”+"b"的结果是“ab”,连接含义
public static void main(String[] args) {
// + 遇到字符串表示连接    
System.out.println("abc" + "def");    
System.out.println("abc" + 5);    
System.out.println("abc" + 5 + 5);	 // 1. "abc" + 5 = "abc5"; 2. "abc5" + 5 = "abc55"    
System.out.println("abc" + (5 + 5)); // 1. 5 + 5 = 10; 2. "abc" + 10 = "abc10"    
System.out.println(5 + 5 + "abc");	 // 1. 5 + 5 = 10; 2. 10 + "abc" = "10abc"    
}

来个有趣的问题:

System.out.println("5+5="+5+5);		//输出?

2. 赋值运算符

赋值运算符包括

符号表示
=赋值
+=加后赋值
-=减后赋值
*=乘后赋值
/=除后赋值
%=取模后赋值

赋值运算符,就是将符号右边的值,赋给左边的变量

public static void main(String[] args) {
	// 定义变量    
	int i = 3; // 将3赋值给变量i    
	i = i + 2; // 将变量i和2相加,再赋值给变量i    
	System.out.println(i);    
	// +=: 赋值运算符, 将=左边的变量和=右边的值进行操作,再赋值给变量    
	int j = 10;    
	j += 5; // j = j + 5    
	System.out.println(j);    
	   
	int m = 10;    
	m ‐= 5; // m = m ‐ 5;    
	System.out.println(m);    
	System.out.println("‐‐‐‐‐‐‐‐‐‐");    
	byte b = 1;    
	// b = b + 2; // 错误: 不兼容的类型: 从int转换到byte可能会有损失    
	// b += 2; // 可以    
	b = (byte)(b + 2);    
	System.out.println(b);    
}

3. 比较运算符

比较运算符又叫关系运算符,是两个数据之间进行比较的运算,运算结果都是布尔值 true 或者 false 。
**比较运算符包括: **

符号表示
==比较符号两边数据是否相等,相等结果是true。
<比较符号左边的数据是否小于右边的数据,如果小于结果是true。
>比较符号左边的数据是否大于右边的数据,如果大于结果是true。
<=比较符号左边的数据是否小于或者等于右边的数据,如果小于或等于结果是true。
>=比较符号左边的数据是否大于或者等于右边的数据,如果小于或等于结果是true。
!=不等于符号 ,如果符号两边的数据不相等,结果是true。
public static void main(String[] args) {
	System.out.println(3==3); // true    
	System.out.println(3==4); // false    
	System.out.println(3!=4); // true    
	System.out.println(3>4); // false    
	System.out.println(3<4); // true    
	System.out.println(5<=4); // false    
	System.out.println(4>=4); // true    
	// 注意    
	int i = 3;    
	int j = 4;    
	System.out.println(i=j); // 将j赋值给i,输出i    
	System.out.println(i==j); // true    
}

4. 逻辑运算符

逻辑运算符,是用来对两个布尔类型进行运算的,运算结果都是布尔值 true 或者 false
逻辑运算符包括:
在这里插入图片描述
与‘’&'、或'|'、 非'!'、 异或'^' 案例代码

public static void main(String[] args) {
	// & 与: 有false则false, 要求很高 房 & 车
	System.out.println(false & false); // false
	System.out.println(false & true); // false
	System.out.println(true & false); // false
	System.out.println(true & true); // true
	System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
	
	// | 或: 有true则ture, 要求不是很高 房 | 车, 有房或车就可
	System.out.println(false | false); // false
	System.out.println(false | true); // true
	System.out.println(true | false); // true
	System.out.println(true | true); // true
	System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
	
	// ! 非: 取反
	System.out.println(!true); // false
	System.out.println(!false); // true
	System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
	
	// ^ 异或: 相同为false,不同为true, 同性不能领结婚证,异性才能领结婚证
	System.out.println(false ^ false); // false
	System.out.println(false ^ true); // true
	System.out.println(true ^ false); // true
	System.out.println(true ^ true); // false
}

短路与'&&'、短路或'||' 案例代码

public static void main(String[] args) {
	// &&和&结果一样,左边是false右边不执行    
	System.out.println(false && false); // false    
	System.out.println(false && true); // false    
	System.out.println(true && false); // false    
	System.out.println(true && true); // true 
	System.out.println("‐‐‐‐‐‐‐‐‐‐‐");    
	
	// ||和|结果一样,左边是true右边不执行    
	System.out.println(false || false); // false    
	System.out.println(false || true); // true    
	System.out.println(true || false); // true    
	System.out.println(true || true); // true   
	 
	int i = 3;    
	int j = 4;    
	System.out.println(i == j && ++i > 2);    
	System.out.println(i); // 3    
	System.out.println(j); // 4    
	System.out.println(i != j || ++i > 2);    
	System.out.println(i); // 3    
	System.out.println(j); // 4    
}

5. 三元运算符

三元运算符格式
数据类型 变量名 = 布尔类型表达式?结果1:结果2;
在这里插入图片描述
三元运算符计算方式:
布尔类型表达式结果是true,三元运算符整体结果为结果1,赋值给变量。
布尔类型表达式结果是false,三元运算符整体结果为结果2,赋值给变量。

public static void main(String[] args) {
    int a = 30;
    int b = 20;
    int c = a > b ? 100 : 20;
    System.out.println(c);
}

总结

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.

public static void main(String[] args){
  byte b1=1;
  byte b2=2;
  byte b3=1 + 2;
  byte b4=b1 + b2;
  System.out.println(b3);
  System.out.println(b4);
}

分析:

  1. b3 = 1 + 2 , 1 和 2 是常量,为固定不变的数据,在编译的时候(编译器javac),已经确定了 1+2 的结果并没有超过byte类型的取值范围,可以赋值给变量 b3 ,因此 b3=1 + 2 是正确的。
  2. 反之, b4 = b2 + b3 , b2 和 b3 是变量,变量的值是可能变化的,在编译的时候,编译器javac不确定b2+b3的结果是什么,因此会将结果以int类型进行处理,所以int类型不能赋值给byte类型,因此编译失败。
    在java中,运算符大致就是这些了,及时总结起来,方便以后回顾复习。

如何获取一个3位数的个位、十位、百位呢?

提示:可以使用求余的方法

Java要学的知识太多了,只有一步一步慢慢的丰富自己,成长自己。

end

谢谢您的阅读!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值