首页 > 其他 > 详细

多重转型

时间:2015-03-27 09:20:14      阅读:93      评论:0      收藏:0      [点我收藏+]
import java.util.*;
public class Sixth{
        public static void main(String[] args){
                System.out.println((int)(char)(byte)-1);
        }
}

会输出多少?

-1?

最终为65535

这里面牵涉到了整数类型之间的强制类型转换

byte,short,int之间的转换还是好理解的

主要是跟char的转换,因为char类型没有负数

一条规则(从较窄整数类型到较宽整数类型的符号扩展行为):

如果最初的数值是有符号的,就执行符号扩展;如果它是char,那么不管它将被转换成什么类型,都执行零扩展。

新get到的技能:

1、将char转型为一个宽度更宽的类型,并且不希望有符号扩展

 

int i = c & 0xffff;//0xffff是int

2、将char转型为一个宽度更宽的整形,且有符号扩展

int i = (short)c

short和char的宽度一样

3、将byte无符号扩展转型为char

char c=(char)(b & 0xff);//0xff是int

4、将byte有符号扩展为char

char c = (char)b;

 

多重转型

原文:http://www.cnblogs.com/qionghua520/p/4370803.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!