目录
一、概述
1、包路径
java.lang.String
2、简介
String 类代表字符串;
Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现;
3、字符串的特点
字符串是常量,内容不可改变——所看到的“改变 ”只是改变了指向;
字符串可以共享——若两个字符串内容完全相同,则是两个变量指向了同一个内容,通过new关键字创建的字符串除外;
字符串相当于char[]字符数组,但底层原理是byte[]字节数组;
二、使用方法
1、创建字符串的4种方法
构造方法创建:
public String();//通过双引号引起内容创建
public String(char[] array);;//通过字符数组创建
public String(byte[] array);;//通过字节数组创建
直接创建:
String str = "字符串内容";(重要备注:仅且仅用此方式创建,字符串存放在字符串常量池中,字符串常量池是在堆中的)
使用:
String str1 = "abc";
String str2 = new String("abc");
char[] chars = {'a','b','c'};
String str3 = new String(chars);
byte[] bytes = {97,98,99};
String str4 = new String(bytes);
System.out.println(str1);//abc
System.out.println(str2);//abc
System.out.println(str3);//abc
System.out.println(str4);//abc
比较:
String str1 = "abc";
String str2 = new String("abc");
char[] chars = {'a','b','c'};
String str3 = new String(chars);
byte[] bytes = {97,98,99};
String str4 = new String(bytes);
System.out.println(str1);//abc
System.out.println(str2);//abc
System.out.println(str3);//abc
System.out.println(str4);//abc
System.out.println(str1==str2);//false
System.out.println(str1==str3);//false
System.out.println(str1==str4);//false
System.out.println(str2==str3);//false
System.out.println(str2==str4);//false
System.out.println(str3==str4);//false
//但是注意了
String str5 = "abc";
System.out.println(str1==str5);//true
//因为直接创建的内容相同的字符串在字符串常量池中共享,所以地址是相同的
内存图:
2、获取相关的常用方法
获取字符串长度:
System.out.println("abc".length());//3
拼接字符串并返回拼接后的字符串:
System.out.println("hello".concat(" world"));//hello world
获取指定位置的单个字符:
System.out.println("hello".charAt(2));//l
查找子字符串首次出现的索引位置,没有则返回-1:
System.out.println("hello".indexOf("he"));//0
3、截取相关的常用方法
截取从参数位置一直到字符串就结尾的字符串:
System.out.println("abcdefg".substring(2));//cdefg
截取从一个位置到另一个位置的字符串:
System.out.println("abcdefg".substring(2,5));//cde
4、转换相关的常用方法
转换为字符串数组:
String string = "abc";
char[] chars = string.toCharArray();
for (char c : chars) {
System.out.println(c);//a b c
}
转换为字节数组:
byte[] bytes = string.getBytes();
for (byte b : bytes) {
System.out.println(b);//97 98 99
}
用新的子字符串替换旧的子字符串:
System.out.println(string.replace("a","z"));//zbc
5、字符串分割方法
方法:
String[] split(String regex)//这个字符串实际上是正则表达式,不是简单的字符串
作用:
将字符串按照一定的规则分割成若干字符串,返回字符串数组
使用:
String string = "a,b,c";
String[] strings = string.split(",");
for (String s : strings) {
System.out.println(s);//a b c
}