码迷,mamicode.com
首页 > 编程语言 > 详细

Java基础小常识

时间:2017-03-30 11:25:42      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:小常识   系统   过程   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;

 

Java基础小常识

标签:小常识   系统   过程   char   system   计算   自增   style   求和   

原文地址:http://www.cnblogs.com/Aftersoon-sun/p/6644971.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!