java基础05

java提供如下运算符来操作变量

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

算术运算符中+,-,*,/,%属于二元运算符

二元运算符指的是需要两个操作数才能完成运算的运算符。

其中的%是取模运算符,就是我们常说的求余数操作。

二元运算符的运算规则:

整数运算:

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

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

public class ch1 {
	public static void main(String[] args) {
		byte a=1;
		int b=2;
		//byte c=a+b; //报错,a+b结果是int类型,不能赋给byte类型
		long b2=3;
		//int c2=b2+b; //报错,b2+b是long类型,不能赋给int
    }
}

浮点运算:

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

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

public class ch1 {
	public static void main(String[] args) {
        int b=2;
        long b2=3;
		float f1=3.14; //报错,3.14是double型,不能赋给float型,可以在3.14后面加F边城float型
		double d=b+b2; //正确,double类型优先级大。
		float d2=f1+6.2; //报错,f1是float型,6.2是double型
    }
}

取模运算:

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

 public class ch1 {
	public static void main(String[] args) {       
        System.out.println(7%3);
		System.out.println(-7%3);
		System.out.println(7%-3);
    }
}

算术运算符中++,--属于一元运算符

该类运算符只需要一个操作数

public class ch1 {
	public static void main(String[] args) {
        //测试自增自减
		int a = 3;
		int b = a++;   //a=3,下一步,a赋给b后,b=3,然后a自增,a=4
		System.out.println("a=" + a + "b=" + b);//最终输出
		a = 3;
		b = ++a;   //a=3,下一步,a先自增,a=4,然后再赋给b,b=4
		System.out.println("a="+a+"b="+b);
    }
}

  •  赋值运算符

比较简单,可以自己稍微训练一下。

运算符用法举例等效的表达式
+=a += ba = a+b
-=a -= ba = a-b
*=a *= ba = a*b
/=a /= ba = a/b
%=a %= ba = a%b
public class ch2 {
	public static void main(String[] args) {
		int a=3;//把3赋给变量a
		int b=4;
		a+=b;//相当于a=a+b;
		System.out.println("a="+a+"\nb="+b);
		a=3;
		a*=b+3;//相当于a=a*(b+3)
		System.out.println("a="+a+"\nb="+b);
        
	}
}

  •  关系运算符

关系运算的结果是布尔值: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 ch2 {
	public static void main(String[] args) {
        System.out.println(a==3);
		System.out.println(a!=3);
		System.out.println(a<5);
		char m ='t';
		char m2='g';
		System.out.println((int)m);//将m强制转化为int类型
		System.out.println((int)m2);
		System.out.println(m<m2);//char将m,m2都转化为ascll码,最后比较大小
	}
}

  •  逻辑运算符

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

运算符说明
逻辑与&( 与)两个操作数为true,结果才是true,否则是false
逻辑或|(或)两个操作数有一个是true,结果就是true
短路与&&( 与)只要有一个为false,则直接返回false
短路或||(或)只要有一个为true, 则直接返回true
逻辑非!(非)取反:!false为true,!true为false
逻辑异或^(异或)相同为false,不同为true
操作值操作值结果
truetruetrue
truefalsefalse
falsefalsefalse
truetruetrue
truefalsetrue
falsefalsefalse

练习:逻辑 与或非

package day5;
/**
*@author 作者:wh
*@email 邮箱:
*@version 创建时间:
*@description 描述:逻辑运算符
*/
public class ch3 {
	public static void main(String[] args) {
		boolean b1=true;
		boolean b2=false;
		System.out.println(b1&b2);
		System.out.println(b1|b2);
		System.out.println(b1^b2);
		System.out.println(!b2);
		
	}
    
}

 练习:短路与或

//短路 与或 练习
		//int c=3/0;//报异常,分母不能为0
		boolean b3= 1>2 && 2<(3/0);//&&是短路与,第一个操作与为false,则不会再计算后面操作数
		System.out.println(b3);

 上面int c=3/0,报错会显示如下内容: 

  •  位运算符

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

位运算符说明
~取反
&按位与
|按位或
^按位异或
<<左移运算符,左移1位相当于乘2
>>右移运算符,右移1位相当于除2取商
package day5;
/**
*@author 作者:wh
*@email 邮箱:
*@version 创建时间:2021年
*@description 描述:位运算符
*/
public class ch4 {
	public static void main(String[] args) {
		int a=3;
		int b=4;
		System.out.println(a&b);
		System.out.println(a|b);
		System.out.println(a^b);
		System.out.println(~a);
		
	}

}

 左移右移运算符:

package day5;
/**
*@author 作者:wh
*@email 邮箱:
*@version 创建时间:2021年
*@description 描述:位运算符
*/
public class ch4 {
	public static void main(String[] args) {	
		int c=3*2*2;
		int d=3<<2;//相当于:3*2*2
		int c2=12/2/2;
		int d2=12>>2;//相当于:12/2/2;
		
		System.out.println(c);
		System.out.println(d);
		System.out.println(c2);
		System.out.println(d2);
	}
}

 注意& 和 | 既是逻辑运算符,也是位运算符。如果两侧操作数都是boolean类型,就作为逻辑运算符。如果两侧的操作数是整数类型,就是位运算符。

2. 不要把“^”当做数学运算“乘方”,是“位的异或”操作。

  • 字符串连接符

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

public class ch4 {
	public static void main(String[] args) {
        //字符串连接符
		String m="3";//这是字符串
		int n=4;
		int t=5;
		System.out.println(m+n);//自动转为字符串连接
		System.out.println(m+t);
		System.out.println(n+t);
		System.out.println(m+n+t);//按从左到右顺序运算
		System.out.println(n+t+m);
		char h='a';  //这是字符
		System.out.println(h);//直接输出字符
		System.out.println(h+4);//加4的话h要变为ascll码进行运算
	}
}

  •  条件运算符

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

public class ch4 {
	public static void main(String[] args) {
        //条件运算符
		int score=80;
		int x=-100;
		String type=score<60?"不及格":"及格";
		System.out.println(type);
		if(score<60){
			System.out.println("不及格");
		}else{
			System.out.println("及格");
		}
		System.out.println(x>0?1:(x==0?0:-1));
    }
}

  • 运算符优先级
优先级运算符结合性
1()括号运算符由左至右
2!、+(正号)、-(负号)一元运算符由左至右
2~位逻辑运算符由右至左
2++、--递增与递减运算符由右至左
3*、/、%算术运算符由左至右
4+、-算术运算符由左至右
5<<、>>位左移、右移运算符由左至右
6>、>=、<、<=关系运算符由左至右
7==、!=关系运算符由左至右
8&位运算符、逻辑运算符由左至右
9^位运算符、逻辑运算符由左至右
10|位运算符、逻辑运算符由左至右
11&&逻辑运算符由左至右
12||逻辑运算符由左至右
13? :条件运算符由右至左
14=、+=、-=、*=、/=、%=赋值运算符、扩展运算符由右至左

 *  逻辑运算符与&&   优先级大于  逻辑运算符或 ||   

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值