由数字、字母、下划线、美元符号$、不能以数字开头。
Java标识符大小写敏感,没有长度限制,可以为标识符取任意长度的名字,但关键字不能作为标识符。
命名约定
类、接口:通常使用名词,且每个单词的首字母要大写
方法:通常使用动词,首字母小写,其后用大写字母分隔每个单词
常量:全部大写,单词之间用下划线分隔
变量:通常使用名词,首字母小写,其后大写字母分隔每个单词,避免使用$符号
所谓的变量就是在内存开辟一个指定大小的存储区域。
Java的每一个变量都属于一个类型(type),声明变量时,将变量所属的类型放在变量名前以空格隔开,以分号结尾。
列如:数据类型 变量名 = 变量值;------->int args = 5;
Java是强类型语言,在使用变量前,必须先声明并且初始化才能使用,变量有明确的类型,而且变量名不能重复。
变量的作用域
在声明处开始,到代码块结束为止。离开变量的作用域,变量将被回收。代码块一般指{}里面的范围。
十进制(Decimal):逢十进一,基数为10个:0 ~~ 9 ,权为10^n(10的n次幂称为权)
二进制(Binary):逢二进一,基数为2个:0 ~~ 1 ,权为2^n
八进制(Octal):逢八进一,基数为8个:0 ~~ 7 ,权为8^n
十六进制(Hexadecimal):逢十六进一,基数为16个:0 ~~ 9,A,B,C,D,E,F (A=10,B=11,C=12,D=13,E=14,F=15) ,权为16^n
java内部只有二进制补码,计算机内部数据以二进制补码表示。补码的最高位是符号位。
列如:145转成二进制数:
先将1到128的每个2^n写出来,然后将145减去128,在128下面标记为1,再将相减的数17再减去16,在16下面标记为1,
相减得1,再减去1得0,在1下面标记1,其他没有标记的都为0,这样二进制就出来了。
145
128 64 32 16 8 4 2 1
1 1 1
1 0 0 1 0 0 0 1
所以145的二进制数为10010001,这种方法很快,很方便,不用像一步步除二那样麻烦。
十进制整数转换成n进制整数通常采用除n取余法,小数部分乘n取整法。
如:将(30)十进制转换成八、十六进制数
8| 30 ……6 ------最右位
3 ------最左位
∴ (30)10 =(36)8
16| 30 …14(E)----最右位
1 ----最左位
∴ (30)10 =(1E)16
八进制转换成十进制采用方法:把这个八进制的最后一位乘上8^0,倒数第二位乘上8^1,……,一直到最高位乘上8^n,然后将各项乘积相加的结果就它的十进制表达式。
把八进制36转换为十进制
(36)8=3*8^1+6*8^0=24+6=(30)10
十六进制转换成十进制采用方法:把这个十六进制的最后一位乘上16^0,倒数第二位乘上16^1,……,一直到最高位乘上16^n,然后将各项乘积相加的结果就它的十进制表达式。
把十六制1E转换为十进制
(1E)16=1*16^1+14*16^0=16+14=(30)10
以0开头的,直接将二进制转为十进制。
以1开头的,按位取反,末尾加1,再转为十进制,再加负号。
将00010101转为十进制数:
1*2^0+0*2^1+1*2^2+0*2^3+1*2^4=21
对于整数,从低位到高位将二进制数的每三位分为一组,若不够三位时,在高位左面添0,补足三位,然后将每三位二进制数用一位八进制数替换,小数部分从小数点开始,自左向右每三位一组进行转换即可完成。例如:
将二进制数1101001转换成八进制数,则
(001 101 001)2
| | |
( 1 5 1)8
( 1101001)2=(151)8
将每位八进制数用三位二进制数替换,即可完成转换,例如,把八进制数(643.503)8,转换成二进制数,则
(6 4 3 . 5 0 3)8
| | | | | |
(110 100 011 . 101 000 011)2
(643.503)8=(110100011.101000011)2
将二进制数的每四位用一个十六进制数码来表示,整数部分以小数点为界点从右往左每四位一组转换,小数部分从小数点开始自左向右每四位一组进行转换。
将每一位十六进制数用四位相应的二进制数表示,即可完成转换。
例如:将(163.5B)16转换成二进制数,则
( 1 6 3 . 5 B )16
| | | | |
(0001 0110 0011. 0101 1011 )2
(163.5B)16=(101100011.01011011)2
计算机使用补码来表示负数,正数的补码就是其本身的二进制数,负数的补码是正数的补码按位取反再加1获得的(~n+1=-n)。
--|补码的运算是封闭的,运算的结果必须小于补码的最大范围,超出范围就溢出,则数值将没有意义。
--|4位二进制补码最多能表示2^4(16)个数,数的范围是-8~7
--|8位二进制补码最多能表示2^8(256)个数,数的范围是-128~127
--|16位二进制补码最多能表示2^16(65536)个数,数的范围是-32768~32767
--|32位二进制补码最多能表示2^32个数,数的范围是-2G~2G-1
java中的数据类型分为两大类,基本数据类型和引用类型,基本数据类型有八种,引用类型以后再描述。
整数类型包括:byte、short、int、long,都是有符号(补码)整数。
浮点型包括:float、double
字符型包括:char
布尔型:boolean
java中整数的字面量默认是int类型,所以整数在运算时通常是默认转成int类型再做运算。
在给byte,short赋值时要注意该类型取值范围。
在给long赋值要注意在末尾加上“L”或“l”,因为整数默认int类型,所以用L标记为long类型。
float,double用于表示小数的数据类型。浮点型默认的字面量的类型是double。
float有32位(与int相同),int类型能够表示数值范围比float的小,但是int类型的数据表示精度比float高。
double精度比int高,但不如long;double表示的范围远大于long。
在给float类型赋值要在末尾加上“f”或“F”。
char类型是无符号的16位整数,最小值为0,最大值为2^16-1,在程序中为一个字符赋值,字符字面量使用单引号,可以为char赋值的有字符、数字、符号。
表示:真(true)/假(false)。一般用于判断语句块中。
正方向---------------->
char --> int --> long --> float --> double
byte --> short --> int --> long --> float --> double
<-------------------负方向
自动类型转换(隐式类型转换):是自动发生,一般不用处理,规则是,符号位会自动扩展,负数补1,正数补0。整型转换到浮点型会损失精度。
强制类型转换(显示类型转换):会发生溢出或者损失精度,注意取值范围。