java学习笔记(三) - 运算符

一、算术运算符

  • 有小数运算时,得到的结果为近似值

二、逻辑运算符

  • &&短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false
  • &逻辑与:不管第一个条件是否为false,第二个条件都要判断

  • 符合运算会进行类型转换

    1
    2
    byte b = 3;
    b += 2;//b = (byte)(b + 2);

三、三元运算符

1
2
3
4
5
6
条件表达式? 表达式1:表达式2;

//案例
int a = 2;
int b = 3;
System.out.println(a > b?a:b);
  • 如果条件表达式为true,运算后的结果是表达式1
  • 如果条件表达式为false,运算后的结果是表达式2

四、运算符的优先级

  • 从上至下优先级降低

  • 2行:单目运算;3行:算术运算符;4行:位移运算符;5行:比较运算符;6行:逻辑运算符;7行:三元运算符;8、9、10:赋值运算符

  • 只有单目运算符、赋值运算符是从右向左运算的

五、标识符

  • 对各种变量、方法和类名等命名使用的字符序列为标识符

1. 命名规则

  • 由26个英文字母大小写,0-9,_或$组成
  • 数字不可以开头
  • 不可以使用关键字和保留字,但能包含关键字和保留字
  • Java中严格区分大小写,长度无限制
  • 标识符不能包含空格

2. 命名规范

  • 包名:多单词组成时所有字母都小写:aaa.bbb.ccc,比如com.study.crm
  • 类名、接口名:多单词组成时,所有单词的首字母大写: XxxYyyZzz,比如:TankShotGame
  • 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz,比如:tankShotGame
  • 常量名:所有字母都大写,多单词时每个单词用下划线连接:XXXYYY Zzz,比如︰TAX_RATE

六、关键字

  • 用作专门用途的字符串
  • 关键字中所有的字母都为小写

七、保留字

  • 现有Java版本尚未使用,但以后版本可能会作为关键字使用
1
byValue、cast、future、generic、inner、operator、outer、rest、var .goto、 const

八、键盘输入语句

  • 用于接收用户输入的数据
  • java.util包下的Scanner
1
2
3
4
5
6
7
8
9
10
11
12
//步骤2:创建Scanner类的对象
scanner input =new Scanner(System.in);
//步骤3:调用里面的功能
System.out.print1n("请输入姓名:");
String name = input.next();
System.out.println("请输入年龄:");
int age = input.nextInt();
System.out.println("请输入成绩:");
double score = input.nextDouble();
System.out.println( "name : "+name);
System.out.println( "age: "+age);
System.out.println( "score: "+score);

九、进制

1. 二进制

  • 0,1 满2进1,以0b或0B开头

2. 十进制

  • 0~9,满10进1

3. 八进制

  • 0~7,,满8进1,以数字0开头表示

4. 十六进制

  • 0~9及A(10)~F(15),满16进1,以0x或0X开头表示

十、位运算

1. 按位与&

  • 两位全为1,结果为1,否则为0

2. 按位或|

  • 两个有一个为1,结果为1,否则为0

3. 按位异或^

  • 两位一个为0一个为1,结果为1,否则为0

4. 按位取反~

  • 0 —> 1,1 — > 0

5. 算术右移>>

  • 低位溢出,符号位不变,并用符号位补溢出的高位
  • 相当于除2
1
int a = 1>>2;//1 => 00000001 => 00000000 本质 1 / 2 / 2 = 0

6. 算术左移<<

  • 符号位不变,低位补0
  • 相当于乘2
1
int a = 1<<2;//1 => 00000001 => 00000100 本质 1 * 2 * 2 = 4

7. 逻辑右移>>>

  • 也叫无符号右移
  • 低位溢出,高位补0

十一、补码、原码、反码

  • 二进制的最高位是符号位:0表示正数,1表示负数
  • 正数的原码,反码,补码都一样(三码合一)
  • 负数的反码 = 它的原码符号位不变,其它位取反(0->1,1->0)
  • 负数的补码 = 它的反码 + 1,负数的反码 = 负数的补码 - 1
  • 0的反码,补码都是0
  • java没有无符号数,换言之, java中的数都是有符号的
  • 在计算机运算的时候,都是以补码的方式来运算的
  • 当我们看运算结果的时候,要看他的原码