上一篇:带你学《Java编程入门》之三:火眼金睛看Java基本类型(下)
【本节目标】
学完本章你需要了解Java运算符有哪些以及它们的优先级,本节通过案例分析了数学运算符、关系运算符、三目(赋值)运算符以及位运算符,希望学有所获。
4.1 Java运算符
首先对于程序开发而言,里面会提供大量的基础运算符,那么这些运算符也都会提供有各自的优先顺序,但是一般不建议去记这些运算符的优先级。
图一 运算符优先级
关键性的问题是,对于程序开发而言,强烈不建议编写很复杂的计算。
范例:以一个程序为例
public class JavaDemo {
public static void main(String args[]) {
int x = 10 ;
int y = 20 ;
int result = x -- + y++ * -- y / x / y * ++ x - --y + y ++ ;
System.out.println(result) ; //执行结果为30
}
}
对于程序代码而言,实际上已经告别了复杂程序逻辑时代,更多情况下是希望大家编写一些简单易懂的代码。
4.2 数学运算符
在Java中数学运算都提供了一个标准的支持。包括四则运算都是支持的。
范例:实现一个简单的四则运算
public class JavaDemo {
public static void main(String args[]) {
int result = 890234890 * ( 2902390 + 100 ) * 2 ;
System.out.println(result) ; //执行结果为886891784
}
}
在进行计算的时候,编程语言一般也都会提供有简化(+=、*=、-=、/=、%=)的运算符支持。
范例:简化运算符
public class JavaDemo {
public static void main(String args[]) {
int num = 10 ;
//num =num +20;
num += 20 ;
System.out.println(num) ; //执行结果:30
}
}
对于以上"num =num +20;"代码,在内存小的时代就不适合了,所以才提供有一系列的简化运算。
范例:求模
public class JavaDemo {
public static void main(String args[]) {
int num = 10 ;
num %= 3;
System.out.println(num) ; //执行结果:1
}
}
在数学计算里面最头疼的是“++”、“--”,因为这两种运算符有两类使用方法:
- ++变量、--变量:先进行变量的自增或自减,而后在进行数字的计算;
- 变量++、变量--:先使用变量进行计算,而后再进行自增或自减。
范例:实现自增与自减
public class JavaDemo {
public static void main(String args[]) {
int x = 10 ;
int y = 20 ;
// 1、++ x:首先x的内容要先自增1,为11;
// 2、y --:先进行计算,使用的内容是20,计算完成后自减
int result = ++ x - y -- ;
System.out.println("计算结果:" + result) ; // -9
System.out.println("x = " + x) ; // 11
System.out.println("y = " + y) ; // 19
}
}
这些代码程序都是在当初内存不大的情况下提供的处理方式,但是现在来看,这种计算就较为繁琐,尤其是在硬件成本降低的今天,这类操作如果不是必须的情况下,不建议这样使用。
public class JavaDemo {
public static void main(String args[]) {
int x = 10 ;
int y = 20 ;
++ x ;
int result = x - y;
y -- ;
System.out.println("计算结果:" + result) ; // -9
System.out.println("x = " + x) ; // 11
System.out.println("y = " + y) ; // 19
}
}
4.3 关系运算符
关系运算符只要特征进行大小的比较处理,包括:大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、不等(!=)、相等(==)。所有的关系运算返回值类型为布尔型。
范例:做一个大小关系的判断
public class JavaDemo {
public static void main(String args[]) {
int x = 10 ;
int y = 20 ;
boolean flag = x > y ; // false
System.out.println(flag) ;
}
}
在进行关系判断的时候需要注意的是相等的判断问题。在Java里面“=”表示赋值运算,“==”是内容相同的比较。
范例:判断相等
public class JavaDemo {
public static void main(String args[]) {
int x = 10 ;
int y = 10 ;
boolean flag = x == y ; // true
System.out.println(flag) ;
}
}
在进行关系运算的时候可以针对所有的基本数据类型,例如:也可以直接使用字符来处理。
范例:在字符处理上使用关系运算
public class JavaDemo {
public static void main(String args[]) {
char c = '建' ;
boolean flag = 24314 == c ; // true
System.out.println(flag) ;
}
}
数据类型之间提供有转型支持,所以在进行判断的时候字符会自动转为int而后进行数字的比较。
4.4 三目(赋值)运算符
在进行程序开发的时候三目运算符使用的非常多,合理利用三目运算可以避免一些大范围的程序编写。三目运算符是所谓的赋值运算处理。它是需要设置一个逻辑关系的判断以后才可以进行的赋值操作,基本语法如下:
关系运算?关系满足时的内容:关系不满足时的内容。
范例:判断两个数字的大小,将最大值保存
public class JavaDemo {
public static void main(String args[]) {
int x = 10 ;
int y = 20 ;
// 判断x与y的大小关系来决定最终max变量的内容
int max = x > y ? x : y ;
System.out.println(max) ; //执行结果:20
}
}
不用三目运算符去编写同样的程序
public class JavaDemo {
public static void main(String args[]) {
int x = 10 ;
int y = 20 ;
// 判断x与y的大小关系来决定最终max变量的内容
int max = 0 ;
if (x > y) {
max = x ;
} else {
max = y ;
}
System.out.println(max) ; //执行结果:20
}
}
三目运算本身也可以进行嵌套处理,也就是说在赋值语句位置上可以进一步吧编写三目运算符。
范例:三目运算嵌套,将三个数字的最大值保存下来
public class JavaDemo {
public static void main(String args[]) {
int x = 10 ;
int y = 20 ;
int z = 15 ;
int max = x > y ? (x > z ? x : z) : (y > z ? y : z) ;
System.out.println(max) ; //执行结果:20
}
}
虽然允许进行嵌套处理,但是程序的可读性变得很差,根据实际情况判断是否使用三目运算。
4.5 位运算符
位运算指的是可以直接进行二进制数据的计算处理,主要有:与(&)、或(|)、异或(^)、反码(~)、移位处理。
如果要想理解位操作,则一定要清楚十进制与二进制之间的转换处理逻辑:数字除2取余。
你所不知道的13的二进制表示法
范例:观察与操作,如果两位都是1结果才是1,有一位是0,结果就是0。
public class JavaDemo {
public static void main(String args[]) {
int x = 13 ;
int y = 7 ;
System.out.println(x & y) ;//执行结果:5
}
}
13的二进制:00000000000000000000000000001101
7的二进制:00000000000000000000000000000111
&计算:00000000000000000000000000000101
范例:观察或运算,有1位是1结果就是1,2位都是0的结果才是0
public class JavaDemo {
public static void main(String args[]) {
int x = 13 ;
int y = 7 ;
System.out.println(x | y) ;//执行结果:15
}
}
13的二进制:00000000000000000000000000001101
7的二进制:00000000000000000000000000000111
|计算:00000000000000000000000000001111
在进行位运算处理的时候还可以进行移位的计算。例如:以2的3次方计算为例。
范例:移位处理
public class JavaDemo {
public static void main(String args[]) {
int x = 2 ;
System.out.println(x << 2) ;
System.out.println(x) ;
}
}
2的二进制:
00000000000000000000000000000010
向左移2位:
00000000000000000000000000001000
面试题:请解释&和&&、|和||的区别?
&和|两个运算符可以进行关系运算与逻辑运算;
- 在进行逻辑运算的时候所有的判断条件都要执行;
- 在进行位运算的时候只是针对于当前的数据进行与和或处理;
在逻辑运算上还可以使用&&、||;
- &&:在若干个条件判断的时候,如果前面的条件返回了false,后续的所有条件不再判断最终的结果就是false;
- ||:在若干个条件判断的时候,如果前面的条件返回了true,后续条件不再执行最终的结果就是true;
想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学
下一篇:带你学《Java编程入门》之五:“直线、分叉、圆圈”--程序逻辑之争
更多Java入门编程文章查看此处