一. 变量不能重复声明:int a=10;int a=100;错误
二. 8种数据类型:
1.整形:(byte、short、int、long)
byte 的取值范围:-128~127(-2的7次方到2的7次方-1)
short 的取值范围:-32768~32767(-2的15次方到2的15次方-1)
int 的取值范围:-2147483648~2147483647(-2的31次方到2的31次方-1)
long 的取值范围:-9223372036854774808~9223372036854774807(-2的63次方到2的63次方-1)
2.浮点型(float、double)
float(单精度浮点型)取值范围:长度为4个字节
3.402823e+38~1.401298e-45(e+38 表示乘以10的38次方,而e-45 表示乘以10的负45次方)
double(双精度浮点型)取值范围:长度为8个字节
1.797693e+308~4.9000000e-324
浮点型的数据是不能完全精确的。
小数字面量默认都是double类型
如果要给float赋值,需要追加 f/F float f = 3.14f;
而给double赋值,加不加d/D区别不大 double d1 = 3.14d;
3.字符型(char):长度2字节
char 有以下的初始化方式:
char ch = ‘中’;
c = ‘\u4e2d’; // Unicode编码 - (汉字)
char ch = 1010; // 可以是十进制数、八进制数、十六进制数等等。
char ch = ‘\0’; // 可以用字符编码来初始化,如:’\0’ 表示结束符,它的ascll码是0,这句话的意思和 ch = 0 是一个意思。
c1 = 0; // 空白字符
char c1 = 48; // ASCII码 ‘A’=65 ‘a’=97 ‘0’=48
4.布尔型(boolean)
boolean 它的取值就两个:true 、false 。
5.基本类型之间的转换:
自动转换:
将6种数据类型按下面顺序排列一下:
double > float > long > int > short > byte
如果从小转换到大,那么可以直接转换,而从大到小,或char 和其他6种数据类型转换,则必须使用强制转换。
自动转换时
int–> float
long–> float
long–> double
float -->double without strictfp
可能出现精度损失
强制转换:如果要把大的转成小的,或者在short与char之间进行转换,就必须强制转换。
如果整数的值超出了byte所能表示的范围,结果将对byte类型的范围取余数。例如a=256超出了byte的[-128,127]的范围,所以将257除以byte的范围(256)取余数得到b=1;需要注意的是,当a=200时,此时除了256取余数应该为-56,而不是200。
将浮点类型赋给整数类型的时候,会发生截尾(truncation)。也就是把小数的部分去掉,只留下整数部分。此时如果整数超出目标类型范围,一样将对目标类型的范围取余数。
double m=3.17;
int n=(int)(m);
三。运算符
-
运算符左右两边类型是统一的
int i = 5 / 2; // 整除
若double d = 5 / 2.0;其结果为2.5 -
b++ 与 ++b 的不同:
如果把++放到左边,表示先把操作数加一,然后才把操作数放入表达式中运算。如果把++放到右边,表示先把操作数操作数放入表达式中运算,然后才把操作数加一。 -
位运算符:
与(&):两个二进制操作数对应位同为1 结 果位 才为1,其余情况为0;
或(|):两个二进制操作数对应位只要有一个为1 结果位 就为1,其余情况为0;
非(~):一个二进制操作数,对应位为0,结果位为1;对应位为1,结果位为0;例:整数 d = 1 计算:(~d):0000 0001变为1111 1110,这是内存中的保存形式。我们读取的十进制是根据原码来读取,而在内存中,数值都是以二进制补码形式存储的。正数的补码和原码一样,负数的补码得到过程:原码 转 反码 再转 补码,然后计算取反后的补码,其真值就是结果。
即结果等于: 内存中的保存形式—>反码—>补码
正数的补码就是其本身,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
异或(^): 两个二进制操作数对应位相同为0,不同为1;
位移位运算(<< >> >>>):
<<和>>:
无符号位移>>>:得到二进制码,右移后左边最高位添0;
例:int num = -1
num>>>1:先按其绝对值大小表示出二进制即其原码,然后得到反码,然后得到补码,此时补码即得到了-1在计算机中的二进制表示方法。然后右移后左边最高位添0,即最终为0111 1111 1111 1111 1111 1111 1111 1111
4.三目运算符:
表达式:
variable x = (expression) ? value if true : value if false
b = (a == 10) ? 20 : 30;
三目运算符的规则是,先对逻辑表达式expression进行求值,如果逻辑表达式返回true,则返回第二个操作数的值,如果逻辑表达式返回false,则返回第三个操作数值。 -
逻辑运算符:
||:若左边为真则不会再判断右边的语句 -
关系运算符:
关系运算符用来判断两个变量或者常量的大小,关系运算符的结果是一个boolean值( true或者false)。