三、String
1. 简介
java.lang.String 字符串就是一个字符序列,由多个字符组成,是Java中最常用的类型
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence
创建字符串的方式:
- 直接创建
- 使用构造方法创建
/*
* 1.直接创建
* 该方式本身来说是不符合引用类型的特点,不符合面向对象的规范
* 原则上来说,所有引用类型都应该通过new关键来创建对象,只有基本数据类型才能直接赋值
* String是一种特殊的引用类型,由于特别常用,所以JVM对其做了优化
*/
String s1 = "hello";
char c = 'h'; // 单个字符
String s2="h"; //只包含一个字符的字符串
String s3=""; //空字符串
/*
* 2.使用构造方法创建
*/
String s4=new String(); //空字符串
String s5=new String("world");
//空字符串和null的区别
String s6=""; //在堆内存中分配了内存,但为空字符串
String s7=null; //在堆内存中没有分配 空间
//String可以和其他任意类型进行+的操作,实现字符串拼接
System.out.println(s1+12+8);
System.out.println(s1+true);
System.out.println(s1+'x');
2. 常用方法
方法名 | 作用 |
---|---|
length | 获取字符串长度 |
indexOf | 获取指定子串第一次出现的位置,如果找不到则返回-1 |
lastIndexOf | 获取指定子串最后一次出现的位置 |
substring | 获取指定索引范围内的子串,即截取字符串,范围[beginIndex,endIndex),左闭右开 |
charAt | 获取指定索引位置的字符 |
concat | 字符串拼接,很少使用,一般都直接使用+进行拼接 |
startsWith | 判断是否以指定子串开头 |
endsWith | 判断是否以指定子串结尾 |
contains | 判断是否包含指定子串 |
isEmpty | 判断是否为空字符串 |
equals | 判断值是否相等 |
equalsIgnoreCase | 判断是否相等,忽略大小写 |
toUpperCase | 转换为大写 |
toLowerCase | 转换为小写 |
replace | 替换 |
trim | 去掉字符串首尾的空格 |
split | 将字符串分割为数组 |
toCharArray | 将字符串转换为字符数组 |
getBytes | 将字符串转换为字节数组 |
join | 将多个元素以指定分隔符拼接为字符串,jdk8中新增方法,静态方法String.join() |
String str = "aEllo woRld";
// length()
System.out.println("字符串长度:" + str.length());
// indexOf()
System.out.println("字符o第一次出现的位置:" + str.indexOf('o')); // 索引从0开始,如果找不到则返回-1
System.out.println("字符串wo第一次出现的位置:" + str.indexOf("wo"));
System.out.println("从索引为6的位置开始后向查找字符o第一次出现的位置:" + str.indexOf('o', 6));
// lastIndexOf()
System.out.println("字符o最后一次出现的位置:" + str.lastIndexOf('o'));
// substring()
System.out.println("获取索引为[3,7)之间的子串:" + str.substring(3, 7)); // 左闭右开
System.out.println("获取索引为3到结尾的子串:" + str.substring(3));
// charAt()
System.out.println("获取索引为1的字符:" + str.charAt(1));
// concat()
System.out.println("在字符串后拼接abc" + str.concat("abc"));
// startsWith()
System.out.println("是否以he开头:" + str.startsWith("he"));
// endsWith()
System.out.println("是否以abc结尾:" + str.endsWith("abc"));
// contains()
System.out.println("是否包含el:" + str.contains("el"));
// isEmpty()
System.out.println("是否为空字符串:" + str.isEmpty()); // 本质上就是判断str.length==0
System.out.println("是否为null:" + str == null);
// equals()
String str2 = new String("hello World");
System.out.println("地址是否相同:" + str == str2);
System.out.println("内容是否相同:" + str.equals(str2));
// equalsIgnoreCase
System.out.println("忽略大小的话,内容是否相同:" + str.equalsIgnoreCase(str2));
// toUpperCase()
System.out.println("转换为大写:" + str.toUpperCase());
// toLowerCase()
System.out.println("转换为小写:" + str.toLowerCase());
// replace()
System.out.println("将字符o替换为x:" + str.replace('o', 'x')); // 返回一个新字符串
System.out.println(str); // 原字符串没有变化
// trim()
System.out.println("去除两边的空格:"+str.trim());
// split()
String[] arr1 = str.split(" ");
System.out.println("以空格进行分割:"+Arrays.toString(arr1));
System.out.println("以o进行分割:"+Arrays.toString(str.split("o")));
//toCharArray()
System.out.println("-----将字符串转换为字符数组--------");
char[] chars = str.toCharArray();
System.out.println(Arrays.toString(chars));
System.out.println("-----将字符数组转换为字符串--------");
String str3 = new String(chars);
System.out.println(str3);
// getBytes()
System.out.println("-----将字符串转换为字节数组--------");
byte[] bytes = str.getBytes();
System.out.println(Arrays.toString(bytes));
System.out.println("-----将字节数组转换为字符串--------");
String str4 = new String(bytes);
System.out.println(str4);