韩顺平 零基础30天学会Java 学习笔记
第04章 运算符(P063 - P103)
1. 算数运算符
// 取模 %
// 本质看一个公式 a % b = a - a / b * b
10 % 3 = 1
-10 % 3 = -1
10 % -3 = 1
-10 % -3 = -1
-
练习
int i = 1; i = i++; // 规则使用临时变量:(1)temp=i;(2)i=i+1;(3)i=temp; System.out.println(i); // 输出 1 int i = 1; i = ++i; // 规则使用临时变量:(1)i=i+1;(2)temp=i;(3)i=temp; System.out.println(i); // 输出 1
2. 关系运算符(比较)
结果要么true,要么false
3. 逻辑运算符
-
练习
答案:(1) x = 6, y = 6; (2) x = 6, y = 5; (3) x = 11, y = 6; (4) x = 11, y = 5
4. 赋值运算符
// 复合赋值运算符会进行类型转换
byte b = 3;
b += 2; // 等价于 b = (byte)(b + 2)
b++; // 等价于 b = (byte)(b + 1)
5. 三元运算符
- 基本语法:
条件表达式 ? 表达式1 : 表达式2;
- 表达式1和表达式2要为可以赋给接收变量的类型(或可以自动转换)
运算符优先级
- 只有单目运算符、赋值运算符是从右向左运算的
标识符
- 由26个字母、_或$组成,数字不可以开头。
- 标识符明明规范
- 包名:多单词组成时,所有字母都小写:aaa.bbb.ccc
- 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
- 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
- 常量名:所有字母都大写。多单词组成时,每个单词用下划线连接:XXX_YYY_ZZZ
键盘输入语句
// 1. 导入该类所在的包,java.util.*
import java.util.Scanner;
public class Input {
public static void main(String[] args) {
// 2. 创建该类对象(声明变量)
// Scanner类表示简单文本扫描器
Scanner input = new Scanner(System.in);
// 3. 调用里面的功能
System.out.println("Please input your name: ");
String name = input.next();
System.out.println("Please input your age: ");
int age = input.nextInt();
}
}
进制转换
B:2 O:8 D:10 H:16
- 十进制转二进制
-
原码、反码、补码
- 二进制的最高位是符号位:0表示正数,1表示负数;
- 正数的原码、反码、补码一样;
- 负数的反码 = 原码符号位不变,其它位取反;负数的反码 = 补码 - 1;
- 负数的补码 = 反码 + 1;
- 负数的原码 = 补码 - 1,符号位不变,其它位取反
- 0的反码、补码都是0;
- java没有无符号数;
- 在计算机运算的时候,都是以补码的方式来运算的;
- 当我们看运算结果的时候,要看原码。
-
位运算练习
-
~-2 = ?
-2的原码:10000000 00000000 00000000 00000010
-2的反码:11111111 11111111 11111111 11111101
-2的补码:11111111 11111111 11111111 11111110
~-2操作: 00000000 00000000 00000000 00000001
运算后原码:00000000 00000000 00000000 00000001
-
>>
:算术右移,低位溢出,符号位不变,并用符号位补溢出的高位<<
:算数左移,符号位不变,低位补0>>>
:逻辑右移,又称无符号右移,低位溢出,高位补0 -
练习1
a = 1 / 2 / 2 = 0 00000001 => 00000000 (01)
b = -1 / 2 / 2 = 0 10000000 00000000 00000000 00000001
c = 1 * 2 * 2 = 4 00000001 => 00000100
d = -1 * 2 * 2 = -4;
e = 0
答案:-3;2;3;4;5;5;-2
-