1. 每日一考
1.1 “&”和“&&”的异同?
“&”称作逻辑与或者单与,“&&”称作短路与或者双与。
“&”和“&&”都表示与,下列两种语句产生的结果是相同的,即只有A和B都是true的时候,结果才是true,否则结果为false。另外,当A为true时,两种语句A和B都会被执行。不同的是,当A为false时,第一种语句会将A、B都执行,第二种情况会跳过B的执行(短路效果)。
if(A&B){}
if(A&&B){}
1.2 程序输出
class OperatorTest{
public static void main(String[] main){
boolean x = true;
boolean y = false;
short z = 40;
if((z++ == 40) && (y = true)){ //先将true赋给y,所以y是true,所以y=true是true
z++;
}
if((x == false) || (++z == 43)){
z++;
}
System.out.println("z= " + z);
}
}
结果为:44。
1.3 定义3个int型变量并赋值,使用三元运算符或者if-else获取这三个数中的较大的数的实现。
int num1 = 10;
int num2 = 21;
int num3 = -21;
int max;
if(num1 >= num2 && num1 >= num3){
max = num1;
}
else if(num2 >= num1 && num2 >= num3){
max = num2;
}
else{
max = num3;
}
System.out.println("max number is " + max);
1.4 编写程序,声明两个double型变量并赋值。判断第一个数大于10.0,且第2个数小于20.0,打印两数之和。否则,打印两数之差
double d1 = 12.3;
double d2 = 32.1;
if(d1 > 10 && d2 < 20){
...
}
else{
...
}
1.5 交换2个变量值的代码实现
String s1 = "北京";
String s2 = "南京";
String temp = s1;
s1 = s2;
s2 = temp;
2. 运算符
- 算术运算符
- 赋值运算符
- 比较运算符
- 逻辑运算符
- 位运算符
- 三元运算符
2.1 算术运算符
运算符 | 运算 |
---|---|
+ | 正号 |
- | 负号 |
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余 |
++ | 自增(前) |
++ | 自增(后) |
-- | 自减(前) |
-- | 自减(后) |
+ | 字符串连接 |
class AriTest{
public static void main(String[] args){
// 除号 /
int num1 = 12;
int num2 = 5;
int result = num1/num2;
System.out.println(result); // 2
int result2 = num1/num2*num2;
System.out.println(result2); // 10
double result3 = num1/num2;
System.out.println(result3); // 2.0
double result4 = num1/num2 + 0.0; // 2.0
double result5 = num1/(num2+0.0); // 2.4
double result6 = (double)num1/num2; // 2.4
double result6 = (double)(num1/num2); // 2.0
// 取余运算 %
int m1 = 12;
int n1 = 5;
System.out.println("m1 % n1 = " + m1 % n1); //2
int m2 = -12;
int n2 = 5;
System.out.println("m2 % n2 = " + m2 % n2); //-2
int m3 = 12;
int n3 = -5;
System.out.println("m3 % n3 = " + m3 % n3); //2
int m4 = -12;
int n4 = -5;
System.out.println("m4 % n4 = " + m4 % n4); // -2
// 结论:结果和被模数的符号相同
//前++ : 先自增1,后++
//后++ : 先运算,后自增1
int a1 = 10;
int b1 = ++a1; // b1 = 11
int a2 = 10;
int b2 = a2++; // b2 = 10
//注意点:
short s1 = 10;
s1 = s1 + 1; // 编译失败
s1 = (short)(s1 + 1); // 编译正确
s1++; // 编译正确,自增不会改变变量本身的数据类型
//问题
byte bt1 = 127;
bt1++; // bt1 = -128
//前-- : 先减1,后运算
//后-- : 先运算,后减1
}
}