与C语言中的运算符大致类似,以下为一些特殊情况
逻辑运算符的短路:因逻辑运算符的特点决定
// && 的短路:当第一个操作数值为false时,不再去运算第二个操作数
int x = 0, y = 0;
if(x!= 0 && (1 / x > (x + y)){
System.out.println("if分支");
}else {
System.out.println("else分支");
}
// || 的短路:第一个操作数是true时,不运算第二个操作数
boolean bo1 = x != 0 || x ++ > y;
System.out.println(x);
System.out.println("bo1");
‘+’、‘-’ 可为正负号
int x = 0, y = 10;
int add = x + -y;
System.out.println(add); // -10;
两种右移
/*
* >>有符号右移:高位要补符号位
* >>>无符号右移:高位不补符号位
*/
int i = -1;
System.out.println(i >> 1);
System.out.println(i >>> 1);
数据类型按容量大小排序(隐式)
byte→ short→ (char)→ int→long→float→ double。
byte,short, char之间不会相互转换,他们三者在计算时首先转换为 int 类型。
逆顺序的需要借助强制类型转换
顺序流程是按照语句顺序依次执行一系列语句(或语句块)。顺序流程是最基本的控制流程。
基本语法:
if ( 条件表达式 ) {
//条件为真时执行
语句块1
} else {
//条件为假时执行
语句块2
}
if(c == '+')
System.out.println(a + b);
else if(c == '-')
System.out.println(a - b);
else if(c == '*')
System.out.println(a * b);
else
System.out.println(a / b);
基本语法
基本语法:
switch ( 表达式 ) {
case constant1:
语句;
break;
case constant2:
语句;
break;
default:
语句;
break;
}
switch 后允许的表达式类型:String/char/byte/short/byte或枚举类型
Scanner sc = new Scanner(System.in);
System.out.printf("输入成绩的等级");
String grade = sc.nextLine();
switch(grade){
case "A":
System.out.println("你的成绩在90-100之间");
case "B":
System.out.println("你的成绩在80-90之间");
}
循环语句是根据条件,要求程序反复执行某些操作。
当循环变量在指定范围内变化时,重复执行循环体,直到循环变量超出了指定的范围时退出。
基本语法
for( 初始化表达式; 终止条件表达式; 更新表达式 ) {
循环体
}
注意:初始化表达式中的变量必须声明并赋值。终止条件表达式的值必须为布尔值。
for(int i = 15; i >= 10; i --) {
for(int k = 0; k < 15 - i; k ++){
System.out.print(" ");
}
for(int j = 10; j <= i; j ++){
System.out.printf("%d*%d=%d ", i, j, i * j);
}
System.out.println();
}
当条件满足时进入,重复执行循环体,直到条件不满足时退出。
基本语法
while( 循环条件表达式 ) {
循环体
}
while(n != 0){
System.out.println(n);
n --;
}
无条件进入,执行一次循环体后判断是否满足条件,当条件满足时重复执行循环体,直到条件不满足时退出
基本语法:
do {
循环体
} while ( 循环条件表达式 );
do {
s += n * ( n + 1 ) ;
n = n + 1 ;
} while ( s < totalNum ) ;
Java提供了一个更为简洁的循环语句,用于数组或者集合的遍历。
基本语法
for ( 类型 变量名: 数组或集合 ) {
循环体
}
int[] nums = {10, 20, 30, 40, 50};
for(int i : nums){
System.out.println(i);
}