位运算、String

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 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);
注意:对非字母的字符,返回原来的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值