运算符

  • 1、算数运算符
  • 2、比较运算符(条件运算符
  • 3、逻辑运算符
  • 4、赋值运算符
  • 5、3元运算符
  • 6、位运算符(了解)


1、算数运算符

+、-、、/、%、++、–
说明:
1.同类型数据参与运算,返回同类型的结果
2.如果类型不同,需要类型转换
3.byte、short、char参与运算,会先转成int再计算
4.运算的时候,Java不会检查溢出,需要注意
5.运算的时候,要保证类型一致
6.如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。 但被模数是负数则不可忽略。此外,取模运算的结 果不一定总是整数。
7.对于除号“/”,它的整数除和小数除是区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。 例如: int x=3510;x=x/1000
1000; x的结果是?
8.“+”除了作为正号、加法运算符之外,它还可以作为连接符
9.++、–可以放在变量的前面,也可以放在变量的后面,但是在前在后是不一样的
在前,先赋值(算++,–,将值给表达式),后参与其他运算
在后,先参与其它运算,后赋值

package com.xms.basic.day01;

//算术运算符
public class Demo07 {
	public static void main(String[] args) {
		int a = 5;
		int b = 2; 
		// /(取整,商)
		System.out.println(a/b);
		// %(取模,余数)
		System.out.println(a%b);
		
		//除数和被除数都是整数或者都是负数的时候结果为正数,否者结果为负数
		System.out.println(5/2);//1
		System.out.println(-5/2);//-1
		System.out.println(5/-2);//1
		System.out.println(-5/-2);//-1
		
		//被模数如果有负数,结果就为负数
		System.out.println(5%2);//1
		System.out.println(-5%2);//-1
		System.out.println(5%-2);//1
		System.out.println(-5%-2);//-1
		
		
		System.out.println(1%3);//1
		System.out.println(2%3);//2
		System.out.println(3%3);//0
		System.out.println(4%3);//1
		System.out.println(5%3);//2
		System.out.println(6%3);//0
		
		
		System.out.println("--------------------------------------");
		
		/*
		 * ++(自增+1) --(自减-1)
		 * 1)++可以放在变量的前面,也可以放在后面
		 * 2)如果++单独出现,在前或在后无所谓
		 * 3)如果++参与了其他操作
		 *  在前,先执行++操作,后执行其他操作
		 *  在后,先执行其他操作,后执行++操作
		 */
		
		int i = 10;
		i++;
		System.out.println(i);
		++i;
		System.out.println(i);
		
		
		int j = 10;
		System.out.println(++j);//11
		System.out.println(j);//11
		j = 10;
		System.out.println(j++);//10
		System.out.println(j);//11
		System.out.println("-------------------------------------");
		int k = 10;
		int l = ++k + 2;
		System.out.println(k);//11
		System.out.println(l);//12
		
		k = 10;
		l = k++ + 2;
		System.out.println(k);//11
		System.out.println(l);//12
		
		System.out.println("-------------------------------------");
		int m = 10;

		m = m++;//=优先级最低(当=执行完后,表达式就不应该执行其他操作)
//		int temp = m;
//		m = m+1;
//		m = temp;
		
		System.out.println(m);
		m = 10;
		m = ++m;
		System.out.println(m);
		
		System.out.println("-------------------------------------");
		
		int x = 5;
		int y = x++ + ++x - --x - x++ + --x + x-- + ++x  - x-- + x--;
		//      5   +   7 -   6 - 6   +   6 + 6   +   6  - 6   + 5
		System.out.println(x);
		System.out.println(y);
		
	}
}
package com.xms.basic.day02;

/*
 * +的用法
 * 1)正号
 * 2)加号
 * 3)连接符
 * 当+边上存在字符串的时候,+用作连接符,链接操作后,会生成新的字符串
 */
public class OperatorDemo01 {
	public static void main(String[] args) {
		System.out.println("hello"+100);//"hello100"
		System.out.println('a'+1+"2");//"982"
		System.out.println('1'+2+3);//54
		System.out.println("1"+2+3);//"123"
		System.out.println(1+"2"+'3');//"123"
	}
}

2、比较运算符(条件运算符

、>=、<、<=、==、!= instanceof
说明:
结果只能为boolean
< >= <= :只能使用在数值类型的数据之间。
== 和 !=: 不仅可以使用在数值类型数据之间,还可以使用在其他引用类型变量之间。

package com.xms.basic.day02;

/*
 * 2、比较运算符(条件运算符
 * >、>=、<、<=、==、!= instanceof
 * 说明:
 * 结果只能为boolean
 * >  <  >=  <= :只能使用在数值类型的数据之间。
 * == 和 !=: 不仅可以使用在数值类型数据之间,还可以使用在其他引用类型变量之间。
 */
public class OperatorDemo02 {
	public static void main(String[] args) {
		System.out.println(10>5);//
		System.out.println(10>=5);//
		System.out.println(10<5);//
		System.out.println(10<=5);//
		System.out.println(10<=10);//
		System.out.println(10<=10);//
		System.out.println(10==5);//
		System.out.println(10!=5);//
//		true
//		true
//		false
//		false
//		true
//		true
//		false
//		true
	}
}

3、逻辑运算符

1非短路运算符
&:所条件都成立,结果才为true;只要1个条件不成立,结果就为false
|:只要1个条件成立,结果就为true;所的条件都不成立,结果才为false
2短路运算符
&&:如果前面的条件为false,后面的操作不需要执行
||:如果前面的条件为true,后面的操作不需要执行
3非运算
!(非true即false,非false即true
4异或
^:相同为false,相异为true

package com.xms.basic.day02;

/*
 *3、逻辑运算符
 *1非短路运算符
 *	&:所条件都成立,结果才为true;只要1个条件不成立,结果就为false
 *	|:只要1个条件成立,结果就为true;所的条件都不成立,结果才为false
 *2短路运算符
 *	&&:如果前面的条件为false,后面的操作不需要执行
 *	||:如果前面的条件为true,后面的操作不需要执行
 *3非运算
 *!(非true即false,非false即true
 *4异或
 *^:相同为false,相异为true
 *&和
 */
package com.xms.basic.day02;

/*
 *3、逻辑运算符
 *1非短路运算符
 *	&:所条件都成立,结果才为true;只要1个条件不成立,结果就为false
 *	|:只要1个条件成立,结果就为true;所的条件都不成立,结果才为false
 *2短路运算符
 *	&&:如果前面的条件为false,后面的操作不需要执行
 *	||:如果前面的条件为true,后面的操作不需要执行
 *3非运算
 *!(非true即false,非false即true
 *4异或
 *^:相同为false,相异为true
 *&和
 */
public class OperatorDemo03 {
	public static void main(String[] args) {
		//单与
		System.out.println(10>5&10==10);//t
		System.out.println(10<5&10==10);//f
		//双与
		System.out.println(10>5&&10==10);//t
		System.out.println(10<5&&10==10);//f
		//单或
		System.out.println(10>5|10==10);//t
		System.out.println(10<5|10==10);//t
		//双或
		System.out.println(10>5||10==10);//t
		System.out.println(10<5||10==10);//t
		//非
		System.out.println(!true);//f
		System.out.println(!(10!=10));//t
		
		//异或,相异为真
		System.out.println(10>5^10==10);//f
		System.out.println(10<5^10!=10);//f
		System.out.println(10>5^10!=10);//t
		System.out.println(10<5^10==10);//t
	}
}

4、赋值运算符

单赋值= 复合赋值+=、-=、*=、/=、%=
说明:
运算的结果不会改变变量本身的数据类型
开发中,如果希望变量实现+2的操作,几种方法?
方式一:num = num + 2;方式二:num += 2; (推荐)
开发中,如果希望变量实现+1的操作,几种方法?
方式一:num = num + 1;方式二:num += 1; 方式:num++; (推荐)

package com.xms.basic.day02;

/*
4、赋值运算符
单赋值=	复合赋值+=、-=、*=、/=、%=
说明:
运算的结果不会改变变量本身的数据类型
开发中,如果希望变量实现+2的操作,几种方法?
方式一:num = num + 2;方式二:num += 2; (推荐)
开发中,如果希望变量实现+1的操作,几种方法?
方式一:num = num + 1;方式二:num += 1; 方式:num++; (推荐)
 */
public class OperatorDemo04 {
	public static void main(String[] args) {
		//将1赋值给变量a
		int a = 1;
		
		a += 5;//相当于a = a + 5;//6
		
		a -= 3;//-2
		a *= 4;//12
		a /= 2;//6
		a %= 3;//0
		
		System.out.println("a = "+ a);
		
		short sh = 3;
		sh += 2;//复合赋值运算隐含了强制类型转换,如果需要的话
		System.out.println(sh);//5
		
		short sh2 = 3;
		sh2 += 2;
		System.out.println(sh);//5	
	}
}

5、3元运算符

java中要输出特殊字符怎么办_开发语言


说明:

表达式1和表达式2要是同类型

3元运算符可以嵌套使用

凡是使用3元运算符的地方,都可以改写为if-else;反之,不成立。

如果程序既可以使用3元运算符,又可以使用if-else,优先择3元运算符。原因:简洁、执行效率高。

package com.xms.basic.day02;

import java.util.Scanner;

/*
5、3元运算符
说明:
表达式1和表达式2要是同类型
3元运算符可以嵌套使用
凡是使用3元运算符的地方,都可以改写为if-else;反之,不成立。
如果程序既可以使用3元运算符,又可以使用if-else,优先择3元运算符。原因:简洁、执行效率高。
 */
public class OperatorDemo05 {
	public static void main(String[] args) {
		int a = 1;
		int b = 2;
		int c = a>b? a+1:b+1;
		System.out.println(c);
		System.out.println("------------------------------");
		//录入三个整数,输出其中的最大值
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入三个整数!");
		int n1 = sc.nextInt();
		int n2 = sc.nextInt();
		int n3 = sc.nextInt();
		//获取n1和n2中的最大值temp
		int temp = n1>n2?n1:n2;
		//temp和n3进行比较
		int max = temp>n3?temp:n3;
		System.out.println(max);
		
		max = n1>n2?(n1>n3?n1:n3):(n2>n3?n2:n3);
		System.out.println(max);
	}
}

6、位运算符(了解)

前提:需要将数转成对应2进制数
<<左移:向左边移动指定的距离

符号右移:如果最高位是1,前面补1;如果最高位是0,前面补0

无符号右移:前面都是补0
&位与:每一位都需要进行&运算,两个都为1,结果才为1
|位或:每一位都需要进行|运算,只要1个为1,结果就为1
^异或:只一个为0,一个为1,结果才是1
~取反:位取反