当然实现的方法是比较多的,这里给出一种:
成都创新互联专业提供成都主机托管四川主机托管成都服务器托管四川服务器托管,支持按月付款!我们的承诺:贵族品质、平民价格,机房位于中国电信/网通/移动机房,绵阳电信机房服务有保障!
//arr循环左移times次
function shiftArr(arr, times){
times = times%(arr.length);//考虑times大于等于length的情况
return arr.slice(times).concat(arr.slice(0, times));
//取出两个子数组然后连接
}
其他的思路有删除arr前若干个元素并添加到其末尾等(参考Array对象的方法)。
如有问题欢迎继续交流!
1)比如你有三个类,并打开了这三个类,名字暂且就叫A.java,B.java,C.java。这时你想快速在这三个文件间切换。
按ctrl+E,然后如果想到C.java,就再打个c,再回车一下就行了,其它同理。
2)自动补全。我自己的习惯是设置成Alt+/。在window(窗口)——preferences(首选项)——keys中搜索下Content Assist就知道它默认是什么了。
3)自动导入包。ctrl+shift+o。然后选择正确的包,虽然用2的方法也能导入,但是2的方法导的包可能不是你所想要的。
4)如果有红线,即ecliepse提示你有错误,按ctrl+1。比如上面的未导包,就会提示错误,这时也可以通过这个方法导包。
1.左移运算符
左移运算符用“”表示,是将运算符左边的对象,向左移动运算符右边指定的位数,并且在低位补零。其实,向左移n 位,就相当于乘上2 的n 次方,例如下面的例子。
public class data17
{
public static void main(String[] args)
{
int a=2;
int b=2;
System.out.println("a 移位的结果是:"+(ab));
}
}
运行结果
a 移位的结果是:8
分析上面的程序段:
首先从本质上来分析,2 的二进制是00000010,它向左移动2 位,就变成了00001000,即8。如果从另一个角度来分析,它向左移动2 位,其实就是乘上2 的2 次方,结果还是8。
2.右移运算符
右移运算符用符号“”表示,是将运算符左边的对象向右移动运算符右边指定的位数,并且在高位补0,其实右移n 位,就相当于除上2 的n 次方。
public class data18
{
public static void main(String[] args)
{
int a=16;
int b=2;
System.out.println("a 移位的结果是:"+(ab));
}
}
运行结果
a 移位的结果是:4
分析上面的程序段:从本质上来分析,16 的二进制是00010000,它向右移动2 位,就变成了00000100,即4。如果从另一个角度来分析,它向右移动2 位,其实就是除以2 的2 次方,结果还是4。
3.带符号的右移运算符
带符号的右移运算符用符号“”表示,是将运算符左边的运算对象,向右移动运算符右边指定的位数。如果是正数,在高位补零,如果是负数,则在高位补1,先看下面一个简单的例子。
public class data19
{
public static void main(String[] args)
{
int a=16;
int c=-16;
int b=2;
int d=2;
System.out.println("a 的移位结果:"+(ab));
System.out.println("c 的移位结果:"+(cd));
}
}
运行结果
a 的移位结果:4
c 的移位结果:-4
分析上面的程序段:
a 的值是16,转换成二进制是00010000,让它右移两位成00000100 即4。
c 的值是-16,转换成二进制是11101111,让它右移一位成11111011 即-4。
不是java任何语言都没有, 位运算中左移跟符号没有关系的, 因为最高位就是符号位
例如8位的byte中最高位如果是 1那就表示负数 如果是左移一位, 那么最高位就会丢掉, 最低位补0 1111 1111 1 就会变成 1111 1110