一.运算符
1.逻辑运算符
符号:==,!=,<,>,<=,>=
<,>,<=,>= : 只能用于数值间比较,包含字符类型(也就是单个字符)
比较后返回值都是布尔值(true/flase)
==,!= : 既能用于数值间比较,包含字符类型(也就是单个字符)
也可以用于布尔值之间的比较
也可以用于引用类型间(如:字符串)的比较
比较后返回值都是布尔值(true/flase)
2.赋值运算符
符号:=
作用:将右边的值赋给左边的变量
注:等号左右两边的类型需一致(也可以数值间类型转换,需注意强制类型转换等问题)
扩展运算符
+= eg:a += b a = a + b
-= eg:a -= b a = a - b
*= eg:a *= b a = a * b
/= eg:a /= b a = a / b
%= eg:a %= b a = a % b
3.逻辑运算符
符号:&(与),|(或),!(非)
&&(与),||(或),^(异或)
逻辑与:&,&&
使用:(逻辑表达式1)&(逻辑表达式2);(逻辑表达式1)&&(逻辑表达式2)
作用:当所有表达式结果为true时,则返回true
区别:&不会有短路现象,&&有短路现象
int a,b;
a = 1,b = 2;
if((a++ == 1)&(b++ = 3)//此时a = 2 b = 3
if((a++ == 1)&&(b++ = 3)//此时a = 3 b = 3
短路现象:与逻辑运算里表达式1为flase是后面表达式不进行
逻辑与:|,||
使用:(逻辑表达式1)|(逻辑表达式2);(逻辑表达式1)||(逻辑表达式2)
作用:当全部表达式结果为flase时,则返回flase
区别:|不会有短路现象,||有短路现象
int a,b;
a = 1,b = 2;
if((a++ != 1)|(b++ = 3)//此时a = 2 b = 3
if((a++ != 1)||(b++ = 3)//此时a = 3 b = 3
短路现象:或表达式里表达式1为true是后面表达式不进行
逻辑异或:^
使用:(逻辑表达式1)^(逻辑表达式2)
作用:两表达式逻辑值相同时返回true
两表达式逻辑值相反时返回flase
逻辑非:!
使用:!(逻辑表达式)
作用:使返回布尔值与逻辑表达式实际布尔值相反
4.条件运算符
语法:(条件表达式)?1:2
结果 = (条件表达式)?1:2;
当条件表达式结果为true时,返回?后结果
当条件表达式结果为flase时,返回:后结果
条件表达式必定返回结果,返回结果与接受变量类型需一致
public static void main(String[] args) {
int a = 1,b = 2;
int d = (a>b)?a:b;
System.out.println(d);
String c = (a>b)?"a胜利了":"b胜利了";
System.out.println(c);
}
二.位运算
位运算:对整数的二进制位进行操作
<< 左移 二进制的比特位向右移动 空位补0
>> 右移 二进制的比特位向右移动 带符号移动
正数移动后符号位补0 负数移动后符号位补1
>>> 无符号右移 不管是正数还是负数,移动后统一补0,结果肯定为正
& 将两个整数的对应的二进制进行运算,只能1&1,否则为0
| 将两个整数的对应的二进制进行运算,只能0|0,否则为1
^ 将两个整数的对应的二进制进行运算,相同为0,相反为1
注:^,&,|两侧为逻辑值时当作逻辑运算符
两侧为整数时当作位运算符
~ 将所取整数的对应二进制数进行非运算,1为0,0为1
/*位运算对整数的二进制位进行操作
<< 左移 二进制的比特位向左移动 空位补0
>> 右移 二进制的比特位向右移动 带符号移动:正数移动后符号位补0,负数移动后符号位补1
>>> 无符号右移 不管正数还是负数,移动后统一补0 结果肯定为正
* */
public static void main(String[] args) {
// int a = 10,b = -10, c = 5;
// int x,y,z;
// x = a<<1;
// y = a>>1;
// z = a>>>1;
// System.out.println(x);
// System.out.println(y);
// System.out.println(z);
// x = b<<1;
// y = b>>1;
// z = b>>>1;
// System.out.println(x);
// System.out.println(y);
// System.out.println(z);/* >>> 无符号右移 不管正数还是负数,移动后统一补0 结果肯定为正*/
// x = c<<1;
// y = c>>1;
// z = c>>>1;
// System.out.println(x);
// System.out.println(y);
// System.out.println(z);
/* &,|,^既可以做逻辑运算符,也可以作为运算符
* 当左右为逻辑值时,当作逻辑运算符
* 当左右为整数时,当作位运算符*/
// int i = 4,j = 5;
// System.out.println(i&j);
// /* &只有1&1为1,否则结果为0
// * 0000 0101 5
// * 0000 0100 4
// * 0000 0100 4 结果*/
// System.out.println(i|j);
// /* |只有0|0为0,否则结果为1
// * 0000 0101 5
// * 0000 0100 4
// * 0000 0101 5 结果*/
// System.out.println(i^j);
// /* ^数字相同为0,不同为1
// * 0000 0101 5
// * 0000 0100 4
// * 0000 0001 1 结果*/
// System.out.println(~i);
// /* ~0=1,~1=0
// * 0000 0101 4
// * 1111 1010 -5 结果*/
}
三.控制台输入
步骤:
四.控制语句
1.if语句
使用:
注()内结果需为布尔值
if(条件表达式){
}
else if{
}
else if{
}
……
2.switch语句
注:
使用:
switch (表达式){//表达式的值可以为数值型,字符型,字符串型,枚举
case 字面常量1 : 语句一 【break】
case 字面常量2 : 语句二 【break】
case 字面常量3 : 语句三 【break】
……
default: 默认语句块
}
int w;
int a;
Scanner scanner = new Scanner(System.in);
w = scanner.nextInt();
a = scanner.nextInt();
if (w > 7) {
System.out.println("该输入不合法");
} else {
switch (w) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
default:
System.out.println("输入不合法");
}
if (a <= 7 && a >= 1) {
switch (a) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
default:
System.out.println("输入不合法");
}
}
}
}
五.循环
定义:满足某种条件时,重复执行某些此操作
循环结构:
1.循环变量初始值
2.循环条件
3.循环体
4.循环变量迭代
分类:while:do while;for
while
zhixinh
do while
for