Java学习历程之----基础篇(六)
又到一周学习Java时间,转眼这一学期就过半了,仿佛还未彻底进入状态就要准备结束了,或许我们的进度稍慢了一些,但是大家在学有余力的情况下还是多去找点题目来练手吧,因为小编就是活生生的例子,一直以来都在学习Java的路上,可能在门口徘徊一下然后扭头又走,不断地重复这一过程止步不前。记住,没有人一生来就会编程,高手都是无数个日日夜夜练习敲出来的,如果有项目练习的话会成长得更快,好多具体的问题在练习中是不会遇到的,所以如果有机会的话,用项目来帮助你成长是最高效的。好了,继续和小编一起匍匐前进吧~
一、逻辑运算符
逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。具体说明如下表:
逻辑运算符的优先级为:!运算级别最高,&& 运算高于 || 运算。!运算符的优先级高于算术运算符,而 && 和 || 运算则低于关系运算符(见下一小节)。结合方向是:逻辑非具有右结合性,逻辑与和逻辑或具有左结合性。
二、关系运算符
关系运算符也可以称为“比较运算符”,用于用来比较判断两个变量或常量的大小。关系运算符是二元运算符,运算结果是 boolean 型。当运算符对应的关系成立时,运算结果是 true,否则是 false。
关系运算符的优先级为:>、<、>=、<= 具有相同的优先级,并且高于具有相同优先级的 !=、==。关系运算符的优先级高于赋值运算符而低于算术运算符,结合方向是自左向右。
三、位运算符与条件运算符
3.1、位运算符
位运算符主要用来对操作数二进制的位进行运算。按位运算表示按每个二进制位(bit)进行计算,其操作数和运算结果都是整型值。Java 语言中的位运算符分为位逻辑运算符和位移运算符两类,我们先来看位逻辑运算符,逻辑运算符包含 4 个:&(与)、|(或)、~(非)和 ^(异或)。除了 ~(即位取反)为单目运算符外,其余都为双目运算符。具体用法如下表:
与(&)运算规则是:参与运算的数字,低位对齐,高位不足的补零,如果对应的二进制位同时为 1,那么计算结果才为 1,否则为 0。因此,任何数与 0 进行按位与运算,其结果都为 0。
或(|)运算规则是:参与运算的数字,低位对齐,高位不足的补零。如果对应的二进制位只要有一个为 1,那么结果就为 1;如果对应的二进制位都为 0,结果才为 0。
异或(^)运算规则是:参与运算的数字,低位对齐,高位不足的补零,如果对应的二进制位相同(同时为 0 或同时为 1)时,结果为 0;如果对应的二进制位不相同,结果则为 1。
取反(~)运算规则是:只对一个操作数进行运算,将操作数二进制中的 1 改为 0,0 改为 1。
3.2、位移运算符
位移运算符用来将操作数向某个方向(向左或者右)移动指定的二进制位数。下表列出Java的两个位移运算符,它们都属于双目运算符。
3.3、条件运算符
Java 提供了一个特别的三元运算符(也叫三目运算符)经常用于取代某个类型的 if-then-else 语句。条件运算符的符号表示为“?:”,使用该运算符时需要有三个操作数,因此称其为三目运算符。具体说明如下:
result=<expression>?<statement1>:<statement2>;
其中,expression 是一个布尔表达式。当 expression 为真时,执行 statement1, 否则就执行 statement2。此三元运算符要求返回一个结果,因此要实现简单的二分支程序,即可使用该条件运算符。运算符的学习到此也告一段落了,我们学习了这么运算符,他们在一起混用的时候,谁的优先级较高呢?我们一起来看看下表吧!
四、实战演示
源码及运行结果
1.
2.
源码:
1.
package first.logic;//逻辑运算符与关系运算符
import java.util.Scanner; //导入java输入包,读入从键盘输入
public class luoji {
public static void main(String[] args){
int x,y; //初始化x,y
Scanner scan = new Scanner(System.in);
System.out.print("输入整型数值x和y的值:");
x=scan.nextInt();
y=scan.nextInt(); //读入从键盘输入的x和y值
if(x>0 && x<=100) // 判断x是否同时满足两个条件
System.out.printf("x在1~100之间\n");
if(y%6==0 || y%3==0) { // 判断y是否至少满足两个条件之一
System.out.printf("y可整除3或整除6\n");
}else{
System.out.printf("y既不能整除3也不能整除6\n");
}
if(!(x>y)) { // 判断x>y是否为真,再取反
System.out.printf("x>y不成立\n");
}else{
System.out.printf("x>y成立\n");
}
}
}
2.
package first.logic;
import java.text.ParseException;
public class wei {
public static void main(String[] arges)throws ParseException {
int i=10,j=5;
int z1=i&j;
int z2=i|j;
int z3=i^j;
int x1=~i;
int x2=i; //将i的值赋给x2
x2 >>=1 ; //按位右移1位并赋值给x
System.out.println("输出i的二进制:"+Integer.toBinaryString(i));
System.out.println("输出j的二进制:"+Integer.toBinaryString(j));
System.out.println("i和j进行位与运算结果:"+Integer.toBinaryString(z1));
System.out.println("i和j进行位或运算结果:"+Integer.toBinaryString(z2));
System.out.println("i和j进行位异或运算结果:"+Integer.toBinaryString(z3));
System.out.println("对i进行位取反运算:"+Integer.toBinaryString(x1));
System.out.println("对i进行向右位移1位:"+Integer.toBinaryString(x2));
}
}
小编有话说
为什么大多数编程语言里,e代表10呢?e是超越数2.718....的字母表示形式,和π一样,但为什么到了编程语言里面,就代表10了呢?《Java编程思想》里面给出了原因:E是exponential的首字母,它的意思是“指数”、幂数,代表数字系统的基数-----一般是10。在1960年代,当时的输入设备是老式的电传打字机,使用5位的baudot码,那是不包含小写字母的。第一出现小写的e表示指数大概在1970年代末期,但E表示10的习惯被C,C++,JAVA等语言保留了下来。