1.注释
单行注释——//
多行注释——/* */
1 public class Main { 2 public static void main(String[] args) { 3 //这是一个单行注释 4 5 /* 6 * 这是一个多行注释 7 */ 8 } 9 }
2.数据类型
整型
在Java中,数字均为有符号整数,不存在无符号整数,数字在计算机中可以有三种编码方式:
原码:最高位为符号位,其余位为数字的绝对值的二进制表示。
[1]原=[0000 0001]原 [-1]原=[1000 0001]原
反码:最高位为符号位,其余位如果数字为正数则为其原码值;如果数字为负数则在其原码基础上按位取反。
[1]反=[0000 0001]反 [-1]反=[1111 1110]反
补码:最高位为符号位,其余位如果数字为正数则为其原码值;如果数字为负数则在其反码技术上加1.
[1]补=[0000 0001]补 [-1]补=[1111 1111]补
基于简化CPU硬件设计的考虑,将减法运算器整合到加法运算器中,因此,在计算机中,数字基本是以其补码的形式进行存储的。
对于由a位二进制位表示的数字,0<=m<2(a-1),0<m<2(a-1),m-n=m+2(a-1)-n-2(a-1)。其中2(a-1)-n为-n的补码。
对于有符号整数,只有在两个相同符号的数进行加法操作的情况下,才会产生进位操作。而如果把符号位也按照普通的二进制位参与到计算中,如果只有次高位有进位操作或只有符号位有进位操作,表示结果的数值已经超过了a位二进制数可以表示的数值范围。
在书写数字时,可以以0x前缀使用十六进制表示数字,以0前缀使用八进制表示数字,以0b前缀使用二进制表示数字(Java7+),使用十进制表示数字。
byte:
使用1字节存储数字。
short:
使用2字节存储数字。
int:
使用4字节存储数字。
long:
使用8字节存储数字。
浮点型
在Java中,浮点数以IEEE754规定的浮点数表示法为标准存储浮点数,该表示法是一种科学计数法,用符号、指数、尾数来表示。
float:
使用4直接存储数字,以1位二进制位为符号域,8位二进制位为指数域,23位二进制位为小数域,指数偏移量为127。
double:
使用8直接存储数字,以1位二进制位为符号域,11位二进制位为指数域,52位二进制位为小数域,指数偏移量为1023。
Double类中存在三个特殊的常量值,Double.POSITIVE_INFINITY-正无穷大,Double.NEGATIVE_INFINITY-负无穷大,Double.NaN-非数字,在进行相应的验证时,需要调用相应的方法进行验证。
字符型
在不同的编码集中,字符的编码方案各不相同。
代码点:指与一个编码表中某个字符对应的代码值。
代码单元:在基本的多语言级别中,每个字符用16位表示,通常被称为代码单元。
char:
在Java中,char类型用UTF-16编码描述一个代码单元,其中辅助平面内的字符需要一对char来表示。在JAVA5之后,开始支持增补字符集。
Unicode规范涉及两个步骤:
- 定义一个规范,给所有的字符指定一个唯一对应的数字。
- 将字符对应的数字保存在计算机中。
在Unicode中,代码点被分为17个平面,每个平面包含65536个码位。第一个平面称为基本多文本平面,其余平面被称为辅助平面。在基本多文本平面内,从U+D800到U+DFFF之间的码位区段是永久保留,不映射到字符。
UTF-16中,辅助平面内的字符被编码为一对16比特长的码元,称为代理对。第一部分称为高位代理或签到代理,码位从U+D800到U+DBFF。第二部分称为地位代理或后尾代理,码位从U+DC00到U+DFFF。
转换方式为:
- 将字符值减去0x10000,结果范围0x0000到0xFFFFF。
- 将结果的高10位与0xD800做逻辑或运算,低10位与0xDC00做逻辑或运算。
- 将两部分组合起来就是该字符值的UTF-16编码。
UTF-8使用一个字节或两个字节或三个字节来编码Unicode。
0xxxxxxx,使用一个字节表示一个Unicode代码点,可表示128个字符。
110xxxxx 10xxxxxx,使用两个字节表示Unicode代码点,可表示2048个字符。
110xxxxx 10xxxxxx 10xxxxxx,使用三个字节表示Unicode代码点,可表示65536个字符。
EF BB BF UTF-8
FE FF UTF-16/UCS-2,little endian
FF FE UTF-16/UCS-2,big endian
FF FE 00 00 UTF-32/UCS-4,little endian
00 00 FE FF UTF-32/UCS-4,big endian
布尔型
boolean:
用于逻辑运算,有true和false两个值。
参考资料:
http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html
http://www.cnblogs.com/effulgent/archive/2011/10/30/two_s_complement.html
http://blog.csdn.net/shangboerds/article/details/7498317
http://www.cnblogs.com/kingcat/archive/2012/10/16/2726334.html
http://www.ibm.com/developerworks/cn/java/j-unicode/