首页 > 其他分享 >运算符

运算符

时间:2024-08-07 09:38:51浏览次数:13  
标签:System 运算符 a2 println true out

六、运算符

算术运算符
一元运算符 ++,--
二元运算符 +,-,*,/,%
赋值运算符 =
扩展运算符 +=,-=,*=,/=
关系运算符 >,<,>=,<=,==,!=,instanceof
逻辑运算符 &&,||,!,^
位运算符 &,|,^,~,>>,<<,>>>
条件运算符 ?:
字符串连接符 +

1、算数运算符

1、一元运算符

算数运算符中++,--属于一元运算符, 该类运算符只需要一个操作数。

  • 1、无论是++还是--,每次运算量为1。

  • 2、运算符在前面++a;先运算,再赋值。

  • 3、运算符在后面a++;先赋值,再运算。

public class TestArithmeticOneOperator {
    public static void main(String[] args) {
    	int a = 2;
    	System.out.println("a="+a);		//a=2
    	int b = a++;					//先给b赋值,a再加1
    	System.out.println("a="+a);		//a=3
    	System.out.println("b="+b);		//b=2
    	int c =++a;						//a先加1,再给c赋值
    	System.out.println("a="+a);		//a=4
    	System.out.println("c="+c);		//c=4
    	int d =--a;						//a先减1,再给d赋值
    	System.out.println("a="+a);		//a=3
    	System.out.println("d="+d);		//d=3
    }
}

结果

a=2
a=3
b=2
a=4
c=4
a=3
d=3
2、二元运算符

算数运算符中+,-,*,/,%属于二元运算符, 二元运算符指的是需要两个操作数才能完成运算的运算符,其中%是取模运算符,就是我们常说的求余数操作。

二元运算符的运算规则

整数运算:

1、如果两个操作数有一个为long,则结果也为long.

2、没有long时,结果为int。即使操作数全为short,byte,结果也为int。

浮点运算:

1、如果两个操作数有一个为double,则结果为double。

2、只有两个操作数都是float,则结果为float。

取模运算:

1、其操作数可以为浮点数,一般使用整数,结果是“余数”,“余数”符号和左边操作数相同,如:10%3=1,-11%3=-2;11%-3=2

public class TestArithmeticTwoOperator {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		byte a = 'a';						//a为97
		System.out.println("a="+a);			//a为97
		short b = 2;
		System.out.println("b="+b);			//b=2
		//byte c = a+b;	//报错Type mismatch: cannot convert from int to byte,可见a+b是int类型,而不是short类型
		int c = a+b;						//97+2=99
		System.out.println("c=a+b="+c);		//c=97+2=99
		long d = 3L;
		System.out.println("d="+d);			//d=3
		//int e = a+d;	//报错Type mismatch: cannot convert from long to int,可见a+d是long类型
		long e = a+d;						//97+3=100
		System.out.println("e=a+d="+e);		//e=97+3=100
		int f = 2*++b;	//
		System.out.println("f=2*++b="+f);	//f=2*(++b)=2*3=6,b先运算为3,在*2赋值给f,此时b=3
		System.out.println("b="+b);			//b=3
		long g = 2*--d;
		System.out.println("g=2*--d="+g);	//g=2*(--d)=2*2=4,d先运算为2,在*2赋值给g,此时d=2
		System.out.println("d="+d);			//d=2
		long h = 2*d--;
		System.out.println("h=2*d--="+h);	//h=2*2=4,d先*2赋值给h,再运算--为1,此时d=d--=1
		System.out.println("d="+d);			//d=1
		System.out.println("-11%3="+-11%3);		//-11%3=-3......-2
		System.out.println("-11%-3="+-11%-3);	//-11%-3=3......-2
		System.out.println("11%-3="+11%-3);		//11%-3=-3......2
	}
 
}

结果

a=97
b=2
c=a+b=99
d=3
e=a+d=100
f=2*++b=6
b=3
g=2*--d=4
d=2
h=2*d--=4
d=1
-11%3=-2
-11%-3=-2
11%-3=2

2、赋值运算符

int a = 3;int b = a;相当于把3赋值给a,把a的值赋给b;

3、扩展运算符

扩展运算符
运算符 用法举例 等效的表达式
+= a+=b a=a+b
-= a-=b a=a-b
*= a*=b a=a*b
/= a/=b a=a/b
%= a%=b a=a%b
public class TestExtendedOperator {
public static void main(String[] args) {
	int a = 1;
	int b = 2;
	a+=b;							//a=a+b=1+2=3
	System.out.println("a="+a);
	a-=b;							//a=a-b=3-2=1
	System.out.println("a="+a);
	a*=b;							//a=a*b=1*2=2
	System.out.println("a="+a);
	a/=b;							//a=a/b=2/2=1
	System.out.println("a="+a);
	a%=b;							//a=a%b=1%2=0......1
	System.out.println("a="+a);
	a*=b+1;							//a=a*(b+1)=1*(2+1)=3
	System.out.println("a="+a);
	a*=++b;							//a=a*(++b)=3*3=9,b=3
	System.out.println("a="+a);
	System.out.println("b="+b);
	a*=b--;	
	System.out.println("a="+a);		//a=a*b=9*3=27,b=b--=2
	System.out.println("b="+b);		//b=b--=2
	a*=b++;							//a=a*b=27*2=54,b=b++=3
	System.out.println("a="+a);
	System.out.println("b="+b);		//b=b++=3
}
}
a=3
a=1
a=2
a=1
a=1
a=3
a=9
b=3
a=27
b=2
a=54
b=3

4、关系运算符

关系运算符用来比较运算,且运算的结果是布尔值:true/false

  		| 运算符 | 含义         | 示例 |
  		| ------ | ------------ | ---- |
  		| ==     | 等于         | a==b |
  		| !=     | 不等于       | a!=b |
  		| >      | 大于         | a>b  |
  		| <      | 小于         | a<b  |
  		| >=     | 大于或者等于 | a>=b |
  		| <=     | 小于或者等于 | a<=b |
注意事项:
1、=是赋值运算符,而真正的判断两个操作数是否相等的运算符是==。
2、==、!=是所有(基本和引用)数据类型都有可以使用。
3、>、>=、<、<=仅针对数值类型(byte、short、int、long、float、double。以及char)。
public class TestRelationalOperator {
public static void main(String[] args) {
	char a = 'a';
	short b = 97;
	int c = 98;
	float d = 97.1f;
	if(b==a){
		System.out.println("b==a");
	}
	if(c>=a){
		System.out.println("c>=a");
	}
	if(a<=d){
		System.out.println("a<=d");
	}
}

}
结果
b==a
c>=a
a<=d

5、逻辑运算符

逻辑运算的操作数和运算结果都是 boolean值。

逻辑运算符
运算符 说明
逻辑与 &(与) 两个操作数位true,结果才是true,否则是false
逻辑或 |(或) 两个操作数有一个true,结果就是true
短路与 &&(与) 只要有一个为false,则直接返回false
短路或 ||(或) 只要有一个为true,则直接返回true
逻辑非 !(非) 取反:!false为true,!true为false
逻辑异或 ^(异或) 相同为false,不同为true
public class TestLogicalOperator {	
public static void main(String[] args) {
boolean a1 = true;
boolean a2 = false;
int b1 = 2;
int b2 = 2;
System.out.println("a1&a2="+(a1&a2));			//false,a2为false,所以为fasle
System.out.println("a1|a2="+(a1|a2));			//true,a1为true,所以为true
System.out.println("a1&&a2="+(a1&&a2));			//false,a2为false,所以为fasle
System.out.println("a1||a2="+(a1||a2));			//true,a1为true,所以为true
System.out.println("!a1="+(!a1));				//false,a1为true,所以!a1为false
System.out.println("a1^a2="+(a1^a2));			//true,不一样,为true
System.out.println("a2^a2="+(a2^a2));			//false,一样,为fasle
System.out.println("a1&b1++==3="+(a1&++b1==3));	//true,a1为true,并且++b1此时为3,3==3位true,所以为true
System.out.println("b1="+b1);					//b1=3
System.out.println("a2&&b2++==3="+(a2&&++b2==3));//false,a2为fasle,此时结果为fasle,后面的不在判断,所以b2还是2
System.out.println("b2="+b2);					//b2=2
}
}

结果

a1&a2=false
a1|a2=true
a1&&a2=false
a1||a2=true
!a1=false
a1^a2=true
a2^a2=false
a1&b1++==3=true
b1=3
a2&&b2++==3=false
b2=2

6、位运算符

位运算指的是进行二进制位的运算

image-20240728220225356-1722566703220-25

public class TestBitwiseOperators {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int a = 3;								//(前面28个0)0011=3
		int b = 4;								//(前面28个0)0100=4
		int c = 0b11111111111111111111111111111011;
		System.out.println("~a="+~a);			//(前面28个1)1100=-4,涉及符号位
		System.out.println("~b="+~b);			//(前面28个1)1011=-5,涉及符号位
		System.out.println("c="+c);				//-5,涉及符号位
		System.out.println("a&b="+(a&b));		//(前面28个0)0000=0
		System.out.println("a|b="+(a|b));		//(前面28个0)0111=7
		System.out.println("a^b="+(a^b));		//(前面28个0)0111=7
		System.out.println("a>>1="+(a>>1));		//(前面28个0)0011>>1=(前面28个0)0001=1
		System.out.println("b<<2="+(b<<2));		//(前面28个0)0100<<2=(前面27个0)0000=16
	}
 
}

结果

~a=-4
~b=-5
c=-5
a&b=0
a|b=7
a^b=7
a>>1=1
b<<2=16

7、条件运算符

语法格式:x?y:z

其中x为boolean类型表达式,先计算x的值,若为true,则整个运算的结果为表达式y的值,否则,整个运算的结果为表达式z的值。

public class TestConditionalOperation {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int a = 0;
		int a2 = 2;
		String string1 = a>0?"大于0":a==0?"等于0":"小于0";
		String string2 = a2%2==0?"偶数":"奇数";
		System.out.println(string1);		//等于0
		System.out.println(string2);		//偶数
	}
 
}
等于0
偶数

8、字符串连接符

"+"运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。

public class TestStringConnector {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String a = "3";
		int b = 4;
		int c = 5;
		System.out.print("a+b+c=");
		System.out.println(a+b+c);		//a+b+c="3"+4+5="34"+5="345"
		System.out.print("b+c+a=");
		System.out.print(b+c+a);		//b+c+a=4+5+"3"=9+"3"="93"
	}
 
}
a+b+c=345
b+c+a=93

标签:System,运算符,a2,println,true,out
From: https://www.cnblogs.com/yunsheng22/p/18346418

相关文章

  • 位运算符
    1.与(&)2.或(|)3.亦或(^)4.非(~)5.关于位运算的面试题问:如何用电脑将2乘8最快算出?6.左移右移的底层原理......
  • 逻辑运算符
    1.与(&&)两个变量必须一致(都是true),否则否则输出的就是false2.或(||)我或者你,其中一个变量是true,那么输出的值就一定是true3.非(!())把括号里的值进行反转,比如括号是真,则输出为假......
  • 算术运算符里的特殊运算符
    1.++(自加)给一个数加1自加分为两种,一个是++a,另一个是a++a++:先给数赋值,然后再给a加1++a:先给a加1,然后再给数赋值2.--(自减)给一个数减1......
  • 运算符
    1.算术运算符强转以后:2.算术运算符的一些默认3.逻辑运算符4.取余......
  • 运算符
    2.5运算符目录2.5运算符算术运算符自增自减运算符关系运算符位运算符逻辑运算符赋值运算符条件运算符(?:)Java运算符优先级计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组:算术运算符关系......
  • php---空合并运算符
    在做PHP开发的过程中,在引入SDK做项目开发的时候,经常会遇到一些不常见的运算符,正好自己也学习一下。运行的结果:就比如上面看到的运算符?:和??运算符和我们常见的三目运算符不同,但是也有点类似。三目运算符是这样的:$abs=!empty($list)?'a':'b';而空合并运算符?:......
  • C++__位运算符:异或运算符 ^
    目的:     了解异或运算符的定义、性质及用法。定义:    二元运算符,符号为^,与位与、位或不同的是,它在二进制中为相同为0,不同为1。而且它还满足这几种运算规则:        1、任何数^0都等于它本身;    2、两个相同的数异或结果为0;    ......
  • c++__位运算符:位与运算符&
    目的:了解位与运算符并加深对它的运用定义:一种二元运算符,符号为&,运用于二进制数中,特性为有0为0。#include<iostream>usingnamespacestd;intmain(){inta=0b1010;//10intb=0b0110;//6//a&b=0b0010;2cout<<(a&b)<<endl;}应用:1、判断奇偶性......
  • C语言运算符优先级口诀
    口诀内容(优先级自上而下递减;由逗号分隔的,优先级自左到右递减。)圆方括号,箭头句号。单目增减非反负,针强址长,从右。乘除求模,加减,位移,大小,等不等。位与异或,逻辑与或。条件赋值均右。真逗。解释(斜体字是补全;加粗字是对整行的说明;代码块即是所对应操作符。)圆括号()方括号[]......
  • C语言运算符优先级口诀
    口诀内容(优先级自上而下递减;由逗号分隔的,优先级自左到右递减。)圆方括号,箭头句号。单目增减非反负,针强址长,从右。乘除求模,加减,位移,大小,等不等。位与异或,逻辑与或。条件赋值均右。真逗。解释(斜体字是补全;加粗字是对整行的说明;代码块即是所对应操作符。)圆括号()方括号[]......