前言
上期回顾:JAVA入门| 常量与变量(第一天)
上面这一篇主要介绍了变量与常量的种类,及其使用范围。
那么今天我们就看一下运算符和表达式吧,这些都是比较基础的内容,各位一定要打好基础,基础不扎实是很危险的哦。
最重要的编程部件——运算符、表达式和语句
运算符
程序是由多条语句组成的,而语句的基本单位就是表达式与运算符。其中运算符可以分为4类:算术运算符、关系运算符、逻辑运算符和位运算符。
表达式是语句的一种形式。
表达式由操作数和运算符组成。
其中操作数可以是常量、变量,也可以是方法,而运算符就是数学中的运算符号,比如“+”、“-”、“*”、“/”、“%”等。
举个栗子
一元运算符
一元运算符 | 意义 |
---|---|
+ | 正号 |
- | 负号 |
! | NOT,否 |
~ | 取补码 |
那么这些运算符都该怎么使用呢?
直接上代码
public class domo {
static public void main(String str[]){
byte a = Byte.MAX_VALUE;
boolean b = false;
System.out.println("a = "+a+", ~a = "+(~a));
System.out.println("b = "+b+", !b = "+(!b));
}
}
可以看到a的二进制码为0111 1111 他的补码就是1000 000 ,在计算机中就是-128。将false取反便是true。
算术运算符
算术运算符 | 意义 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 余数 |
- 其中的+、-、*运算符和数学中的运算方式相同。
- “/” 运算符是根据除数和被除数类型的不同得到的结果也会不同。
上样例
public class domo {
static public void main(String str[]){
int a =100 ,b = 9;
double c = 15.64,d=16.75;
System.out.println(a/b);
System.out.println(a/c);
System.out.println(c/d);
System.out.println(c/a);
}
}
可以看到 int/int 时结果也为int , 之后无论是 int / double 还是 double / int的结果都是double 。
这是因为编译器在进行运算时会先将两个不同数据类型的数转换成相同数据类型的数(以扩大原则),然后再进行运算。想详细了解的同学可以看看我上一篇文章的类型转换部分:JAVA入门| 常量与变量(第一天)。阿里嘎多O(∩_∩)O~。
- “%”运算符 , 直接看例子
public class domo {
static public void main(String str[]){
int a =100 ;
double c = 60.9;
System.out.println(a%c);
}
}
可以看到a%c的结果为余数。
关系运算符和if语句
关系运算符用于判断一个表达式是否成立,若是成立则会生成一个响应值true,否则不成立 也会生成一个响应值 false 。一下便是全部的关系的运算符
关系运算符 | 意义 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
== | 等于 |
!= | 不等于 |
有了这些关系运算符便可以通过if语句判断表达式是否成立,以此在不同情况下运行不同的语句。
接下来便是if语句的介绍。
if语句格式如下
if(判断条件){
语句;
}
else if(判断条件){
语句;
}
else {
语句;
}
如果括号内的判断成立,就会执行后面的语句;相反如果不成立则不执行。
if语句可以单独出现 , 属于判断语句。
else if 语句不可单独出现 , 必须和if语句一起使用 ,属于再判断语句。
else 语句也不可以单独出现, 必须和if语句一起使用 , 属于兜底语句 。
举个栗子
if(x>0) System.out.println("x>0!");
else if(x==0)System.out.println("x==0!");
else System.out.printlb("x<0!");
如果x>0则条件成立 输出 x>0 !,
否则再判断 x 0 条件成立 , 则输出 x0! ,
否则 输出 x<0 !。
以上三条语句只会有一条语句成立,如果if 成立则跳过下面的判断;
如果else if 成立 就跳过else的判断。
递增与递减运算符
递增与递减运算符的出现极大的便利了程序的编写。下面列出了增加与递减运算符的成员。
递增与递减运算符 | 意义 |
---|---|
++ | 递增,变量值+1 |
– | 递减 , 变量值 -1 |
举个栗子
public class domo {
static public void main(String str[]){
int a = 3 , b = 3;
System.out.print("a = " + a);
System.out.println(",a++ = "+(a++)+",a = "+a);
System.out.print("b = "+b);
System.out.println(",++b = "+(++b) +" , b = "+b);
}
}
从结果可以看出输出 a++及运算后 a的值,所以执行完a++后,a的值才会加1,变为4.
输出 ++b 及运算后b 的值,所以执行++b前,b的值先加1,变为4.
同样,递减运算符“-” 和递增运算符是相同的效果,大家可以自己试一试。
当然递增运算符和递减运算符一次只能+1或-1,如果想要一次+2 ,还是得用原来的 “ a = a+2” 的方法。
逻辑运算符
逻辑运算符也可以用于if语句的判断,下面列出逻辑运算符的成员
逻辑运算符 | 意义 |
---|---|
&& | AND , 与 |
|| | OR , 或 |
举个栗子:
a>0 && b >0 // 两个都是真,运算结果才是真
a>0 || b>0 // 一个是真,结果就是真
在第一个栗子中 , 同时满足 a>0和 b>0结果才是 true 。
在第二个栗子中 , 只要满足一个条件(a>0 或者 b >0) 结果就是true。
运算符的优先级
在表达式判断时有这么多的运算符,那么它们谁先谁后呢,下面给出了优先级大小的排序表格 。
咋一看很吓人,这么多的运算符怎么记得住呢,其实不必全部记住,记住一两个常用的就可以啦,在大多数情况下,如果不知道两个运算符的优先级的话,加 “()” 给他括起来,管他什么运算符 ,括号运算符永远是最优先的嘿嘿。
表达式
讲完了运算符就要开始将表达式。表达式是由变量、常量 或是其他操作数与运算符所组成的语句。如下面栗子,都是表达式的正确使用方法。
-49 //表达式由一元运算符“-” 与常量49组成
sum+2 //表达式由变量sum、算术运算符和常量2组成
a + b - c / ( d * 3 - 9) //表达式由变量、算术运算符 和常量 组成
此外 , java还有一些简洁的表达式写法,将算术运算符和赋值运算符结合为新的运算符。
运算符 | 范例用法 | 意义 |
---|---|---|
+= | 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 |
这些独特的写法可能开始不习惯,但它们可以提高程序的运行速度,因此要好好练习哦。
条件表达式
这是一种很重要的表达式,用的好可以提高我们的编程效率和代码的简洁性。
它的基本形式为:
a?x:y
如果a的值非0或为True 则整个表达式的值为x 否则为 y
举个栗子
结果如下
可以看到(1+1>2) 不成立因此结果为0,(1+1 >1) 成立 因此结果为1
语句
在学会使用运算符和表达式后,就可以写出最基本的java语句了。
例如 a+b 就是一个表达式 ,加上分号后就是一条语句
a+b ;
这就是一条语句
小结
这篇文章主要讲了运算符,表达式和语句,它们是组成程序的重要部件,希望大家能够好好学习并学以致用。
另外这个系列会一直更新下去,如果觉得写的不错可以点个赞,收藏一下。
同时如果有什么想问的、想说的都可以在下方的评论区进行评论,收到消息后我会尽快回复的,谢谢大家!