按位异或:符号(^)对于两个二进制数,相同位为0,不同位为1。例如:0010^0011结果为0001
int b=0;
for(int a:A){
b^=a;
}
return b;
//此代码可以找出数组A中只出现一次,其余元素都出现两次的元素。
按位与:符号(&)对于两个二进制数,对应位都为1则为1,对应位只要有一个0结果就为0。例如:1101&0100结果为0100。
num=num&(num-1);
//将二进制num中最右边的1变为0。不断循环这个操作可以将num变为0。
二进制左移:
将二进制的所有数向左移动一定的位数,右边空出来的补0。
例如:1010左移两位得到101000。1010的十进制数是10,101000的十进制数是40。左移一位相当于原数乘以2,左移两位相当于乘以四。
二进制右移:
将二进制的所有数向右移动一定的位数,对于无符号的,左边空出来的补0。对于有符号的左边空出来的用符号位(最高位)填充。
例如:无符号数10101010右移两位得到00101010。10101010的十进制数是170,00101010的十进制数是42,右移一位相当于除二(向下取整)。右移两位相当于除四。
有符号数10101010(1表示负数)右移两位得到11101010。因为有符号的二进制数右移,符号位的复制会导致数值变化规律不同于无符号数简单的除法规律。
Math.pow(2,3); 函数是运算2的3次方等于8。
//通过此代码可以实现在没有第三介质的情况下交换数组AB的第0和第1的值。
//AB[0]=1 0001
//AB[1]=2 0010
AB[0]=AB[0]^AB[1]; // 0011=3
AB[1]=AB[0]^AB[1]; // 0001=1
AB[0]=AB[0]^AB[1]; // 0010=2
求两个数中的最大数:
max = (a + b + Math.abs(a - b)) / 2;
//Math.abs()函数是求绝对值函数
//当a>b时a—b的绝对值=a—b,所以max=(a+b+a-b)/2等于a
//当a<b时a-b的绝对值=b-a,所以max=(a+b+b-a)/2等于b
字符串分割方法split():
import java.util.Arrays;
public class demo01 {
public static void main(String[] args) {
String[] a={"hello,man,cheng,c"};
//for循环遍历数组a
for (int i = 0; i < a.length; i++) {
//用splist()方法根据,分割数组a
String[] c=a[i].split(",");
//分割后的数组a被分成4个数组
for (String b:c
) {
//打印分割后的4个数组
System.out.println(b);
}
}
}
}
结果如下:
//用splist()方法根据\\s,\\s表示空格,\\s+表示一个或多个空格分割数组a
String[] c=a[i].split("\\s+");
回文数:
int cur = 0;
int num = x;
while(num != 0) {
cur = cur * 10 + num % 10;
num /= 10;
}
//本代码可以检验数字的反转,当输入x=121时经过while循环可以得到cur=123,当输入x=456时,经过while循环可以得到cur=654。
c.toCharArray();
//toCharArray方法是String类中的方法可以将字符串拆分成单个的数组。
str2.charAt(1);
//取字符串中下标为1的字符;
Integer[] numbers = {5, 2, 8, 1, 9};
Arrays.sort(numbers, Collections.reverseOrder());
for (Integer a:numbers
) {
System.out.print(a);
}
//对数组进行降序处理
int[] a=new int[];
Arrays.sort(a);
//对数组a进行升序处理。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Arrays.sort(str1,(a,b)->(b+a).compareTo(a+b));
Arrays.sort()是一个数组排序,(a,b)->(b+a).compareTo(a+b)是一个 Lambda 表达式充当了自定义的比较器。如果 a
是 "abc"
,b
是 "def"
,那么 b + a
就是 "defabc"
,a + b
就是 "abcdef"
。通过 compareTo
方法对这两个拼接后的字符串进行字典序(也就是字符的 ASCII 码顺序)的比较。
Integer.bitCount()
是 Java 中Integer
类提供的一个静态方法,用于统计一个整数的二进制表示中1
的个数