【程序员笔试】+Java+字符串

  1. 字符串比较与创建对象
  2. 字符数组与字符串互转
  3. subString
  4. 正则表达式
    ---- 1

//s.equals(s1) 只比较内容没啥说的
String a = "abc";
String b = "abc";
// a==b 为true,"abc"位于常量池中
String c=new String("abc");
//创建了两次对象,第一次在编译期,第二次在运行期
// b==c 为false,因为地址不同。c位于内存的对中
c=c.intern();
//b==c 为 true,因为c指向了"abc"
String d="a"+"b";
//创建了一次对象,在编译器
String e ="ab";
e+="c";
//创建了两次对象
StringBuffer f=new StringBuffer("ab").append("c");
//创建一次对象 
//因为String为不可变类型,+=每次都会创建对象,所以效率不高。

字符串这种特殊的内存机制是为了更快的比较,带来的代价是修改时产生新的对象,所以有StringBuffer。
StringBuilder和StringBuffer效果相同,

---- 2


char [] c;
String s;
c=s.toCharArray();
//字符串转字符数组
s=new String(c);
//字符数组转字符串

---- 3


//abcde
//012345
subString(0,5);//本身
subString(0,length);//本身
subString(0,3);//abc

---- 4
很详细的Java正则介绍
https://segmentfault.com/a/1190000009162306

表达式的基本语法:

  • [abc]:可选字符组,[^]:补集

  • \d:数字和非数字[0-9] \D [^0-9]

  • \s:空白符 \S

  • \w:字母数字下划线

  • ^:开始,$:结尾,\b:单词边缘

  • ?0或1次;+:1次;*任意次,{n}:n次,{m,n}:,{n,}

  • ():分组;\n:有分组的时候表示第几个分组。

Pattern 类和Matcher类

Pattern pattern = Pattern.compile("\\w+")
Matcher matcher = pattern.matcher(text);

matcher.matches();//整个序列进行匹配
matcher.find();//从开始查找匹配的子序列
matcher.group(1);//获得分组
matcher.replaceFirst(String replacment);//替换
matcher.replaceAll(String replacement);//

String类中的应用

boolean matchs(String regex)//完全匹配
String replaceAll(String regex,String replacement)
String replaceFirst(String regex,String replacement)
String[] split(String regex);

你可能感兴趣的:(【程序员笔试】+Java+字符串)