chapter4
此为笔者个人笔记,如有错误还请指出
运算符介绍
算术运算符(Arithmetic Operator)
这里不过多介绍,只辨析两个易错点:++(前)先运算再取值,++(后)先取值再运算,–同理
public class test{
public static void main(String[] args){
int i,j = 1 , 1;
i = i++;
j = ++j;
//输出i=1,j=2
//分析:i=i++;设置一临时变量temp 1 temp=i; 2 i=i+1; 3 i=temp;
//j=++j; 1 j=j+1; 2 temp=j; 3 j=temp;
System.out.println("i:"+ i + "\nj:" + j);
}
}
10/4赋值给double输出2.0 10.0/4是2.5 10/4.0也是2.5
取模公式: a % b = a - a / b * b
关系运算符
- == !=
- < > <= >=
- instanceof(是否包含在类中)
逻辑运算符
- 短路与&& 短路或|| 取反!
- 逻辑与& 逻辑或| 逻辑异或^
逻辑异或a和b不同时,结果为true,否则为false
开发中短路与或效率更高,短路与或若根据一个能判断出结果就不再继续判断
赋值运算符
注意复合运算的时候会进行运行类型转换 即byte b=1; b+=2;等价于b=(byte)(b+2);
三元运算符
基本语法: 条件表达式 ? 表达式1 : 表达式2
条件表达式为true 执行1,为假执行2
//三个数取最大值
public class MaxOfThree{
public static void main(String[] args){
int a,b,c;
a=3;
b=188;
c=1;
return (a > b? a : b) > c? (a > b? a : b) : c;
}
}
运算符优先级
只有单目运算符和赋值运算符是从右向左的
键盘输入语句
接受用户输入的数据用扫描器对象 Scanner
步骤
- 导包 java.util.*
- 创建该类的对象(声明对象)
- 调用功能
import java.util.*;//记得加分号
public class ScanTest{
public static void main(String[] args){
//创建Scanner对象实例
Scanner input = new Scanner(System.in);
//接受用户输入
System.out.println("输入:");
String name = input.next();
int age = input.nextInt();
double salary = input.nextDouble();
System.out.println(name+age+salary);
}
}
进制
位运算
非位移运算的位运算:先求出补码再进行位运算,位运算后再将补码转化为原码
public class andOrTest{
public static void main(String[] args){
//先求补码,
//2&-5
//补码 00000000 00000000 00000000 00000010
// 11111111 11111111 11111111 11111011
System.out.println(2|-5);
// 11111111 11111111 11111111 11111011 补码
//反码:11111111 11111111 11111111 11111010
//原码:10000000 00000000 00000000 00000101
//预计是-5
System.out.println(~2);
//补码:00000000 00000000 00000000 00000010
//取反:11111111 11111111 11111111 11111101 补码
//反码:11111111 11111111 11111111 11111100
//原码:10000000 00000000 00000000 00000011
System.out.println(25>>2);
//原码:00000000 00000000 00000000 00011001
//结果:00000000 00000000 00000000 00000110 6
//>>相当于除2,>>几就除几个2
//<<相当于乘2,<<几就乘几个2
}
}
-
<<算数左移 符号位不变,低位补零
-
>>算数右移 符号位不变,低位溢出,高位补符号位
-
>>>逻辑右移 无符号右移,低位溢出,高位补零
-
~ 按位取反
-
& 按位与 两位全为1结果为1
-
| 按位或 两位有一位为1结果为1
-
^ 按位异或 两位不同结果为1
homework
public class HomeWork{
public static void main(String[] args){
int i = 66;
System.out.println(++i+i);
//分析: 先自增再取i, 67+67? 正确的
}
}