运算符(Operator)

表达式:用运算符连接起来的式子

四种运算

public class OperatorDemo01 {
public static void main(String[] args) {
int a = 3;
int b = 4;

	System.out.println(a + b);// 7
	System.out.println(a - b);// -1
	System.out.println(a * b);// 12
	System.out.println(a / b);// 计算机结果是0,为什么不是0.75呢?
	System.out.println(a % b);// 3
}

}

“+”号的两种用法
  • 第一种:对于+两边都是数值的话,+就是加法的意思

  • 第二种:对于+两边至少有一边是字符串得话,+就是拼接的意思

  • public class OperatorDemo02 {
    public static void main(String[] args) {
    // 字符串类型的变量基本使用
    // 数据类型 变量名称 = 数据值;
    String str1 = “Hello”;
    System.out.println(str1); // Hello

      System.out.println("Hello" + "World"); // HelloWorld
      
      String str2 = "Java";
      // String + int --> String
      System.out.println(str2 + 520); // Java520
      // String + int + int
      // String		+ int
      // String
      System.out.println(str2 + 5 + 20); // Java520
    

    }
    }

自加自减运算

理解:++ 运算,变量自己的值加1。反之,-- 运算,变量自己的值减少1,用法与++ 一致。

1、单独使用

  • 变量在单独运算的时候,变量前++和变量后++,变量的是一样的;
  • 变量前++ :例如 ++a
  • 变量后++ :例如 a++
  • public class OperatorDemo3 {
    public static void main(String[] args) {
    // 定义一个int类型的变量a
    int a = 3;
    //++a;
    a++;
    // 无论是变量前++还是变量后++,结果都是4
    System.out.println(a);
    }
    }

2、复合使用

  • 其他变量放在一起使用或者和输出语句放在一起使用前++后++就产生了不同。

  • 变量前++ :变量先自身加1,然后再将加1后的结果进行其他使用。

  • 变量后++ :变量先拿去使用,然后再自身加1。

public class OperatorDemo03 {
public static void main(String[] args) {
// 其他变量放在一起使用
int x = 3;
//int y = ++x; // y的值是4,x的值是4,
int y = x++; // y的值是3,x的值是4

	System.out.println(x);
	System.out.println(y);
	System.out.println("==========");
    
	// 和输出语句一起
	int z = 5;
	//System.out.println(++z);// 输出结果是6,z的值也是6
	System.out.println(z++);// 输出结果是5,z的值是6
	System.out.println(z);
    
    int a = 1;
    a = a++;//(1)先取a的值“1”放操作数栈(2)a再自增,a=2(3)再把操作数栈中的"1"赋值给a,a=1

    int i = 1;
    int j = i++ + ++i * i++;
    /*
    从左往右加载
    (1)先算i++
    ①取i的值“1”放操作数栈
    ②i再自增 i=2
    (2)再算++i
    ①i先自增 i=3
    ②再取i的值“3”放操作数栈
    (3)再算i++
    ①取i的值“3”放操作数栈
    ②i再自增 i=4
    (4)先算乘法
    用操作数栈中3 * 3 = 9,并把9压会操作数栈
    (5)再算求和
    用操作数栈中的 1 + 9 = 10
    (6)最后算赋值
    j = 10
    */
} 

}

小结:

  • ++在前,先自加,后使用;
  • ++在后,先使用,后自加。

赋值运算符

所有的赋值运算符的=左边一定是一个变量
= 将符号右边的值,赋值给左边的变量
+= 将符号**左边的值右边的值进行相加操作,
最后将结果
赋值给左边的变量**
-= 将符号**左边的值右边的值进行相乘操作,
最后将结果
赋值给左边的变量 /= 将符号**左边的值**和**右边的值**进行相除操作 最后将结果**赋值给左边的变量
%= 将符号**左边的值右边的值进行取余操作,
最后将结果
赋值给左边的变量*

public class OperatorDemo04 {
public static void main(String[] args) {
int a = 3;
int b = 4;
b += a;// 相当于 b = b + a ;
System.out.println(a); // 3
System.out.println(b); // 4
}
}

/
public class OperatorDemo04 {
public static void main(String[] args) {
int a = 3;
int b = 4;
b += a;// 相当于 b = b + a ;
System.out.println(a); // 3
System.out.println(b); // 4

	short s = 3;
	// s = s + 4; 代码编译报错,因为将int类型的结果赋值给short类型的变量s时,可能损失精度
	s += 4; // 代码没有报错
    //因为在得到int类型的结果后,JVM自动完成一步强制类型转换,将int类型强转成short
	System.out.println(s);
    
    int j = 1;
	j += ++j * j++;//相当于  j = j + (++j * j++);
	System.out.println(j);//5
}

}

扩展赋值运算符在将最后的结果赋值给左边的变量前,都做了一步强制类型转换**。**

关系运算符(比较运算符)

< 比较符号左边的数据是否小于右边的数据,如果小于结果是true。

比较符号左边的数据是否大于右边的数据,如果大于结果是true。

<=`比较符号左边的数据是否小于或者等于右边的数据,如果大于结果是false。

=`比较符号左边的数据是否大于或者等于右边的数据,如果小于结果是false。

==`比较符号两边数据是否相等,相等结果是true。

!=`不等于符号 ,如果符号两边的数据不相等,结果是true。

public class OperatorDemo05 {
public static void main(String[] args) {
int a = 3;
int b = 4;
System.out.println(a < b); // true
System.out.println(a > b); // false
System.out.println(a <= b); // true
System.out.println(a >= b); // false
System.out.println(a == b); // false
System.out.println(a != b); // true
}
}

逻辑运算符

&与,且有 falsefalse\ 或有 t ruetrue^ 异或相同为 false,不同为true
!非 非falsetrue,非truefalse&& 双与,短路与 左边为false,则右边就不看
|| 双或,短路或 左边为true,则右边就不看

public class OperatorDemo06 {
public static void main(String[] args) {
int a = 3;
int b = 4;
int c = 5;

	// & 与,且;有false则false
	System.out.println((a > b) & (a > c)); // false & false
	System.out.println((a > b) & (a < c)); // false & false
	System.out.println((a < b) & (a > c)); // true & false
	System.out.println((a < b) & (a < c)); // true & true
	System.out.println("===============");
	// | 或;有true则true
	System.out.println((a > b) | (a > c)); // false | false
	System.out.println((a > b) | (a < c)); // false | false
	System.out.println((a < b) | (a > c)); // true | false
	System.out.println((a < b) | (a < c)); // true | true
	System.out.println("===============");
	// ^ 异或;相同为false,不同为true
	System.out.println((a > b) ^ (a > c)); // false ^ false
	System.out.println((a > b) ^ (a < c)); // false ^ false
	System.out.println((a < b) ^ (a > c)); // true ^ false
	System.out.println((a < b) ^ (a < c)); // true ^ true
	System.out.println("===============");
	// ! 非;非false则true,非true则false
	System.out.println(!false);
	System.out.println(!true);
}
  • &&&`**区别:
    • &&&结果一样,&&有短路效果,左边为false,右边不执行;&左边无论是什么,右边都会执行。
  • **|||**区别:
    • |||结果一样,||有短路效果,左边为true,右边不执行;|左边无论是什么,右边都会执行。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值