6、Java基础——Java中的运算符、字符串的声明与使用、字符串的比较、运算符的优先级

目录

课前先导

一、Java运算符

1、赋值运算符(=)

 2、算数运算符

3、关系运算符(>  、 >=  、 <   、<= 、== 、!=)

4、逻辑运算符(& 、&&、 | 、|| 、^、 !)

5、条件运算符(三目运算符、三元运算符)

 6、位运算符

二、字符串的声明与使用

 三、字符串的比较(equals()方法)

四、运算符的优先级 


课前先导

今天我们来学习Java中运算符的含义和使用方法,这些都属于对数据的操作,通过前面的学习,我们知道Java中是通过变量名对数据进行操作的。

一、Java运算符

1、赋值运算符(=)

将=右边表达式的值通过=赋值给=左边的变量(从右往左看)

              变量名 = 表达式;
        表达式:符号和数据、变量名或者变量的结合体等

 2、算数运算符

算数运算符有分为基本算数运算符复合算数运算符

(1)基本算数运算符(+  、 -  、  *   、 /  、 %   、++   、--)

(+  、 -  、  *   、 /  、 % )

public static void main(String[] args){
		
		int a = 10;
		int b = 20;
		int c = 3;
		int num; //声明一个变量来接收和
		int difference; //声明一个变量来接收差
		int product;  //声明一个变量来接收积
		double merchant; //声明一个变量来接收商
		// % 取模(就是求除法的余数)
		int remainder;  //声明一个变量来接收模
		
		num = a + b;   //把a+b的值赋给num
		difference = b - a; //把b-a的值赋给difference
		product = a * b; //把a*b的值赋给product
		merchant = b / a; //把b/a的值赋给merchant
		remainder = b % c; //把b%c的值赋给remainder
		
		System.out.println(a+"+"+b+"="+num);
		System.out.println(a+"-"+b+"="+difference);
		System.out.println(a+"*"+b+"="+product);
		System.out.println(a+"/"+b+"="+merchant);
		System.out.println(b+"%"+c+"="+remainder);
		
		
		
	}

运行结果:

10+20=30
10-20=10
10*20=200
10/20=2.0
20%3=2

(++   、--)

++和--是变量的自加和自减,它可以在变量的前面,也可以在变量的后面,在不参加运算时,运算符在变量的前面或后面用法和含义相同

public static void main(String[] args){
		
		int a = 10;
		a++;
		System.out.println("a的值:"+a);
		
		int b = 20;
		++b;
		System.out.println("b的值:"+b);
		
		int c = 30;
		c--;
		System.out.println("c的值:"+c);
		
		int d = 40;
		--d;
		System.out.println("d的值:"+d);
		
		
	}

运行结果

a的值:11
b的值:21
c的值:29
d的值:39

当自增或自减的变量参加运算时,++和--在变量名前面要先自加和自减在参加运算,++和--在变量名后面,要先参加运算,等运算结束,再自加或自减

(2)复合算数运算符(+=  、 -= 、  *=   、 /=  、 %=   )

public static void main(String[] args){
		
		int a = 10;
		a += 5;  //相当于 a = a+5
		System.out.println("a = "+a);
		
		int b = 20;
		b -= 5;  //相当于  b = b-5
		System.out.println("b = "+b);
		
		int c = 30;
		c *= 2;  //相当于 c = c*2
		System.out.println("c = "+c);
		
		int d = 40;
		d /= 2;  //相当于  d = d/2
		System.out.println("d = "+d);
		
		int x = 50;
		x %= 7;  //相当于  x = x%7
		System.out.println("x = "+x);
		
		
		
		
	}

运行结果

a = 15
b = 15
c = 60
d = 20
x = 1

3、关系运算符(>  、 >=  、 <   、<= 、== 、!=)

关系运算符用于常量或变量之间的比较,返回结果是一个布尔值true或false,所以关系运算符常出现在判断语句中

public static void main(String[] args){
		
		int a = 15;
		int b = 30;
		boolean result; //用来接收关系运算的返回值
		
		result = a>b;
		System.out.println("a>b: "+result);
		
		result = b>=a;
		System.out.println("b>=a: "+result);
		
		result = a<b;
		System.out.println("a<b: "+result);
		
		result = a<=b;
		System.out.println("a<=b: "+result);
		
		// == 用来判断变量或常量是否相等
		result = a==b;
		System.out.println("a==b: "+result);
		
		// != 不相等返回true,相等返回flase
		result = a!=b;
		System.out.println("a!=b: "+result);
	}

运行结果

a>b: false
b>=a: true
a<b: true
a<=b: true
a==b: false
a!=b: true

4、逻辑运算符(& 、&&、 | 、|| 、^、 !)

Java中共有6个逻辑运算符,分别是&(逻辑与)、|(逻辑或)、^(逻辑异或)、!(逻辑反、逻辑非)、&&(短路与)、||(短路或)

逻辑运算符用于对两个布尔型操作数进行运算,其结果还是布尔值。

所以我们逻辑运算符的两边的式子返回值必须是布尔类型;逻辑运算符两边的式子一般是用关系运算符判断的式子。

& 和 &&(逻辑与和短路与)

&和&&的区别:当 && 的左侧为false时,将不会计算其右侧的表达式,即左false则false;无论任何情况,& 两侧的表达式都会参与计算。

public static void main(String[] args){
		
		int a = 10;
		int b = 15;
		int c = 20;
		boolean result; //用来接收逻辑运算符的返回值
		
		// & 两边的表达式都执行
		//只要有一边的返回值是false;那么返回值就是false
		//两边的返回值都是true时,返回值才是true
		result = a>b & a<b;
		System.out.println("& 一边为false一边为true返回:"+result);
		result = a<b & a>c;
		System.out.println("& 一边为true一边为false返回:"+result);
		result = a>b & a>c;
		System.out.println("& 两边同为false返回:"+result);
		result = a<b & a<c;
		System.out.println("& 两边同为true返回:"+result);
		
		System.out.println("********************************************************");
		
		// && 当左侧的表达式为false时,右侧的表达式就不参加计算(短路)
		//左边的返回值是false;那么返回值就是false
		//两边的返回值都是true时,返回值才是true
		result = a>b && a<b;
		System.out.println("&& 左边为false返回:"+result);
		result = a<b && a>c;
		System.out.println("&& 一边为true一边为false返回:"+result);
		result = a>b && a>c;
		System.out.println("&& 两边同为false,只会计算左侧的表达式,返回:"+result);
		result = a<b && a<c;
		System.out.println("&& 两边同为true返回:"+result);
	}

运行结果

& 一边为false一边为true返回:false
& 一边为true一边为false返回:false
& 两边同为false返回:false
& 两边同为true返回:true
********************************************************
&& 左边为false返回:false
&& 一边为true一边为false返回:false
&& 两边同为false,只会计算左侧的表达式,返回:false
&& 两边同为true返回:true

| 和 ||(逻辑或和短路或)

| 和 || 的区别:当||的左侧为true时,将不会计算其右侧的表达式,即左true则true;无论任何情况, | 两侧的表达式都会参与计算。

public static void main(String[] args){
		
		int a = 10;
		int b = 15;
		int c = 20;
		boolean result; //用来接收逻辑运算符的返回值
		
		// | 两边的表达式都执行
		//只要有一边的返回值是true;那么返回值就是true
		//两边的返回值都是false时,返回值才是false
		result = a>b | a<b;
		System.out.println("| 一边为false一边为true返回:"+result);
		result = a<b | a>c;
		System.out.println("| 一边为true一边为false返回:"+result);
		result = a>b | a>c;
		System.out.println("| 两边同为false返回:"+result);
		result = a<b | a<c;
		System.out.println("| 两边同为true返回:"+result);
		
		System.out.println("********************************************************");
		
		// || 当左侧的表达式为true时,右侧的表达式就不参加计算(短路)
		//左边的返回值是true;那么返回值就是true
		//两边的返回值都是false时,返回值才是false
		result = a>b || a<b;
		System.out.println("|| 左边为false右边为true返回:"+result);
		result = a<b || a>c;
		System.out.println("|| 左边为true右边不参加计算;返回:"+result);
		result = a>b || a>c;
		System.out.println("|| 两边同为false返回:"+result);
		result = a<b || a<c;
		System.out.println("|| 两边同为true返回:"+result);
	}

}

 运行结果

| 一边为false一边为true返回:true
| 一边为true一边为false返回:true
| 两边同为false返回:false
| 两边同为true返回:true
********************************************************
|| 左边为false右边为true返回:true
|| 左边为true右边不参加计算;返回:true
|| 两边同为false返回:false
|| 两边同为true返回:true

^ (逻辑异或)

Java中异或是以二进制数据为基础进行运算的,当代码中使用到异或运算时,会先将两个条件先转换为二进制,再进行运算;

运算规则:两个二进制操作数的同位,如果值相同(都是0或1)则为0,值不相同(一个为1一个为0)则为1。

! (逻辑非)

就是取反的意思,true变成false,false变成true

 其实那么多的逻辑运算符,我们用的最多的就三个,一般用在判断语句中:

短路与&&:就是“且”的意思,(a>0 && a<10)意思是:a大于0且小于10,数学表达式:0<a<10;

短路或||:就是“或”的意思,(a<0 || a>10)意思是:a小于0或a大于10,数学表达式:a<0 或 a>10;

逻辑非!:表达式返回的值必须是布尔类型,然后布尔值取反。

5、条件运算符(三目运算符、三元运算符)

(1)条件运算符是Java中唯一的需要3个操作数的运算符。
(2)语法格式:
                    条件?表达式1:表达式2;

(3)运算规律:
                    首先对条件进行判断,如果其值为true,则返回表达式1的值;如果条件值为false,则返回表达式2的值。
(4)条件运算符的嵌套
                    条件?(条件?表达式1:表达式2):(条件?表达式1:表达式2);

public static void main(String[] args){
		int a = 10;
		int b; //用来接收条件运算的返回值.
		int c = 40;
		int d = 50;
		
		//条件表达式的返回值一定要是布尔型;
		//true返回第一个表达式,false返回第二个表达式;
		b = (a == 10)?20:30;
		System.out.println("b的值为:"+b);
		
		System.out.println("*****************************************");
		
		//条件运算符的嵌套
		b = (a != 10)?((c == 40)?10:20):((d != 50)?70:80);
		System.out.println("b的值为:"+b);
		
	}

这个条件运算符的嵌套看起来有点乱,但程序就是一步一步看的,我个人感觉编程也是一步一步来的,做完这一步再做下一步,实现这一个功能再实现下一个功能,我们来一步一步看一下这个条件运算符的嵌套:

首先,条件表达式(a != 10)的返回值是false,所以会运行第二个表达式;表达式中(d != 50)的返回值是false,所以会运行第二个表达式80,那么b的值就是80!

也可以从后往前看

第一个表达式(c == 40)?10:20的返回值是10;第二个表达式(d != 50)?70:80的返回值是80;条件表达式(a != 10)的返回值是false,会运行第二个表达式,第二个表达式是80!

 6、位运算符

位运算符在Java中用的不多,我们稍微了解一下

(1)位运算符对操作数以二进制为单位进行运算。会先将操作数先转换为二进制,再进行运算;

(2)使用位运算符执行效率高。

(3)位运算符的操作数是整型数,包括int、short、long、byte和char。

(4)位运算符的运算结果也是整型数,包括int、long。

(5)如果操作数是char、byte、short,位运算前其值会自动晋升为int,运算结果也为int。

(6)一个整数每向左移动1位,其值扩大2倍,前提是移出位数不包含有效数字。(<<)

(7)一个整数每向右移动1位,其值缩小2倍,前提是溢出位中不包含有效数字。(>>、>>>)

public static void main(String[] args){
		
		int a = 15; //二进制为1111
		int b = 3; //二进制为11
		int result; //用来接收位运算的返回值

		
		result = a&b;//按位与后二进制操作数为0011
		System.out.println("a&b的值为:"+result);
		
		result = a|b; //按位或后二进制操作数为1111
		System.out.println("a|b的值为:"+result);
		
		result = a^b; //按位异或后的二进制操作数为1100
		System.out.println("a^b的值为:"+result);
		
		result = ~a; //将a的补码取反再减1,再取反
		System.out.println("~a的值为:"+result);
		
		result = a<<2; //左移两位得111100
		System.out.println("a<<2的值为:"+result);
		
		result = a>>2; //右移两位得0011
		System.out.println("a>>2的值为:"+result);
		
		result = a>>>3;//右移三位的0001
		System.out.println("a>>>3的值为:"+result);
		
	}

 运行结果为

a&b的值为:3
a|b的值为:15
a^b的值为:12
~a的值为:-16
a<<2的值为:60
a>>2的值为:3
a>>>3的值为:1

二、字符串的声明与使用

1、格式

String 变量名 = "字符串";

 2、声明字符串类型并赋值

字符串要用双引号引起来,可以输入任何内容。

 三、字符串的比较(equals()方法)

前面我们讲过,String是一个封装好的类,是引用数据类型,那么关于字符串的比较就不能用我们上面这些提到的运算符了,要用到我们Java中封装好的方法

1、格式

格式一:字符串1.equals(字符串2)

格式二:"ebyvb".equals("ehbdfbg")

格式三:字符串.equals("dbyueb")

格式四:"ndewuyb".equals(字符串)

2、返回值

equals()方法的返回值是布尔类型

public static void main(String[] args){
		
		String name = "张三";
		String name01 = "李四";
		
		System.out.println("字符串相同吗?"+name.equals(name01));
		System.out.println("字符串相同吗?"+"lisi".equals("zhangsan"));
		System.out.println("字符串相同吗?"+name.equals("张三"));
		System.out.println("字符串相同吗?"+"李四".equals(name01));
		
	}

 运行结果

字符串相同吗?false
字符串相同吗?false
字符串相同吗?true
字符串相同吗?true

四、运算符的优先级 

 优先顺序为: 算术运算符>关系运算符>逻辑运算符 

可以通过“()”控制表达式的运算顺序,()优先级最高

今天的内容看似比较多,但大部分都是我做的说明,内容还是很少的,还请大家耐心阅读。好了,今天的学习到此结束,我是一米八、有腹肌、低于半小时你报警的Loveletter,觉得内容不错的小伙伴可以点点关注,我们下篇博文见! 拜拜!

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值