我都有我的BLOG了,心情真好

来源:互联网 发布:stm32 网络接口芯片 编辑:程序博客网 时间:2024/04/30 02:54

哈哈!!!

今天天气不错,最近有想找个BLOG,来写点东西,于是我就找到CSDN,申请还真是方便~比JAVACN好多了!!

       一个不错的开始,不过还是不是很习惯这个东西,感觉好麻烦的所。

       TAB用起来要跳到下个个框框了面,这点很不爽。

搞了半天,我发现可以用缩近量来搞定TABLE功能。

学习的过程中,要把心得记录下来:

0.最近看的一本书是JAVA I/O,全英文的,看起来还真是TMD麻烦。

1.首先是关于JAVA里面变量的转换问题,上面讲到的一些东西是我不知道的:JAVA里面的INT基本是32位的。虽然也有BYTE、SHORT 、LONG,等这些类型,不过关于BYTE和SHORT就有点问题了,虽然JAVA里面定义了这两种类型,不过实际是储存他们的时候都是按照INT来储存的:

int i = 42;
short s = i;//i是32位的,所以如果要把它转换成SHORT,必须要(SHORT)I;
byte b = i;//同样的道理;
Compiling these lines produces the following errors:
Error: Incompatible type for declaration.
Explicit cast needed to convert int to short.
ByteTest.java line 6
Error: Incompatible type for declaration.
Explicit cast needed to convert int to byte.
ByteTest.java line 7

也就是以32位的方式储存(还真是浪费空间),不但这样,而且这样也有问题:

byte b = 1 + 2;因为1,2都是INT 32位的,所以这也有问题,因为B是8位的,如果这样定义:byte b1=32;byte b2=32;byte b3=b1+b2;也有问题,虽然定义了B1,B2是BYTE,但是B1+B2这个语句里面,JAVA仍然把它当作32位来处理,所以要让JAVA把这个东西弄好,必须CAST,也就是B3=(byte)(B1+B2),是不是很郁闷?就是很郁闷啊~但是为什么只有变量才出错,常量就不出错呢?因为常量一个INT是32的话,他就固定的位数了,就只有32,也就是8位,固定的,不变的,所以不出错,但是一个变量INT B=32的时候,虽然32是8位,实际上也可以B=1231321,实际的位数是要变的,所以byte b3=b1+b2,JAVA就只能把他当32位来处理,而不能当成BYTE的8位,所以要出错。我不知道这样理解有没有问题,说错没有,不过是我现在这样想的了。

2.

for (int i = 0; i < b.length; i++) {
b[i] = (byte) System.in.read();
}

这地方我也想了很久,想了半天,听达人说了,才知道,read()比如你输入了12313这几个数字,然后READ就一个一个地自动的给你返回,返回一次i就加一就是这个样子的~。就是先返回1,然后I加一,然后返回2,然后I加1,知道你第一次的输入完了,才停止,我发现我越说越不清楚了,不说了。下次我真正理解了再来把这个问题投清楚

总的意思就是说,JAVA里面没有真正的BYTE,SHORT,他们都是以INT32位来存储的。就是这样,在CAST的时候,实际上是以b = b & 0x000000FF;这样的方式来弄的(对于BYTE来说),对于SHORT,就是b = b & 0x0000FFFF了。

原创粉丝点击