标签:小常识 系统 过程 char system 计算 自增 style 求和
一、模问题
1.负数模整数,结果为负数,例:-5%2 = -1;
2.正数模负数,结果为正数,例:5%(-2)=1;
3.负数模负数,结果为负数,例:-5%(-2)=-1;
4.0模任何数结果为0,例:0%5 = 0;
二、自增、减问题
1.
三、强制类型转换
1.System.out.println(‘a’+0),输出=97;
2.任何以整数出现的数据,默认都是int类型
如:byte a= 4; 其中4就是一个int类型,但由于在编译过程中,编译器会自动判断 4 是不是在byte 范围内,若是,会自动舍弃前三字节,相当于系统自动进行强制类型转 换,将int整数4转换为byte类型。
3. byte a=4,b=3,c;
c=a+b,编译出错,因为a和b虽然是两个byte变量,但在进行a+b求和时,编译器会自动把byte类型数据转换成int类型,故a+b的结果会是一个int型,而将一个int型赋值给byte,就会出错,因为两个类型的字节不同,int是4个字节,byte是一个字节,字符是2个字节 char ch =‘你‘是对的,因为一个汉字是两个字节。
总结:1.两个变量相加,先对类型进行提升,然后运算,再将运算结果赋值。
2.两个常量相加,先计算常量数值,然后判断是否满足类型范围,再赋值。
四、自增/减问题
1. byte i=0,j;
i=i++;输出i等于0;首先,系统分配一个临时缓存区,假设为temp,首先temp=i=0,然后i自增变成1,然后i=temp,所以i的结果为0而不是1.
i=++i;输出i等于1;首先,i自增变成1,然后系统分配一个临时缓存区,假设为temp,temp=i=1,然后i=temp,所以i的结果为1而不是0.
五、赋值运算
1.byte i=3,j;
i+=1;和 i = i+1的区别,1)i = i + 1;会出错,而 i+=1;不会,因为 i +=1相当于是 i =1,系统会判断1是不是在byte范围内,是进行的一次计算,而 i = i+1;是两次计 算。就有字节不同的问题。
2 )+=会自动进行byte类型转换,而=的左边会自动进行类型提升,即变成int型。所以一个通过,一个不能通过。
3 ) i += j;也不会出错,因为编译器内部对于+=默认会有字节转换,即将j转换成byte类型。
六、小问题:
1.‘a’+0 =97,编译器会自动把字符变成int型的数值,即‘a‘变成整数97。
2.‘7’-‘0‘= 7
3.负数变成二进制数,就是负数的绝对值的二进制数取反加1,负数的二进制最高位为1,二正数为0;
标签:小常识 系统 过程 char system 计算 自增 style 求和
原文地址:http://www.cnblogs.com/Aftersoon-sun/p/6644971.html