1. 位与、位或
1.1 == 运算符的优先级高于位与&,要注意加括号
eg: if((size & 1) == 0)
1.2 利用 位与& 判断某一位是否为1(eg:Q56)
int digit;
(digit&1) == 1,则digit的最低位为1
(digit&1) == 0,则digit的最低位为0
判断其他位:digit = digit >> 1; 或1向左移位
1.3 (n-1)& n
把n的二进制表示中最右边的1变成0
1.4 只有1&1=1(与同或区分)
0 & 0 = 0;
1.5 只有0 | 0 = 0(与异或区分)
1 | 1 = 1
2. 关于异或^
按位进行异或运算:相同的数异或,结果为0;不同的数异或,结果为1
一个数与0异或,结果为本身
a ^ b ^ c ^ b ^ a,结果为c(可见Q56)
更多关于位运算,可参看
https://blog.csdn.net/xwu_09/article/details/78285785
3. String相关
3.1 split()
使用一个或多个空格分割字符串
String s = "This a blue blue sky";
String[] strs = s.split(" ");//错误,只能用来分只有一个空格的
String[] strs = s.split("\\s+");//正确
String s = “Hello”+" “+” “+” “+“word”;(3个空格)
String[] strs = s.split(” ");
此时strs长度为4,其中有2个空字符串
使用特殊字符作分割符,要加\\
String[] strs = "I.love.you".split("\\.");
String[] strs = "Beijing|Tianjin|Taiyuan".split("\\|");
3.2 其他常用函数
-
trim()——去首尾空格
String s = " I love you ";
s = s.trim(); -
substring(start, end)——返回start到end-1之间的子串
substring(start)——返回从start开始到结尾的子串
-
charAt(index)——返回index处的字符
Char c = s.charAt(3);
-
indexOf——返回指定字符/字符串首次出现的索引
-
public int indexOf(int ch): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回
-1。 -
public int indexOf(int ch, int fromIndex): 返回从 fromIndex
位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。 -
int indexOf(String str): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
-
int indexOf(String str, int fromIndex): 返回从 fromIndex
位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
-
-
boolean equals()——比较两个字符串内容是否相同
s.equals(s1);
-
toCharArray()——转换为字符数组
char[] str = s.toCharArray();
-
static valueOf()——返回参数的字符串表示形式
参数可以为int、double、float、long、char、char[]
int a = 100;
String s = String.valueOf(a); -
public String replaceAll(String regex, String replacement)
成功则返回替换的字符串,失败则返回原始字符串
s.replaceAll(" ", “%20”); -
转换大小写,非字母不受影响
public String toLowerCase()
public String toUpperCase()
eg: s = s.toLowerCase;
3.3 创建
String s = “hello”;
String s = new String(“Hello”);
这两种方法的区别可参考:
https://www.cnblogs.com/ronnieos/p/10065897.html
char[] str = {‘H’,‘e’,‘l’,‘l’,‘o’};
String s = new String(str);
StringBuilder sb = new StringBuilder(“Hello”);
String s = new String(sb);
String s = sb.toString();
3.4 将数字转换为String
int num = 100;
String s = num + “”;
String s = String.valueOf(num);
String s = Integer.toString(num);
4. StringBuilder
-
取指定位置的字符
public char charAt(int index) -
添加功能
-
public StringBuffer append(String
str):可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身 -
public StringBuffer insert(int offset,String
str):在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身
-
-
删除功能
- public StringBuffer deleteCharAt(int index):删除指定位置的字符,并返回本身
- public StringBuffer delete(int start,int
end):删除从指定位置开始指定位置结束的内容,并返回本身
-
替换功能
- public StringBuffer replace(int start,int end,String
str):从start开始到end用str替换 - public void setCharAt(int index, char ch)
- public StringBuffer replace(int start,int end,String
-
反转功能
- public StringBuffer reverse()
StringBuffer res = new StringBuffer("123");
res.reverse();
System.out.println(res);//321
- 截取功能
- public String substring(int start)
- public String substring(int start,int end)
5. 判断字符是否为数字、数字/字母、大写、小写;大小写转换
- Character.isDigit(char c)
- Character.isLowerCase(char c)
- Character.isUpperCase(char c)
- Character.isLetterOrDigit(char c)
- 小写字符的码为对应的大写字符加32
char c1 = 'a';
char c2 = 'A';
c1== (c2+32);//true
Character.toLowerCase(ch);
Character.toUpperCase(ch);
注意:对非字母的字符,返回原来的值