进制
(计算机中默认是十进制)
二进制:0和1,如0110
二进制的整数以 0b 或 0B 开头
int i=110; //结果为110
//前缀0b表示为二进制数
int i=0b110; //结果为6
逢2进1
1+1=10 11+1=100 111+1=1000
//定义两个 8 位的二进制整数
int binVa11 = 0b11010100;
byte b工nVa12 = 0B01101001;
// 定义一个 32 位的二迸制整数, 最高位是符号位
int binVal3 = 0B10000000000000000000000000000011;
System.out.println(binVa11) ; // 输出 212
System.out . println(b工nVa12) ; // 输出 105
System. out .println(binVal3); //输出 -2147483645
从上面代码可以看出, 当定义 32 位的二进制整数时,最高位其实是符号位,当符号位是 1 时, 表明它是一个负数,负数在计算机里是以补码的形式存在的,因此还需要换算成原码。
提示:所有数字在计算机底层都是以二进制形式存在的,原码是直接将一个数值换算成二进制数。 但计算机以补码的形式保存所有的整数。补码的计算规则: 正数的补码和原码完全相同,负数的补码是其反码加 1 ;反码是对原码按住取反,只是最高位(符号位) 保持不变。
将上面的二进制整数 binVal3 转换成十进制数的过程如图 2所示。
整数值默认就是 int 类型,因此使用二进制形式定义整数时,二进制整数默认 占 32 位, 其中第 32 位是符号位;如果在二进制整数后添加 l 或 L 后缀,那么这个二进制整数默认占 64 位,其中第 64 位是符号位。 例如如下程序。
/*
定义一个8位的二进制,该数值默认占32位,因此它是一个正数。
只是强制类型转换成byte时产生了溢出,导致它变成了负数。 最终导致binVal4变成了-23(计算方式和上面图2同)
*/
byte binVal4 = (byte)0b11101001;
/*
定义一个32位的二进制数,最高位是1。
但由于数值后添加了L后缀,把它当成 long 类型处理,因此该整数的实际占64位,第32位的1不是符号位。
因此binVal5的值等于2的31次方 + 2 + 1
*/
long binVal5 = 0B10000000000000000000000000000011L;
System.out.println(binVal4); // 输出-23
System.out.println(binVal5); // 输出2147483651
八进制:0-7
//前缀为0
```java
//以 0 开头的整数值是八进制的整数
int i=065; //53
逢8进1
7+1=10 27+1=30 77+1=100
十六进制:0-9 a-f 前缀为0x
十六进制的整数以 0x 或者 0X 开头
12a; //error,既不是整数也不是字符串
//以 0x 或 0X 开头的整数值是十六进制的整数
0x12a; //298
9+1=a a+1=b f+1=10
39+1=3a 3f+1=40 99+1=9a
9f+1=a0 af+1=b0 ff+1=100
进制的转换
- 十进制转二进制(八进制,十六进制) 除2后将余数从下向上排
13转二进制结果为1101 - 二进制转十进制
- 十进制的小数转二进制(了解) 乘2取整
(1)如0.125
0.125×2=0.25 0
0.25×2=0.5 0
0.5×2=1 1 所以0.125的二进制为0.001
(2)123.125 分开算(123➗2算写到整数部分,0.1252写到小数部分) - 二进制转八进制、十六进制
1101010——八进制
001 101 010 结果为 0152
1101010——十六进制
0110 1010 结果为0x6a
成员变量和局部变量
局部变量:在使用之前必须先赋值
成员变量:在创建对象时,分配内存存放类的数据,初始化有默认值
-
byte,short,int,long 默认为0;
-
float 默认0.0
-
char 默认’/u000’
-
boolean 默认false
-
引用类型 默认null
//类体中只能定义变量和方法,语句不能放类体中
int x;
x=20; //error
int x=20;
//成员变量和局部变量可重名
标识符
用来给类,变量,方法等起名的符号
组成:a-z A-Z 0-9 _ $ 各个国家的文字(后两个不建议使用)
规定: 不允许使用单独的下画线(_)作为标识符
合法性:
- 首尾不能是数字
- 不能为关键字和保留字。
Java 的所有关键字都是小写的, TRUE、 FALSE 和 NULL 都不是 Java 关键字。
goto 和 const 被称为保留字 。保留字的意思是,可能在未来的 Java 版本中使用这两个关键字;不仅如此, Java 还提供了三个特殊的直接量: true、 false 和 null; Java 语言的标识符也不能使用这三个特殊的直接量。
int boolean; //error
- 不能包含空格
- 不能包含@、#等其他特殊字符。
String er@="he"; //error
Java 语言是区分大小写的,因此 abc 和 Abc 是两个不同的标识符。
int Class; //正确的
注释
单行注释: //
多行注释: 使用"/* “和”*/"
文档注释: /** */
如果编写 Java 源代码时添加了文档注释,然后通过 JDK 提供的 javadoc 工具可以直接将文档注释生成一份系统的 API 文档。