Java常见的运算符
算术运算符
+(加) ,-(减),*(乘),/(除),%(求余)
/ // 整除,只获取商的部分
% // 余数,求余,求模
int a = 3;
int b = 5;
int c = a + b; //加法运算
c = a * b; //乘法
c = a / b; //除法运算 结果为零 注意除法运算当两侧类型统一结果仍为运算数据保持一致
c = a % b; //取模运算 ,即求a/b的余值
1.除号 /
int num1 = 12;
int num2 = 5;
int result = num1 / num2;//结果为2
double result2 = num1 / num2 + 0.0;//结果为2.0
double result3 = num1 / (num2 +0.0);//结果为2.4
double result4 = (double)num1 / num2;//结果为2.4
double result5 = (double)(num1 / num2);//结果是2.0
2.取模 %
取模结果的符号与被模数相同
实际开发中,经常使用取模判断能否被除尽
int i = -10;
int j = 10;
int result1 = i %3;//result1结果是-1
int result2 = i %3;//result2结果是1
关系运算符
> , >= , < , <= , == , !=
关系运算符也可以称为“比较运算符”,用于用来比较判断两个变量或常量的大小。关系运算符是二元运算符,运算结果是 boolean 型。当运算符对应的关系成立时,运算结果是 true,否则是 false。
关系表达式是由关系运算符连接起来的表达式。关系运算符中“关系”二字的含义是指一个数据与另一个数据之间的关系,这种关系只有成立与不成立两种可能情况,可以用逻辑值来表示,逻辑上的 true 与 false 用数字 1 与 0 来表示。
关系成立时表达式的结果为 true(或 1),否则表达式的结果为 false(或 0)。
例:
public class Test {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println("a == b = " + (a == b) );
System.out.println("a != b = " + (a != b) );
System.out.println("a > b = " + (a > b) );
System.out.println("a < b = " + (a < b) );
System.out.println("b >= a = " + (b >= a) );
System.out.println("b <= a = " + (b <= a) );
}
}
以上运行结果如下:
a == b = false
a != b = true
a > b = false
a < b = true
b >= a = true
b <= a = false
逻辑运算符
&& (逻辑与) , || (逻辑或) , !(逻辑非) & (逻辑与) , | (逻辑或)
逻辑关系如下图
&&
:一假即假, 当第一个表达式为假的时候,那么第二个表达式不参与运算||
: 一真即真, 当第一个表达式为真的时候,那么第二个表达式不参与运算
通常推荐使用&&
和||
int a = 10;
int b = 4;
//短路或 一个成立,后面的不运行了
if (a > 0 || (b++) > 4){
System.out.println("a > 0 | (b++) > 4");
System.out.println(b); //用来判断后面的b++是否被执行
}
//逻辑或 所有的都运行
if (a > 0 | (b++) > 4){
System.out.println("a > 0 | (b++) > 4后b的值为:");
System.out.println(b); //用来判断后面的b++是否被执行
}
结果:
可以很明显的看到a>0成立 | 后面的也执行了而||就没有执行,&&和&号类似
自加和自减运算符
a++ a-- ++a --a
a++ : 先计算 a++ 表达式的值,表达式的值等于a的值, 再对a自增1
++a : 先对 a 自增1, 在计算 ++a 表达式的值, 表达式的值等于a的值
例如:
int a = 3;
int c = a++; //c = 3 , a =4
int d = ++a; //d = 5 , a =5
int e = a--; //e = 5 , a = 4
int f = --a; // f = 3 , a = 3
赋值运算符
=(赋值) += , -= , *= , /=, %=
a += 10 <==> a = a + 10
a -= 1 <==> a = a - 1
赋值运算符(=) 不会提升变量的数据类型
byte b=20;
int c = 5;
b/=c; //自动转换
b=b/c; //错误
b=(byte) (b/c); //改正
三目(木)运算符
表达式 ? a : b
返回 boolean的表达式
例:判断输入的数值是奇数还是偶数
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数字:");
int num = sc.nextInt();
//输出用户输入的数据是奇数还是偶数?
//分析:num对2取余是否等于0 ? (如果条件成立)输出偶数 :(如果不成立)输出奇数
System.out.println(num % 2 == 0 ? "偶数" : "奇数");
}
num % 2 == 0 输出偶数
num % 2 != 0 输出奇数
移位运算符
& // 按位与
| // 按位或
^ // 异或
~ // 按位取反
<< // 左移运算
>> // 有符号右移
>>> // 无符号右移
int a=2;
a=a<<2;
System.out.println("a="+a);
a=8 //10 ===>1000
位移运算只能应用于整数类型
主要是通过二进制进行运算的
位移运算的运算速度是最高效的
程序控制流程
顺序控制流程
从上到下运行、从左到右执行
选择结构
单分支if语句
当且仅当条件为true时执行一个动作
if (布尔表达式) {
语句;
}
双分支if-else语句
if (布尔表达式) {
布尔表达式为真时执行的语句;
} else {
布尔表达式为假时执行的语句;
}
多(三)分支:三个或三个以上,被称为多分支
if (condition1) {
// 如果条件1满足,则执行if中的代码
} else if (condition2) {
// 如果条件2满足,则执行这儿的代码
} else if (condition3) {
// 如果条件3满足,则执行这儿的代码
}
……
else if (conditionN) {
// 如果条件N满足,则执行这儿的代码
}
[
else {
// 前面所有条件的剩余条件
}
]
switch分支语句
过多地使用嵌套的if语句会使程序很难阅读。Java提供switch语句来有效地处理多重条件的问题。
它是一种专门用于多分支的语法结构,使用常量匹配变量
switch表达式必须能计算出一个char、byte、short、int或者String型值,并且必须总是要用括
号括住
switch (switch表达式) {
case 值1 : 语句1;
break;
case 值2 : 语句2;
break;
...
case 值N : 语句N;
break;
default : 默认情况下执行的语句;
}
例:
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入一个字符(a-g):");
char week = myScanner.next().charAt(0);
switch (week){
case 'a' :
System.out.println("今天星期一");
break;
case 'b' :
System.out.println("今天星期二");
break;
case 'c' :
System.out.println("今天星期三");
break;
case 'd' :
System.out.println("今天星期四");
break;
case 'e' :
System.out.println("今天星期五");
break;
case 'f' :
System.out.println("今天星期六");
break;
case 'g' :
System.out.println("今天星期日");
break;
default:
System.out.println("你输入的字符不对,请重新输入");
}
}
循环结构
for循环
循环四要素:循环初始化,循环继续条件,循环体,循环迭代/步长/周期。
for (初始化; 继续条件; 迭代) {
循环体语句;
}
例
public class Demo07 {
public static void main(String[] args) {
//计算0-100之间的奇数和,偶数和
int o=0;
int j=0;
for (int i = 0; i <=100; i++) {
if(i%2==0)
{
o=o+i;
}
else{
j=j+i;
}
}
System.out.println("偶数和为:"+o);
System.out.println("奇数和为:"+j);
}
}
while循环
循环初始化
while (循环继续条件) {
循环体语句;
循环迭代;
}
例:计算1+2+3+4+5+6+7+8+9 的值
int sum = 0;
int i = 1;
while (i < 10) {
sum = sum + i;
i++;
}
System.out.println(sum);
do while循环
do {
// 循环体
//循环迭代;
} while(循环继续条件);
例:通过do.while循环, 在控制台打印10次Hello World!
public class DoWhileDemo01 {
public static void main(String[] args) {
int i = 1;
do{
System.out.println("Hello World! " + i);
i++;
}while(i <= 10);
}
}
①
do{
③;
④;}while(②);
执行过程:① - ③ - ④ - ② - ③ - ④ - … - ②
需要注意:即便是条件不成立,也会执行一次!!!
常常用于人机交互:先进行交流,再判断条件。