int width = 0, height = 0;
width = img.getWidth();
height = img.getHeight();
rgbOutput = new int[(width << 1) * (height << 1)];

解决方案 »

  1.   

    (width << 1) * (height << 1) 与 (width * 2) * (height * 2)、4 * width * height 是一个意思!感觉有点故弄玄虚!
      

  2.   

    width < < 1   width 的二进制表示 ,左移一位
    这是移位运算符
      

  3.   

    int width = 0, height = 0; 
    width = img.getWidth(); 
    height = img.getHeight(); 
    rgbOutput = new int[(width < < 1) * (height < < 1)];
    就是将宽度和高度分别左移以为后 相乘 得到该int类型的数组的大小位移是二进制码操作 那么他是运算性能最快的 建议楼主看一看关于位移方面的资料
      

  4.   

    “<<”, “>>”, “>>>”在Java中是左移、有符号右移和无符号右移运算符。位移运算符只对int值进行操作,如果不是int,编译器会报错。在Java中,一个int的长度始终是32bit,也就是4个字节。比如t>>>n的含义就是把整数t右移n位,高位补上零。所以如果t是个负数,最高位是1,那么经过无符号右移之后,就成了一个正数。比如 -1>>>31=1。值得注意的是,虚拟机在进行位移操作之前,把位移的位数(即“t>>>n”中的n)对32取了模,左移或右移33位等价于移动1位,而且无论任何数,使其移动32位,其值都不会发生变化。因为在虚拟机看来,t>>>32与t>>>0是等价的(同理t<<32等价于t<<0)。移动64位也是如此,以此类推。那如果移动的位数 n 是负数怎么办呢?。这时虚拟机会先让n对32取模,变成一个绝对值小于32的负数,然后再加上32,直到 n 变成一个正数。比如(k>>>-1) ==> (k>>>31); (k>>-43) ==> (k>>-11) ==> (k>>>21)。
    别处贴来的……
      

  5.   


    应该速度会比(width*2)* (height*2)、4* width* height快一点,呵呵
      

  6.   


    不管是不是故弄玄虚 看到大家说可读性问题 我想问一句 作为一个职业程序员 左移运算符<<难读吗?如果觉得这个都难读 改行吧
      

  7.   

    http://hi.csdn.net/attachment/200909/8/3128219_1252395215jIlU.jpg