解决方案 »
- java中汉字排序
- JAVA 调试出现异常,求解
- 序列化或反序列化时,需要readObject(ObjectInputStream stream)和writeObject???
- 如何在java中执行zip压缩命令
- 请教一个面试题,在线等(着急)
- 刚学JAVA,请大家指点一下
- jbuilder9怎么生成.exe,才能带jvm
- 怎样使UltraEdit可以编译Java?
- 请问:哪种工具可以制作安装程序,安装程序是基于java的或是能在aix运行?
- 哪位大侠告诉我APPSERVER 4.5 的注册码??一定给分!!
- java awt 编程中相对路径问题
- swing是否可以实现SWT中StackLayout的效果?或多组件堆叠,控制某个组件的显示或隐藏,如何实现?
而是byte符号扩展转换到int,然后再从int转换到char。
b在内存中是以补码的形式存贮的:
1001 1100如果执行char c=(char)b;
如3楼企鹅先生所说:b要先变为int,这时增加的位全要用b的符号位填充(这就是符号扩展),变为:
1111 1111 1111 1111 1111 1111 1001 1100下步是强制类型转换,只保留了最低的两个字节:1111 1111 1001 1100。如果执行char c=(char)(b&0xff),同样b要转为int ,同时符号位扩展:
1111 1111 1111 1111 1111 1111 1001 1100再与0xff想与,
1111 1111 1111 1111 1111 1111 1001 1100
&0000 0000 0000 0000 0000 0000 1111 1111
-----------------------------------------
0000 0000 0000 0000 0000 0000 1001 1100
再强转为char,得: 0000 0000 1001 1100。这是一个正数。