目录
3、关系运算符(> 、 >= 、 < 、<= 、== 、!=)
课前先导
今天我们来学习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,觉得内容不错的小伙伴可以点点关注,我们下篇博文见! 拜拜!