字符串是程序类最常用的变量,字符串使用String作为类型描述
public static void main(String[] args) { String zfc = "我是一个中文字符串"; System.out.println(zfc); }
其实字符串的核心是一个基本类型里的char[]数字,我们通过点击String查看源码可以发现。
所以我们也可以获得字符串长度
public static void main(String[] args) { String zfc = "我是一个中文字符串"; System.out.println(zfc); System.out.println(zfc.length()); }
通过上面的源代码我们发现字符串的核心就是char数组,所以我们就可以对字符串做很多操作,我们先拿常用的举例子:
public static void main(String[] args) { String zfc = "abcdefg"; //判断是否以某字符串开头 if(zfc.startsWith("abc")){ System.out.println("zfc以abc开头"); } //判断是否以某字符串开头 if(zfc.startsWith("cde",2)){ System.out.println("zfc偏移2个字符以cde开头"); } //判断是否以某字符串结尾 if(zfc.endsWith("efg")){ System.out.println("zfc以efg结尾"); } //判断字符串是否是指定字符串,建议使用Strings工具栏里的方法 if("abcdefg".equals(zfc)){ System.out.println("zfc是abcdefg"); } //获得字符串的二进制数组 System.out.println(zfc.getBytes()); //判断字符串是否包含子字符串 if(zfc.contains("abc")){ System.out.println("zfc里面包含子字符串abc"); } //判断是否包含序列里的字符串 StringBuilder sb = new StringBuilder("abc"); if(zfc.contentEquals(sb)){ System.out.println("zfc里包含sb里面的子字符串"); } //通过正则表达式匹配字符 if (zfc.matches("abc.*")){ System.out.println("正则匹配到了abc"); } //分割字符串 String[] array = zfc.split(""); List list = Arrays.asList(array); list.stream().forEach(e->{ System.out.println("数组元素"+e); }); //字符串连接,也可以使用+号表示 System.out.println(zfc.concat("hijklmn")); //查看子字符串子在字符串首次出现的位置,如果未找到返回-1 System.out.println(zfc.indexOf("c")); //字符串替换 System.out.println(zfc.replace("abc","xyz")); //截取字符串 System.out.println(zfc.substring(2)); }
字符串连接
由于字符串是char数组形式,所以我们不建议使用concat和"+"这种形式,使用StringBuffer和StringBuilder是一个比较好的方式
public static void main(String[] args) { String zfc = "abc"; //StringBuffer是线程安全的,StringBuilder是线程不安全的 //StringBuilder由于不加锁理论上速度要比StringBuffer快 StringBuilder sb1 = new StringBuilder(zfc); sb1.append("def"); System.out.println(sb1.toString()); StringBuffer sb2 = new StringBuffer(); sb2.append(zfc); sb2.append("def"); System.out.println(sb2.toString()); }
字符串格式化
public static void main(String[] args) { //%d是整数 //%f是浮点数 //%s是字符串 //%n是换行 //%05d 0代表用0补全,5代表是使用5个占位符 String zfc = String.format("整数格式化:%d,浮点数格式化:%f,使用占位符的浮点数格式化:%05d,字符串格式化:%s",1,1.2,3,"hello world"); System.out.println(zfc); //System.out.printf 主要用户控制台输出 System.out.printf("整数格式化:%d,浮点数格式化:%f,使用占位符的浮点数格式化:%05d,字符串格式化:%s%n",1,1.2,3,"hello world"); }