学习Java. 基础 21: String类的详解

1. String类

1.1. 字符串概念

字符串是平常开发中最经常使用的。表明一个字符序列,其底层为字符数组java

1.2. 常见方法

构造方法名称 描述
String(String original) 把字符串数据封装成字符串对象
String(char[] value) 把字符数组的数据封装成字符串对象
String(char[] value,int offset, int count) 把字符数组中的一部分数据封装成字符串对象。offset:从哪一个索引开始。count:拼接几个字符
  • 注意: 字符串是一种比较特殊的引用数据类型,直接输出字符串对象输出的是该对象中的数据。
/**
 * @author 漫路
 */
publicclass Demo01String {
	publicstaticvoid main(String[] args) {
		//方式 1
		//String(String original):把字符串数据封装成字符串对象
		Strings1 = new String("hello");
		System.out.println("s1:"+s1);
		System.out.println("---------");
		//方式 2
		//String(char[] value):把字符数组的数据封装成字符串对象
		char[] chs = {'h','e','l','l','o'};
		String s2 = new String(chs);
		System.out.println("s2:"+s2);
		System.out.println("---------");
		//方式 3
		//String(char[] value, int index, int count):把字符数组中的一部分数据封装成字符串对象
		//String s3 = new String(chs,0,chs.length);
		char[] arr = {'h','e','l','l','o'};
		String s3 = new String(arr,1,3);
		System.out.println("s3:"+s3);
		System.out.println("---------");
		//方式 4
		String s4 = "hello";
		System.out.println("s4:"+s4);
	}
}

1.2.1 普通方法

  • 如下方法, 都不会改变原来字符串
方法名&返回值 描述
int length () 获取长度
String trim () 去除字符串两端空白
boolean startsWith (String prefix) 是否以指定内容开头
boolean endsWith (String suffix) 是否以指定内容结尾
boolean contains (CharSequence s) 判断当前字符串是否包含指定字符串 //CharSequence 是 String 的接口,表示字符序列
boolean equals (String str) 判断当前字符串是否与指定内容相等
boolean equalsIgnoreCase (String str) 判断当前字符串是否与指定内容相等。忽略大小写
boolean isEmpty () 判断当前字符串是否为空。true 表示空
String toUpperCase () 将字母转换成大写,若是是大写则不变
String toLowerCase () 将字母转换成小写,若是是小写则不变
String substring (int start) 截取从 start 索引开始到最后的子字符串
String substring (int start,int end) 截取指定位置的子字符串。start:开始索引(包含)。end:结束索引(不包含)
char[] toCharArray () 字符串变为 字符数组
char charAt (int index) 返回指定索引处的字符
int indexOf (String ch) 返回指定字符串在此字符串中第一次出现处的索引。找到就返回索引,找不到就返回-1
int indexOf (String ch,int xx) 从索引 xx 开始查找, 返回指定字符串在此字符串中第一次出现处的索引,找到就返回索引,找不到就返回-1
String replace (char oldChar,char newChar) 使用 new 替换全部的 old,并返回新字符串
String toString () 返回字符串自己
int compareTo (String str) 比较两个字符串的前后大小顺序。返回:正数、0、负数。
String[] split (String x) 以指定字符串 X 为参照,切割字符串,返回字符串数组。

1.3 扩展练习

下面的需求所对应的方法,你们本身动手在 API 中查找(就在上面),并进行方法使用。数组

  • 判断该字符串的内容是否为空的字符串
  • 获取 指定字符串,在当前字符串中第一次出现的位置
  • 获取该字符串中指定位置上的字符
  • 把该字符串转换成 小写字符串
  • 把该字符串转换成 大写字符串
  • 在该字符串中,将给定的旧字符,用新字符替换
  • 在该字符串中,将给定的旧字符串,用新字符串替换
  • 去除字符串两端空格,中间的不会去除,返回一个新字符串

1.4 字符串的特殊性

字符串是特殊的引用类型,由于真正的字符串数据在常量池中。设计

常量池中的每个字符串都是常量,一旦生成,不可改变。code

  • 示例1:
String str1 = "hello";
String str2 = "hello";

//值为true
//说明str1和str2中保存的常量池地址是同一个
System.out.println(str1==str2);

  • 示例2:
String str1 = new String("hello");
String str2 = "hello";

//值为false
//说明str1和str2中保存的常量池地址是不一样的
System.out.println(str1==str2);

  • 示例3:
String str1 = "hello";
String str2 = "hello Java";

//值为false
//说明str1和str2中保存的常量池地址是不一样的
System.out.println(str1==str2);

  • 注意:
字符串的特殊保存方式,是为了提升运行速度,节约内存空间而设计;
因此咱们不用 = = 进行字符串的比较,由于比较的仅是地址,无心义,
咱们使用 equals 方法比较两个字符串值
相关文章
相关标签/搜索