String类及常用方法

String类:

1. String类又称作不可变字符序列.
2. String位于java.lang包中,Java程序默认导入java.lang包下的所有类.
3. Java字符串就是Unicode字符序列,例如字符串“Java”就是4个Unicode字符’J’、’a’、’v’、’a’组成的.
4. Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义的类String,每个用双引号括起来的
    字符串都是String类的一个实例.

当"+"运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接.

String类和常量池:

1. 全局字符串常量池(String Pool):

  全局字符串常量池中存放的内容是在类加载完成后存到String Pool中的,在每个VM中只有一份,
  存放的是字符串常量的引用值(在堆中生成字符串对象实例).

2. class文件常量池(Class Constant Pool):

  class常量池是在编译的时候每个class都有的,在编译阶段,存放的是常量(文本字符串、final常量等)
  和符号引用.

3. 运行时常量池(Runtime Constant Pool):

  运行时常量池是在类加载完成之后,将每个class常量池中的符号引用值转存到运行时常量池中,也就是说,
  每个class都有一个运行时常量池,类在解析之后,将符号引用替换成直接引用,与全局常量池中的引用值保持一致.

字符串相等的判断:

1. equals方法用来检测两个字符串内容是否相等.如果字符串s和t内容相等,则s.equals(t)返回true,
   否则返回false.
2. 要测试两个字符串除了大小写区别外是否是相等的,需要使用equalsIgnoreCase方法.
3. 判断字符串是否相等不要使用"==".

忽略大小写的字符串比较:
    "Hello".equalsIgnoreCase("hellO");  // true


例子:
    public static void main(String[] args) {
	String str1 = "abc"; // 存储到全局常量池中
	String str2 = "abc"; // 存储到全局常量池中
	String str3 = "abc" + "def"; // 字符串连接,返回新字符串
	String str4 = new String("abc"); // 新创建一个实例对象
	System.out.println(str3);
	System.out.println(str1 == str2); // true
	System.out.println(str4 == str1); // flase
	System.out.println(str1.equals(str4)); // true,equals比较的是字符串的内容是否一致
}

String类常用的方法:

public class TestStringFunc {
	
	public static void main(String[] args) {
		String s1 = "HELLO world";
		String s2 = "hello world";
		System.out.println(s1.charAt(3)); // 返回索引为3的字符
		
		System.out.println(s2.length()); // 字符串的长度
		
		System.out.println(s1.equals(s2)); // 比较两个字符串是否相等
		System.out.println(s1.equalsIgnoreCase(s2)); // 比较两个字符串(忽略大小写)
		
		System.out.println(s1.indexOf("wor")); // 返回字符串在s1中第一次出现的索引
		System.out.println(s1.indexOf("apple"));  // 如果字符串不在s1中则返回-1
		
		System.out.println(s1.lastIndexOf("l")); // 返回字符串在s1中最后一次出现的索引(即从后往前查第一个)
		
		String s = s2.replace(' ', '*'); // 将字符串s2中的空格用*取代,并返回一个新字符串
		System.out.println(s);
		
		String s3 = "";
		String s4 = "Who are you";
		System.out.println(s4.startsWith("Who")); // 是否以Who开头
		System.out.println(s4.endsWith("you")); // 是否以you结尾
		
		s3 = s4.substring(4); // 截取字符串,从索引为4的位置开始截取到结尾
		System.out.println(s3);
		s3 = s4.substring(4, 7); // 截取字符串[4,7) 不包括7
		System.out.println(s3);
		
		s3 = s4.toLowerCase(); // 字符串转为小写
		System.out.println(s3);
		s3 = s4.toUpperCase(); // 字符串转大写
		System.out.println(s3);
		
		String s5 = "    How are you   ";
		s3 = s5.trim(); // 去除字符串前后的空格
		System.out.println(s3);
	}
}

猜你喜欢

转载自blog.csdn.net/qq_46456049/article/details/108689612