1、Java标记
1)变量
<1>变量是一个代词,例如:你、我、他
<2>java程序中变量时内存汇总的一块标记
<3>声明变量时要声明变量的类型(因为java语言是强类型的语言)
a = 0; (错误) |--int a = 0; (正确)
<4>变量在使用之前一定要声明
System.out.pritnln(c); //变量c还未声明
int c = 0;
System.out.println(c); //变量c已经声明
<5>在同一个作用域(最里面的大括号内(同一个方法中(命名内部类、内部方法除外)))不能重复声明变量
// 以下对象都是在同一个方法中
(1)int a = 0; double a = 1.4 (a在同一个作用域中已经声明,后面属于重复声明)
(2)int a = 0; double b = 1.4
(3)int a = 0; if(true){ int a = 4;} (因为前面定义a(后称前a)的作用域是方法中,而判断if中定义的a属于前a的作用域,所以属于重复声明变量)
//变量在使用前一定要声明
(4) if(true){ int e = 0; System.out.println(e); //在同一个作用域中 变量e已经定义 }
System.out.println(e); //超出作用域,变量e定义在判断if内部,因此在外面不能使用变量e
<6> 变量在使用之前一定要初始化
(1) 如果没用初始化自定义的变量就使用它,在编译期间就会报错
(2)在声明变量时就赋初值 int a = 0;
(3)先声明后赋值(初始化) int a; a = 3;
2)常量 ( 字面量、常量、直接量)
2、进制 (进制也叫进位制,是人们定义的一种记数的方式)
1) 位权
数制中每一固定位置对应的单位值成为位权
2)二进制(用0或1表示的数据,机器语言就是二进制)
例如:1 1 1 0 1 1 0
3) 十进制(我们现实中使用的数据基本上都是采用十进制数据的)
例如:货币的面值等等
4)进制之间的转化
<1>二进制转换成八进制
三位二进制数表示1位八进制(不够的,前面补0)
例如:001 100 101 001 = 1; 100 = 4; 101 = 5;
所以1100101(2) = 145(8)
<2>同理八进制转换成二进制
每一位八进制数用三位二进制数表示
例如:145 1 = 001; 4 = 100; 5 = 101;
所以145(8) = 1100101(2)
<3> 二进制数装换成十六进制数
四位二进制数表示一位十六进制数(不够前面补0)
例如:1001 0010 1001 = 9; 10 = 2;
所以10010010(2) = 92(16)
<4> 同理十六进制转换成二进制
一位十六进制数由四位二进制数表示
例如:93 9 = 10001; 3 = 0011;
所以 93(16) = 100010011(2)
<5> 二进制转换成十进制
(1) 正数:整数部分按权位展开,小数不断乘于2,结果取小数部分,整数部分为结果集
(2)负数:按位取反,末位+1,转换成十进制
<6>十进制数转换成二进制数
(1)正数:除2法
(2)负数:先去绝对值,按位取反末位+1
4) java四位进制运算具有封闭性(有进高位舍弃)(只取四位)
<1> 原码 0111(正数的原码和补码相同,负数只能由补码表示)
<2> 反码 1000(反码,相对于原码按位取反)
<3> 补码 0111(正数的原码和补码相同) 二进制负数补码转化为10进制数原码:先按位取反再+1
<4> 计算机中的数由补码表示,补码运算具有封闭性,多少位补码运算,结果还取多少位补码
<5> 二进制中高位为1的补码为负数
PS:在java中所有的literal都用二进制补码表示,补码运算具有封闭性。
补码运算具有边界的危险,可能发生溢出导致结果错误