基本数据类型
常量:运行过程中数据不可变
变量:运行过程中数据可被改变
标识符:如类型名、变量名、函数名
1、整型
long 4字节 范围:无符号 0-2的32次方-1 有符号 -2的31次方 - 2的31次方-1
short 2字节
int 通常是4个字节,但不同的平台长度不同
signed 有符号 代表最高位当符号使用
unsigned 无符号 代表最高位当数字使用
常量: 234 默认为整型 (而不是char或short 这点需要注意)
234L long类型 (长整型)
234U 无符号int类型
234UL 无符号long型
进制:
二进制 在代码编写 无法直接表达 补充:0b101010110在代码中时无法表达的,很大一部分人都不注意这一点
十进制 123
八进制 0123 0 作为区分
十六进制 0x123 0x 作为区分
进制转换: 十进制转其它进制 用10进制数除以进制,余数是转换后的数,商继续除进制,又有余数向前排列,直到商为0止
其它进制转十进制 用前面的位乘进制数,和后面的位相加,就变成了后面位的十进制,直到最后一个位计算结束
例子:
?下面的数字哪些是长整型
721387821387983 0L 0xFFFFFFFFFFF 01234234252341324
0L是长整型,其它都默认int
?下面哪些常量的写法是正确的
2341234 0x9fkw8sw 032913 0432
032913 八进制中,逢8进一,所以不可能包含8以上的数
0x9fkw8sw 八进制中,逢16进一,所以不可能包含16以上的数
有符号和无符号内存结构:
所有的数据结构在计算机中都是以补码方式存储
码原: 能够代表数据的2进制
反码: 原码2进制数取反
补码: 在反码的基础上+1
例: 7 0b0000 0111 正整数 原码就是补码
-7 0b0000 0111 //7
0b1111 1000 //反码
0b1111 1001 //补码 -7 也是249 有符号
总结:原码是为了方便人认识数字的习惯而定义的表现方式,例如上面的例子: 正数7的原码的二进制数是0b0000 0111 -7的原码的二进制数也是0b0000 0111 ,而它们的补码是不同,补码是计算机真实存储数据时的格式。
变量:
定义: 类型 变量名[=值];
类型的作用,指定内存的大小,指定当前变量保存的数据类型,而变量只是这块内存的别名
初始化: 即分配内存的同时赋值
2、实型
double 双精度 8字节 小数点后15-17位
float 单精度 4字节 小数点后6位
常量 :
2.3 默认为double
2.3 单精度
2.3e+0 指数 2.3*10的0次方
3、字符
char 1字节 本质是无符号整型 0-255
常量 ‘a’ 一个字符 本质是ASCII编码,一个字节
字符:用单引号括起来的一个符号
字符串:用双引号括起来的字符序列,以\0结束(字符串是常量)
例:“asda” 有5个字符,包含一个\0
转义符:
单引号 ‘ \' ’ 是一个字符
双引号 ' \" '
tab 键 ‘ \t ’
退格键 ‘ \b ’
警铃 ' \a '
回车 ‘ \r ’
换行 ' \n '
8进制 '\ddd' 必须是三个位 d代表一个8进制位的数
16进制 '\xhh' 必须是2个位 h代表一个16进制位的数
字符集:
ASCII 0-127数,代表要绘制的字符图片的编号 '\0'就是0编号
'\0' == 0==NULL
GBK 中国大陆字符集
BIG5 台湾 \香港、澳门、新加坡、美国
uncode utf-8 qt android等都使用utf-8字符集
utf-16
utf-24
utf-32
'A' ==65 == '\x41' ='\101' == 0x41 == 0101
字符的算术运算
'A'+2;
'8'+2; //56+2
8+2; //8+2
"8"+2 //地址+2 字符串本身是第0个字符的地址 指令参数输入的是字符串
"asdf" 值是a所在内存的地址 注意:字符串是常量,不能通过该内存地址修改字符串的值